본문 바로가기
반응형
Data/NoSQL

NoSQL의 특징 #1

by JAMINS 2016. 6. 6.

데이터베이스를 조금이라도 사용하셨던 분들이라면 한번 쯤 들어보셨을 겁니다. 저 또한 스타트업을 하면서 들어본적이 있는데, 당시에는 '아 뭔가 SQL을 사용하지 않는 개념이겠구나, 내가 사용하고 있는 MySQL의 형태와는 다르겠구나' 하는 정도로 막연히 생각만 했었습니다. 최근에 개발하면서 다시 관심을 가지게 되었고, T아카데미의 MongoDB의 교육을 들을 수 있었습니다. NoSQL의 대표적인 데이터베이스인 MongoDB를 통해서 NoSQL의 특징부터 하나씩 정리해볼까 합니다. 그 다음으로 MongoDB의 전반적인 부분, 설치, 구동, 복원, 회복 기술, 간단한 실습 등으로 구성할 예정입니다.

NoSQL의 등장배경

시대가 흐르면서 데이터의 패러다임의 변화도 서서히 변화되고 있습니다. 한정된 규모의 복잡성을 가진 데이터가 주를 이루었다면 점점 데이터의 형태가 단순해지고 대량의 규모로 넘어가고 있습니다. 이러한 데이터의 홍수 속에서 기존의 RDBMS 방식으로는 한계를 느낄 수 밖에 없습니다. 결국, 새로운 형태의 데이터 저장 기술을 필요로 하게 되었는데 이때 등장한 것이 NoSQL의 개념입니다.

NoSQL = Not Only SQL

기존의 RDBMS 형태의 관계형 데이터베이스는 말 그대로 데이터의 관계가 긴밀이 연결되어 있는 형태입니다. 단어만 봐도 알 수 있듯이 SQL을 활용하는 형태가 아닌 다른 방식의 저장 기술을 의미합니다.

NoSQL 특징

  1. RDBMS 형태와는 다른 데이터 저장 방식, 구조를 가집니다.
  2. 같은 NoSQL이라도 각각 특성이 다름, 하나의 제품군으로 정의할 수는 없지만 대표적으로 MongoDB, Cassandra, Redis 등이 있습니다.
  3. Foreign Key 등으로 데이터의 관계가 정의되어 있는 RDBMS 방식과는 다르게 NoSQL은 데이터 간의 관계를 정의하지 않습니다. (Join 연산 X)
  4. PB급의 대용량 데이터를 저장할 수 있습니다.
  5. RDBMS처럼 1대에 데이터를 저장하는 것이 아닌, 일반적인 서버들을 연결해 데이터를 저장, 처리하는 구조로 되어 있습니다.
  6. 데이터를 여러 서버에 분산 저장이 가능하고 복제와 회복이 가능한 형태입니다. 장애가 발생하더라도 대응이 유리합니다.
  7. RDBMS와는 다르게 테이블 스키마가 유동적입니다. 한 번 정의하면 그 틀에 맞게 데이터를 집어넣어야 하고 스키마 변경이 어려운 반면에 NoSQL은 다양한 형태의 데이터들을 유연하게 처리할 수 있습니다.
  8. 분산형 구조이기 때문에 분산시스템의 특징을 반영합니다. 따라서 CAP이론을 따릅니다.

CAP이론

분산컴퓨팅 환경에서는 Consistency(일관성), Availability(가용성), Partition Tolerance(부분결함 용인) 의 3가지 특징을 가지고 있는데, 이 중 2가지만 만족할 수 있다는 이론을 말합니다. NoSQL의 방식은 분산형 구조를 가지기 때문에 CAP 중 2가지만 만족할 수 밖에 없습니다.

CAP 각 특징을 더 자세하게 알아봅시다.

  • Consistency : 일관성을 뜻합니다. 모든 클라이언트들은 항상 같은 데이터를 볼 수 있어야 합니다. 한 데이터를 동시에 두 클라이언트가 바라봤을 때 그 데이터가 항상 같아야만 만족합니다
  • Availability : 가용성을 뜻합니다. 각 클라이언트는 항상 데이터를 읽고 쓸 수 있어야만 합니다. 어떤 상황이던 간에 (장애가 발생해도) 정상적으로 데이터를 읽고 쓸 수 있어야 만족합니다.
  • Partition Tolerance : 파티션 허용, 분산화 가능을 뜻합니다. 물리적인 네트워크 분산 환경에서도 시스템이 잘 작동해야 만족합니다.

기존의 RDBMS는 이 3가지 특징 중 CA 2가지를 만족합니다. 분산화 특성 보다는 데이터의 일관성과 가용성에 중점을 둔 형태라고 볼 수 있습니다. 즉, 시스템의 신뢰성이 높다는 특징을 가집니다. 분산 구조로 가져가는 것이 가능하지만 Replication의 경우 퍼포먼스를 고려해야 하며, Sharding의 경우 데이터의 관계가 무너질 수 있는 부담감이 있습니다. 이러한 경우 신뢰성이 깨지는 리스크가 발생할 수 있습니다. 애초에 분산적인 처리보다는 신뢰성에 중점을 두고 만들어진 방식이기 때문에 발생하는 부분입니다.

NoSQL은 AP 또는 CP의 특징을 만족합니다. 데이터의 신뢰성보다는 분산에 중점을 둔 방식이라 약간의 데이터의 유실, 변형 등이 발생할 수 있습니다. 하지만 빠르게 확장을 하여 대규모 데이터를 저장하고 핸들링 할 수 있는 구조를 갖출 수 있도록 합니다. 기존의 RDBMS 형태에는 없는 특징을 가져가는 대신 C나 A 하나를 포기할 수 밖에 없습니다.

참고

'Data > NoSQL' 카테고리의 다른 글

[MongoDB] $text 검색 시 'No query solutions' 오류  (0) 2023.10.27
NoSQL 데이터 모델링 기법  (0) 2016.06.14
NoSQL 데이터 모델링 개념  (1) 2016.06.10
NoSQL의 특징 #2  (2) 2016.06.07

댓글