본문 바로가기
과학, IT 정보

NoSQL은 왜 등장했을까?

by 넘버원리뷰 2024. 3. 27.

2000년대 초반 이후 세계적인 규모의 응용 프로그램들에 의한 데이터의 급격한 폭발이 일어났습니다. 이는 웹 기술의 발전, 소셜 네트워킹 플랫폼의 등장, 모바일 장치의 광범위한 보급, 그리고 사물 인터넷(IoT) 장치의 확산에 따른 혁신적인 현상입니다. 이러한 데이터 생성의 급증으로 인해 데이터베이스 시스템에는 새로운 요구 사항과 도전 과제가 등장했습니다.

 

1. 데이터베이스 시스템에 요구된 새로운 과제들

  • 구조화된, 반구조화된, 비구조화된 데이터
    기존의 관계형 데이터베이스 시스템은 사전 정의된 스키마를 가진 구조화된 데이터를 처리하는 데 주로 사용되었습니다. 그러나 현대 응용 프로그램에서 생성되는 데이터는 종종 구조화된, 반구조화된 및 비구조화된 데이터 형식의 혼합물을 포함합니다. 이러한 다양성을 수용하기 위해 데이터베이스 시스템은  유연한 데이터 모델을 지원해야 합니다.
  • 확장성
    데이터의 양이 급격히 증가함에 따라 데이터베이스 시스템은 수평적으로 확장하여 증가하는 워크로드를 처리할 수 있어야 합니다. 수평적 확장은 데이터와 처리를 클러스터 내의 여러 노드에 분산시켜 시스템이 성능을 희생하지 않고 증가하는 요구 사항을 수용할 수 있게 합니다.
  • 고가용성 및 장애 허용성
    현대 응용 프로그램에서 데이터의 중요성이 증가함에 따라 고가용성 및 장애 허용성을 보장하는 것이 중요해졌습니다. 데이터베이스 시스템은 하드웨어 장애, 네트워크 문제 및 기타 잠재적인 중단으로부터 연속적인 운영을 유지하기 위해 강건해야 합니다. 복제, 분산 합의 알고리즘 및 자동 장애 조치 메커니즘과 같은 기술은 고가용성 및 장애 허용성을 달성하기 위해 사용됩니다.

2. 기존의 RDBMS에 대한 불만

  • 매우 어려운 신규 요구 사항 처리
    • 매우 구조화된 관계형 스키마는 데이터 변환 및 이주에 많은 비용이 발생합니다.
    • 독립형 서버에서 RDBMS의 확장은 비용이 많이 듭니다.
    • RDBMS의 확장성 문제를 해결하기 위한 Scale-out 솔루션은 분산 데이터베이스 작업의 복잡성과 오버헤드를 증가시킵니다(예: 분산 ACID).
  • 상호 배타적인 요구 사항에 직면
    • 이러한 요구 사항은 트레이드오프를 통해 처리될 수 있으며, 응용 프로그램에 필요하지 않은 것을 희생함으로써 해결될 수 있습니다.
    • 이것을 해결하기 위한 새로운 발전 중인 트렌드로 NoSQL이라는 비관계형 데이터 저장소가 있습니다.

3. NoSQL의 등장

NoSQL 데이터 저장소에서 공통적으로 나타나는 설계 특성

  • 스키마가 없거나 유연한 데이터 모델; 데이터는 응용 프로그램 수준에서 해석되어야 합니다.
  • 관련된 데이터 항목을 함께 뭉쳐 놓는 집계 지향 모델입니다.
  • ACID 속성을 완화하여 고가용성과 낮은 지연 시간을 달성하기 위해 강한 일관성 모델을 사용합니다.
  • 클러스터 및 데이터 센터 친화적이며, 웹에 친화적입니다.

공식적으로 정의된 적이 없는 NoSQL

  • 2009년 6월 샌프란시스코에서 Johan Oskarsson이 주최한 소프트웨어 개발자 회의에서 처음 사용되었습니다.
  • NoSQL은 기술보다는 하나의 움직임으로 생각할 수 있습니다.

다양한 NoSQL 데이터 모델들

  • 키-값 스토어(Key-Value Stores)
    • 가장 간단한 형태로 (키, 값) 쌍으로 표현됩니다. DHT(Distributed Hash Table), LSM-Tree(Log-Structured Merge-Tree) 등의 기술이 사용될 수 있습니다.
    • Memcached, Riak KV, Oracle NoSQL, Redis 등이 있습니다.
  • 열 패밀리 스토어(Column-Family Stores)
    • 표 형태로 구성되며 임의의 열 수를 가진 열 패밀리입니다.
    • Google Bigtable, HBase, Cassandra 등이 있으며 모두 LSM-Tree를 채택하고 있습니다.
  • 문서 스토어(Document Stores)
    • 확장된 키-값 스토어로, 문서가 XML 또는 JSON으로 인코딩됩니다.
    • MongoDB, Couchbase 등이 있습니다.
  • 그래프 스토어(Graph Stores)
    • 웹 마이닝, RDF 그래프와 같은 효율적인 개체-관계 탐색을 위한 스토어입니다.
    • Neo4j, Facebook Tao, MS Trinity, ArangoDB 및 OrientDB(문서/그래프 하이브리드) 등이 있습니다.

결론

NoSQL은 관계형 데이터베이스 관리 시스템(RDBMS)과는 다른 형태의 데이터 저장 및 관리 시스템을 지칭하는 용어입니다. NoSQL은 "Not Only SQL"의 약자로, 관계형 데이터베이스의 제한적인 모델을 벗어나서 다양한 유형의 데이터를 저장하고 쿼리하기 위해 설계되었습니다. 이러한 NoSQL 데이터베이스는 대량의 분산 데이터를 처리하고 확장 가능한 성능을 제공하는 데 주로 사용됩니다. 이러한 시스템은 고정된 스키마 대신 동적인 스키마를 사용하거나 스키마가 전혀 없는 경우가 많습니다. 따라서 다양한 데이터 유형 및 구조를 유연하게 처리할 수 있습니다.