Nosql이란

Published: by Creative Commons Licence

NoSQL

NoSQL이란?

  • NoSQL이 무엇의 약자인지는 사람에 따라 NoSQL, Not Only SQL, Non-Relational Operational Database SQL로 의견이 갈리고 있지만 Not Only SQL로 풀어 설명하는 것이 다수를 차지하고 있다.
  • 이 이야기는 기존의 관계형 DBMS가 갖고 있는 특성 뿐만 아니라 다른 특성들을 부가적으로 지원한다는 의미이다.

2009년 요한 오스칼손이라는 엔지니어가 Open Source 기반의 분산데이터베이스 관련 행사를 준비하면서 NoSQL이라는 용어를 사용했다. 이때부터 기존의 관계형 데이터베이스 시스템의 주요 특성을 보장하는 ACID(Atomic, Consistency, Intergrity, Duarabity) 특성을 제공하지 않는, 그렇지만 뛰어난 확장성이나 성능 등의 특성을 갖는 수많은 비관계형, 분산 데이터베이스들이 등장했고, 이때부터 NoSQL이라는 용어가 보편적으로 사용되었다.

초기에는 SQL이라고 하는 데이터를 처리해주는 언어의 편의성 때문에 NoSQL은 많이 활용되지 않았지만 소셜 네트워크 서비스의 등장으로 관계형 데이터 또는 정형화된 데이터가 아닌 데이터, 즉 비정형 데이터를 보다 쉽게 담아서 저장하고 처리할 수 있는 구조를 가진 DB가 관심을 가지게 되며, 해당 기술이 NOSQL 데이터베이스가 각광받게 되었다.

NOSQL의 특징

  • NoSQL 데이터베이스는 기존의 관계형 데이터베이스보다 더 융통성있는 데이터 모델을 사용하고 데이터의 저장 및 검색을 위한 특화된 매커니즘을 제공한다. 이를 통해 NoSQL 데이터베이스는 단순 검색 및 추가 작업에 있어서 매우 최적화된 키 값 저장 기법을 사용하여 응답속도나 처리 효율에 있어서 매우 뛰어난 성능을 나타냅니다.
  1. 관계형 모델을 사용하지 않으며 테이블 간 연결해서 조회할 수 있는 조인 기능이 없음.
  2. 데이터 조회를 위해 직접 프로그래밍하는 등의 비 SQL 인터페이스를 통한 데이터 접근
  3. 대부분 여러 데이터베이스 서버를 묶어서 하나이 데이터베이스를 구성
  4. 관계형 데이터베이스에서는 지원하는 데이터 처리 완결성(ACID)이 보장되지 않음.
  5. 데이터의 스키마와 속성들을 다양하게 수용하고 동적으로 정의
  6. 데이터베이스의 중단없는 서비스와 자동 복구 기능 지원
  7. 대다수의 제품이 Open Source로 제공
  8. 대다수의 제품이 고 확장성, 고가용성, 고성능, 유연성 특징을 가짐.
  • 유연성 : NoSQL 데이터베이스는 일반적으로 유연한 스키마를 제공하여 보다 빠르고 반복적인 개발을 가능하게 해준다. 유연한 데이터 모델은 NoSQL데이터베이스를 반정형 및 비정형 데이터에 이상적으로 만들어 준다.
  • 확장성 : NoSQL 데이터베이스는 일반적으로 고가의 강력한 서버를 추가하는 대신 분산형 하드웨어 클러스터를 이용해 확장하도록 설계되었습니다. 일부 클라우드 제공자들은 완전관리형 서비스로서 이런 운영 작업을 보이지 않게 처리합니다.
  • 고성능 : NoSQL 데이터베이스는 특정 데이터 모델(문서, 키 값, 그래프 등) 및 액세스 패턴에 대해 최적화되어 관계형 데이터베이스를 통해 유사한 기능을 충족하려 할 때보다 뛰어난 성능을 얻게 해 줍니다.
  • 고기능성 : NoSQL 데이터베이스는 각 데이터 모델에 맞추어 특별히 구축된 뛰어난 기능의 API와 데이터 유형을 제공합니다.

DB의 종류

  1. RDBMS(관계형 데이터베이스 관리 시스템 - 오라클, MySQL, MS Server)
    • 관계형 데이터베이스는 데이터 집합을 관계로 저장한다. 관계형 데이터베이스 관리 시스템에 있는 데이터는 SQL을 사용해 관리된다.
    • 고도로 정형화된 데이터 처리에 뛰어나며 ACID 트랜잭션을 지원한다.
    • 계층화된 접근이 필요한 응용프로그램에 매우 적합하다.
    • 정형 데이터에 뛰어난 만큼, 비정형 데이터 처리에는 한계를 보인다.
    • 고정된 스키마 역시 변화에 유연하게 대응하기 힘들다.
  2. Key-Value DB(Redis, 멤캐시드)
    • Key-Value의 쌍으로 데이터가 저장되는 가장 단순한 형태의 솔루션.
    • 분할성이 커 다른 유형의 데이터베이스로는 불가능한 범위까지 수평 확장을 가능하게 한다.
    • 값은 blob으로 저장되지만 거의 모든 형태가 가능하다.
    • 유연성이 뛰어나고 광범위한 유형의 데이터를 처리할 수 있다.
    • 키는 인덱스 검색이나 조인 없이 값으로 곧장 가는데 사용하기 때문에 성능이 빠르다.
    • 수평 확장성이 뛰어나며 전체적인 운영 비용이 낮다.
    • 값에 대한 질의는 불가능하다.
  3. Wide Columnar DB(카산드라 HBase)
    • Big Table DB라고도 하며, Google의 BigTable paper에서 유래되었다. Key Value에서 발전된 형태의 Column Family 데이터 모델을 사용하고 있고, HBase, Cassandra, ScyllaDB등이 이에 해당합니다.
    • 동적인 칼럼 지향 비관계형 데이터베이스이다.
    • 관계형 데이터베이스와 비관계형 데이터베이스 장점을 모두 갖고 있다.
      • 정형 데이터 및 반정형 데이터 처리에 능하고 업데이트도 하기 쉽다.
      • 관계형 데이터베이스보다 수평 확장성이 더 크고 속도가 더 빠르다.
    • 대규모 데이터 집합을 간단하게 탐색 가능.
    • 한꺼번에 업데이트를 하는 것은 쉽지만 개별 기록을 업로드하고 업데이트 하기는 어렵다.
  4. Document DB
    • JSon, BSon, XML 문서에 저장하는 비관계형 데이터비이스이다.
    • 유연한 스키마가 특징이다.
    • 반전형 데이터와 비정형 데이터를 잘 처리한다. 어떤 유형의 데이터가 들어올지 미리 확실히 알 수 없는 경우 적합하다.
    • 유연하면서도 수평 확장 용이하다.
    • 문서의 유연성을 위하여 ACID 준수를 희생하며, 질의가 한 문서 내에서만 가능하며 여러 문서에 걸친 질의는 불가능하다.
  5. Graph DB
    • Euler & Graph Therory에서 유래한 DB입니다. Nodes, Relationship, Key-Value 데이터 모델을 채용하고 있습니다. Neo4J, OrientDB등의 제품이 있습니다.

출처

https://www.samsungsds.com/global/ko/support/insights/1195843_2284.html : NoSQL 특징 참고

http://www.ciokorea.com/news/38041 : DB 종류 참고