NoSQL이란 무엇입니까?
공식 Wiki 정의:“NoSQL (원래 "비 SQL" 또는 "비 관계형" 참조) 데이터베이스는 관계형 데이터베이스(RDBMS)에서 사용되는 표 형식 관계 이외의 수단으로 모델링된 데이터의 저장 및 검색을 위한 메커니즘을 제공합니다. 여기에는 사용자, 개체 및 제품에 대해 저장된 데이터의 양, 이 데이터에 액세스하는 빈도, 성능 및 처리 요구 사항의 증가에 대응하여 개발된 다양한 다양한 데이터베이스 기술이 포함됩니다. 일반적으로 NoSQL 데이터베이스는 키-값 쌍, 그래프 데이터베이스, 문서 지향 또는 열 지향 구조로 구성됩니다.
수십 년에 걸친 소프트웨어 개발 기간 동안 우리는 관계형 테이블에 데이터를 저장하는 SQL(Structured Query Language) 형식의 데이터베이스를 사용해 왔습니다. 그러나 최근 몇 년 동안 인터넷과 Web 2.0 응용 프로그램의 사용이 크게 증가하면서 데이터베이스는 수천, 수천 테라바이트로 성장했습니다. Facebook, Google, Amazon, Watsapp 등과 같은 애플리케이션은 기존 데이터베이스보다 단순한 디자인, 속도 및 빠른 확장의 접근 방식을 따르는 완전히 새로운 데이터베이스 관리 시대를 일으켰습니다. 이러한 데이터베이스는 빅 데이터, 대규모 실시간 애플리케이션 및 분석에 사용됩니다.
예를 들어 사용자 블로그를 저장하는 블로깅 애플리케이션이 있다고 가정합니다. 이제 사용자가 이 블로그 게시물을 좋아하거나 댓글을 달거나 댓글을 좋아하는 것과 같은 몇 가지 새로운 기능을 애플리케이션에 통합해야 한다고 가정합니다. 일반적인 RDBMS 구현에서는 기존 데이터베이스 설계를 완전히 점검해야 합니다. 그러나 이러한 시나리오에서 NoSQL을 사용하면 이러한 민첩한 요구 사항에 맞게 데이터 구조를 쉽게 수정할 수 있습니다. NoSQL을 사용하면 새로운 사전 정의 열이나 사전 정의된 구조를 생성하지 않고 기존 구조에 이 새로운 데이터를 직접 삽입할 수 있습니다.
RDBMS의 과제
-
RDBMS는 잘 정의된 데이터 구조를 가정하고 데이터가 대체로 균일하다고 가정합니다.
-
애플리케이션을 빌드하기 전에 미리 정의할 애플리케이션의 스키마와 속성(열, 유형 등)이 필요합니다. 이는 매우 동적인 애플리케이션을 위한 애자일 개발 접근 방식과 잘 맞지 않습니다.
-
데이터가 커지기 시작하면 데이터베이스를 수직으로 확장해야 합니다. 즉, 기존 서버에 더 많은 용량을 추가해야 합니다.
RDBMS에 비해 NoSQL의 이점
스키마 덜 -
스키마가 없는 NoSQL 데이터베이스는 엄격한 데이터 구조를 정의하지 않습니다.
동적 및 민첩성 -
NoSQL 데이터베이스는 변화하는 요구 사항에 따라 동적으로 성장하는 경향이 있습니다. 정형, 반정형 및 비정형 데이터를 처리할 수 있습니다.
가로 확장 -
수직으로 확장되는 SQL 데이터베이스와 달리 NoSQL은 더 많은 서버를 추가하고 샤딩 및 복제 개념을 사용하여 수평으로 확장합니다. NoSQL의 이러한 동작은 필요에 따라 수평으로 확장할 수 있는 가상 서버를 처리할 수 있는 Amazon Web Services(AWS)와 같은 클라우드 컴퓨팅 서비스에 적합합니다.
더 나은 성능 -
모든 NoSQL 데이터베이스는 기존 RDBMS 구현에 비해 더 우수하고 빠른 성능을 제공한다고 주장합니다.
제한 사항에 대해 이야기하면 NoSQL은 단일 데이터베이스가 아니라 전체 데이터베이스 집합이기 때문에 제한 사항은 데이터베이스마다 다릅니다. 이러한 데이터베이스 중 일부는 ACID 트랜잭션을 지원하지 않지만 일부는 안정성이 부족할 수 있습니다. 그러나 각각은 특정 요구 사항에 잘 맞는 고유한 강점을 가지고 있습니다.
NoSQL 데이터베이스 유형
문서 중심 데이터베이스 -
문서 지향 데이터베이스는 문서를 전체로 취급하고 구성 요소 이름/값 쌍으로 문서를 분할하지 않습니다. 컬렉션 수준에서 이를 통해 다양한 문서 세트를 단일 컬렉션으로 통합할 수 있습니다. 문서 데이터베이스를 사용하면 기본 식별자뿐만 아니라 속성을 기반으로 문서의 색인을 생성할 수 있습니다. 오늘날 다양한 오픈 소스 문서 데이터베이스를 사용할 수 있지만 사용 가능한 옵션 중 가장 눈에 띄는 것은 MongoDB와 CouchDB입니다. 실제로 MongoDB는 가장 인기 있는 NoSQL 데이터베이스 중 하나가 되었습니다.
그래프 기반 데이터베이스 -
그래프 데이터베이스는 노드, 모서리 및 속성이 있는 그래프 구조를 사용하여 데이터를 나타내고 저장합니다. 정의에 따르면 그래프 데이터베이스는 인덱스 없는 인접성을 제공하는 모든 스토리지 시스템입니다. 이것은 모든 요소가 인접 요소에 대한 직접 포인터를 포함하고 인덱스 조회가 필요하지 않음을 의미합니다. 모든 그래프를 저장할 수 있는 일반 그래프 데이터베이스는 트리플 스토어 및 네트워크 데이터베이스와 같은 특수 그래프 데이터베이스와 다릅니다. 인덱스는 그래프를 탐색하는 데 사용됩니다.
열 기반 데이터베이스 -
열 지향 스토리지를 사용하면 데이터를 효과적으로 저장할 수 있습니다. 해당 열에 대한 값이 없을 때 단순히 열을 저장하지 않음으로써 null을 저장할 때 공간 소모를 방지합니다. 각 데이터 단위는 키/값 쌍의 집합으로 생각할 수 있습니다. 여기서 단위 자체는 종종 기본 키라고 하는 기본 식별자의 도움으로 식별됩니다. Bigtable과 해당 클론은 이 기본 키를 row-key라고 부르는 경향이 있습니다.
키 값 데이터베이스 -
키/값 쌍의 키는 집합에서 고유한 값이며 데이터에 액세스하기 위해 쉽게 조회할 수 있습니다. 키/값 쌍은 다양한 유형이 있습니다. 일부는 데이터를 메모리에 유지하고 일부는 데이터를 디스크에 유지하는 기능을 제공합니다. 단순하지만 강력한 키/값 저장소는 Oracle의 Berkeley DB입니다.
인기 NoSQL 데이터베이스
위의 범주에 각각 속하는 몇 가지 인기 있는 NoSQL 데이터베이스를 요약해 보겠습니다.
- 문서 중심 데이터베이스 − MongoDB, HBase, Cassandra, Amazon SimpleDB, Hypertable 등
- 그래프 기반 데이터베이스 − Neo4j, OrientDB, Facebook Open Graph, FlockDB 등
- 열 기반 데이터베이스 − CouchDB, OrientDB 등
- 주요 가치 데이터베이스 − Membase, Redis, MemcacheDB 등
NoSQL 데이터베이스. 이미지 출처:getfilecloud.com
결론
이 기사에서 우리는 NoSQL 데이터베이스 기술이 무엇이며 RDBMS 구현과 주로 어떻게 다른지에 대해 배웠습니다. 그런 다음 다양한 유형의 NoSQL 데이터베이스, 해당 응용 프로그램 및 각 유형에서 가장 인기 있는 데이터베이스를 살펴보았습니다.
오늘날 많은 조직이 거대한 데이터 세트와 대규모 애플리케이션을 위해 이러한 데이터베이스에 적응하고 있습니다. 이것은 NoSQL이 RDBMS의 오랜 유산을 깨뜨릴 가능성이 있는 웹 및 데이터베이스 기술에서 확실히 차세대 혁신이 될 것임을 보여줍니다.