관리 메뉴

IT & Life

NoSQL 뛰어난 기능 : 최고의 문서 데이터베이스 본문

프로그래밍/SQL

NoSQL 뛰어난 기능 : 최고의 문서 데이터베이스

미운앙마 2017. 11. 28. 00:47

https://www.infoworld.com/article/3201884/nosql/nosql-standouts-the-best-document-databases.html?nsdr=true

NoSQL 뛰어난 기능 : 최고의 문서 데이터베이스


 

어떤 문서 지향 데이터베이스가 귀하의 앱에 적합한가? 이 가이드를 따라 가장 개발자 친화적 인 NoSQL 데이터베이스


"올바른 직업에 적합한 도구". 그러한 지혜가 어디에서나 유효하다면, 개발자가 주어진 애플리케이션에 대해 선택하는 데이터베이스의 선택에 확실히 적용됩니다. "NoSQL"이라고 통칭되는 데이터 제품 제품군 중 하나 인 문서 데이터베이스 는 데이터베이스 기술이 아닌 응용 프로그램 에 집중하고자하는 개발자를위한 것 입니다.

 

문서 데이터베이스의 경우 데이터는 별개의 열 유형이있는 테이블에 저장되지 않습니다. 대신 임의의 수의 필드 및 임의의 수의 중첩 구조가있는 자유형 "문서"에 저장됩니다. 이러한 문서는 일반적으로 JSON으로 표시되며 API 또는 JSON을 REST 끝점으로 보내 업데이트됩니다. 대부분의 모든 현대 프로그래밍 언어는 JSON 및 REST를 지원하므로 문서 데이터베이스 작업은 기존 데이터베이스로 작업하는 것보다 해당 데이터 구조로 작업하는 것이 더 낫습니다.


이 스키마없는 설계는 호출 될 때 한계가 있습니다. 개발자는 삽입 된 데이터가 일관성을 유지하기 위해 더 많은 작업을해야합니다. 일관성이 항상 데이터베이스 자체에 의해 보장되는 것은 아니기 때문입니다. SQL은 데이터베이스 작업을위한 표준 문제이며 널리 사용되는 언어로 대부분의 문서 데이터베이스에서 지원되지 않으므로 기존 데이터베이스 전문 지식을 가진 사람들은 처음부터 다시 시작해야합니다. 그러나 자유 형식의 데이터 구조 인 프로 테넌트 (protean)가 필요한 응용 프로그램을 작성하는 경우 문서 데이터베이스의 편리 성, 속도, 확장 성 및 다용도 성은 두드러지지 않습니다.

 

여기서 가장 잘 알려지고 널리 사용되는 문서 데이터베이스 7 가지를 프로파일 링했습니다. 7 개의 CouchDB, Couchbase Server, MongoDB 및 RethinkDB 중 4 개는 오픈 소스 프로젝트로 시작하기에 실제적인 장벽이 거의 없거나 전혀 없습니다. Couchbase 및 MongoDB는 상용 라이센스로 지원되는 Enterprise Edition에서도 사용할 수 있습니다. 다른 세 개의 Amazon DynamoDB, Google Firebase 및 IBM Cloudant는 주요 클라우드 공급 업체의 호스팅 서비스입니다. 클라우드의 다른 서비스와의 긴밀한 통합은 큰 도움이됩니다.

 


Amazon DynamoDB

 

Amazon의 DynamoDB 문서 저장소 는 Amazon의 SimpleDB를 확장 한 것으로 2012 년에 시작되었습니다 .

후드 아래에는 키 값 저장소 인 Dynamo를 사용 합니다.

DynamoDB의 공동 개발자는 나중에 Apache Cassandra를 만들기 위해 동일한 아이디어를 많이 사용합니다.

 

 

DynamoDB 기능

 

Amazon의 다른 클라우드 오퍼링과 마찬가지로 DynamoDB는 필요에 따라 비용을 지불하는 관리 형 서비스입니다. 개발자는 구조화되지 않은 문서 또는 키 - 값 쌍을 유지하는 데 필요한 스토리지 용량을 설정하고 데이터베이스에 대한 읽기 및 쓰기 요청에 대한 시간당 제한 속도를 선택합니다. 서버를 프로비저닝하거나 복제를 구성 할 필요가 없습니다. Amazon이 모든 것을 처리하고 최근에는 믹스에 자동 스케일링 기능을 추가했습니다.

 

당연히 DynamoDB는 개발자가 Amazon 클라우드의 다른 서비스와 유용한 통합을 제공합니다. 예를 들어, 트리거는 AWS 람다 함수를 통해 설정할 수 있습니다. Amazon의 BI 및 분석 도구도 인근에 있습니다. 이러한 서비스와의 근접성은 편리하지만 아마존은 다양한 방식으로 업 셀링 기능을 제공 할 수 있습니다. 예를 들어 Redis의 캐싱 및 가속화는 비용 효율적인 추가 기능인 DynamoDB Accelerator 를 통해 사용할 수 있습니다 .

 

 

DynamoDB 로컬

 

오픈 소스 화신에서 DynamoDB를 찾지 못할 것입니다. 아마존 클라우드에 호스팅 된 제품으로 독점적으로 제공됩니다.

 

즉, 다른 많은 클라우드 고유 데이터베이스와 달리 DynamoDB는 로컬에서 다운로드하여 실행할 수있는 버전으로 제공됩니다.

그러나  DynamoDB Local 은 프로덕션 용도로 사용되는 것이 아니라 연결 또는 Amazon 청구서를 실행하지 않고 테스트 환경에서 응용 프로그램을 준비하는 방법입니다.

 

 

Couchbase Server

 

카우치베이스 주식회사는 후계자로 CouchDB를 너무 많이 형제 없습니다.

카우치베이스 주식회사는 CouchDB를하고 Membase에서 수행 작업에 만들어진 , 그러나 그 프로젝트 중 하나에 관련이 없습니다.

 

이 제품은 자동화 된 장애 조치 (failover) 및 교차 데이터 센터 복제와 같은 고급 기능을 사용하여 엔터프라이즈 사용 사례를위한 문서 데이터베이스 및 분산 된 키 값 저장소입니다.

 

 

Couchbase 기능

 

Couchbase를 다른 NoSQL 경쟁뿐만 아니라 이전의 CouchDB에서 분리하는 기능 중 하나는  SQL과 유사한 질의어 인 N1QL ( "니켈" 이라고 발음 함 )입니다. N1QL은 ANSI SQL 구현에서 기대할 수있는 모든 명령을 제공하지는 않지만 SQL 경험이있는 사람이 실행 가능한 결과를 얻으려면 JOIN 작업과 같은 유용한 기능을 제공합니다.

 

Couchbase 쿼리 시스템은 개발자를위한 것이 아니라 일반적으로 기존 데이터베이스를 다루는 DBA 및 비즈니스 분석가를위한 것입니다. EXPLAIN 키워드 와 같은 기능 은 특히 ​​군중에게 호소하기 위해 삽입 된 것 같습니다.

 

Couchbase는 조합 문서 데이터베이스와 키 - 값 저장소로서 고유 한 식별자를 키로 사용하여 문서를 저장합니다. 문서에 키 - 값 캐시처럼 작동하도록 수명 값을 지정할 수도 있습니다. 즉, Redis와 같은 진정한 키 - 값 캐싱 시스템은 기본 키 - 값 저장에 비해 훨씬 빠르지 만 Couchbase는보다 유연하며 Redis와 Couchbase를 효과적으로 결합하여 작업 속도를 높일 수 있습니다. 이 메모에서 Couchbase는 Memcached 프로토콜을 기본적으로 지원 하므로 Memcached를 사용하는 기존 응용 프로그램을 대신 Couchbase에 연결할 수 있습니다.

 

 

Couchbase Community vs. Enterprise

 

Couchbase Server는 무료 유료 엔터프라이즈 에디션, 무료 사용 커뮤니티 에디션 및 다른 사람들을위한 토대가되는 오픈 소스 에디션으로 제공됩니다. 엔터프라이즈 및 커뮤니티 에디션의 바이너리 다운로드 는 Couchbase의 사이트 에서 제공되며, 소스 코드는 Couchbase의 개발자 사이트에서 다운로드 할 수있다 . (Couchbase 오픈 소스 프로젝트를위한 GitHub 저장소는 여러 프로젝트가 모여 있기 때문에 하나도 없다.)

 

커뮤니티 에디션은 프로덕션 환경에 배치 될 수 있지만 , 엔터프라이즈 에디션과 지원 기능의 고급 기능이 부족 하므로 비 구매자가주의해야합니다. 수평 확장 기능과 같은 Couchbase의 일부 기능이 CouchDB 프로젝트에 포함되어 있지만 규칙보다 예외입니다.

 

 

Couchbase Lite

 

앱 개발자를위한 주목할만한 Couchbase의 또 다른 에디션은 본격적인 버전의 인스턴스와 동기화 할 수있는 Couchbase의 임베디드 버전 인 Couchbase Lite 입니다. Couchbase Lite는 자동으로 백엔드와 동기화되는 데이터 저장소가 필요한 모바일 앱용 애플리케이션 스택 인 Couchbase Mobile 의 핵심 구성 요소입니다 . Couchbase Mobile은 iOS, Android, Java에서 사용할 수 있습니다. .Net, MacOS 및 tvOS.

 

 

CouchDB

 

CouchDB를의 프로젝트는 전 IBM의 개발자에 의해 2005 년에 시작하고 때때로 CouchDB를가 카우치베이스 주식회사의 기초가 있다고 가정 2008 년 아파치 소프트웨어 재단에 이동하지만, CouchDB를하고 카우치베이스 주식회사는 서로 다른 목표와 병렬 프로젝트입니다했다.

 

 

CouchDB 대 Couchbase

 

Couchbase는 문서 데이터베이스와 키 값 저장소 인 반면, CouchDB는 엄격하게 문서 데이터베이스입니다. Couchbase는 오랫동안 내결함성 및 SQL과 같은 쿼리 언어와 같은 엔터프라이즈 기능에 집중 해 왔지만 CouchDB에 이러한 목표를 달성하기 시작했습니다.

 

 

CouchDB 기능

 

CouchDB는 배포의 단순성과 사용의 용이성을 강조합니다. 데이터베이스에서 데이터를 검색하는 것은 JSON 형식의 쿼리를 REST HTTPS 끝점으로 보내고 결과를 JSON으로 반환하는 것처럼 간단합니다. 대부분의 모든 현대 프로그래밍 언어는 이러한 작업을 수행 할 수 있으며 매핑 및 CouchDB 쿼리 및 보고서 뒤에 뷰를 만드는 데 필요한 감소를 수행 할 수 있습니다. ODBC 드라이버 나 데이터 커넥터는 필요 없습니다.

 

CouchDB의 특별한 소스 중 하나는 데이터 조정 기술입니다. 하나의 CouchDB 피어에 대한 변경 사항은 버전 제어 시스템과 비슷한 방식으로 자동으로 다른 것과 조정됩니다. 문서 버전 간의 충돌은 해당 문서의 이전 버전 인 것처럼 유지됩니다.

 

결국이 일관성있는 모델은 항상 또는 일관성있게 연결된 데이터베이스 (예 : 간헐적으로 연결된 모바일 응용 프로그램) 또는 특정 노드에서 최신 버전의 데이터가 필요하지 않은 데이터베이스에 유용합니다. 그러나 결국 일관성 또한 CouchDB의 가장 큰 경고 중 하나입니다. 당신이 경우 어떻게 즉시 일관성을 필요 CouchDB를 그것을 찾을 수있는 곳은 없습니다.

 

확장 성은 CouchDB에서 오랫동안 약점 이었지만 최근에 다루어졌습니다. 버전 2.0 은 Cloudant / IBM이 제공하는 오픈 소스 를 통해 새로운 클러스터링 기술 을 선보이며 프로젝트에 병합되었습니다. 마지막으로 MongoDB에 익숙하고 유사한 선언문 구문을 사용하려는 사람들을 위해 Mango 프로젝트 ( Cloudant / IBM)도이를 외부 애드온으로 제공합니다.

 

 

CouchDB 다운로드

 

모든 주요 플랫폼 용 CouchDB 바이너리와 소스 코드 는 공식 CouchDB 사이트 에서 다운로드 할 수 있습니다 . 프로젝트 소스는 GitHub에서도 사용할 수 있습니다 .

 

 

Google Firebase 실시간 데이터베이스

 

당신의 생각 구글 중포 기지 클라우드 백엔드 여러 플랫폼에서 로컬 응용 프로그램 사이의 빠른 동기화 데이터 스토리지를 제공하기 위해 DynamoDB의-방법에 대한 구글의 답변으로.

 

Firebase Realtime Database는 Firebase 스택의 한 구성 요소로, 관여도와 통찰력에 무거운 앱을 개발하는 데 사용됩니다. 전체 스택에는 인증, 성능 모니터링, 사용자 분석 및 기타 여러 기능이 포함되어 있지만 여기에서는 Firebase 자체에 중점을 둡니다.

 

 

Google Firebase 기능

 

Google은 2014 년에 Firebase를 인수했습니다. 그 후로 Firebase를 연결하여 많은 Google Cloud 기능을 활용했습니다. 예를 들어 Firebase 용 Google Cloud Functions를 사용하면 Firebase 이벤트에 대한 응답으로 클라우드에서 JavaScript 함수를 트리거 할 수 있습니다. Firebase 용 Google 애널리틱스를 사용하면 더 세밀한 분석을 위해 모바일 앱 데이터를 BigQuery로 가져올 수 있습니다.

 

게임은 Firebase의 대상 응용 프로그램 중 하나이므로 Firebase에 제공되는 SDK에는 Unity 크로스 플랫폼 게임 개발 프레임 워크가 포함됩니다. 보다 전통적인 엔터프라이즈 중심 프로젝트 또는 소비자 중심 프로젝트를 개발하는 개발자는 iOS 및 Android, C ++, 일반 웹 / JavaScript 및 REST (Java, Python, 당신이 사용하는 이름)를 지원하는 다른 언어를 선택할 수 있습니다.

 

Firebase는 연결성이 보장되지 않는 시나리오에서 작동하도록 설계되었습니다. CouchDB와 마찬가지로 오프라인 일 때 변경 사항을 로컬에 캐시하고 연결이 반환되면 자동으로 백엔드와 동기화됩니다. Firebase는 독립형, 전적으로 오프라인 솔루션으로 사용하도록 설계되지 않았습니다.

 

예를 들어 Android의 경우 로컬 데이터베이스는 10MB로 제한됩니다.

 

 

Google Cloud 및 GitHub의 Firebase

 

Firebase는 독립형 제품으로 제공되지 않지만 Google의 클라우드 제품으로 만 제공 됩니다. 중포 기지 GitHub의 저장소는 SDK와 및 다양한 플랫폼 특정 도구에 대한 소스 코드가 있습니다.

 

 

IBM Cloudant

 

Cloudant 는 본질적으로 IBM의 호스팅 된 CouchDB 에디션입니다. 원래 Cloudant는 독립 회사였으며 IBM의 SoftLayer 클라우드에서 호스팅되는 "BigCouch"라는 CouchDB 에디션을 제공했습니다. 2014 년 IBM은 Cloudant 를 분석 및 대규모 데이터에 대한 IBM의 전반적인 추진의 일환으로 인수했습니다 .

 

 

Cloudant 대 CouchDB

 

Cloudant는 호스팅 된 버전의 CouchDB 이상을 의미합니다. Cloudant는 기본적으로 통합 된 전체 텍스트 검색 과 같은 CouchDB 자체에서 쉽게 사용할 수없는 기능을 제공합니다 . 일반적으로 CouchDB의 전체 텍스트 검색은 외부 프로젝트와의 통합이 필요합니다 . Cloudant와 CouchDB 인스턴스간에 데이터를 양방향으로 복제 할 수 있기 때문에 필요에 따라 둘 사이를 쉽게 이동할 수 있습니다.

 

CouchDB에 대한 Cloudant의 개선 사항 중 일부는 CouchDB 2.0의 수평 확장 기능과 망고 쿼리 언어 인터페이스를 포함하여 기본 CouchDB 프로젝트로 다시 돌아 왔습니다. 그러나 Cloudant 기능이 자동으로 CouchDB로 넘어갈 것이라는 증거로 받아들이지 마십시오.

 

 

Cloud Cloudant on IBM Cloud

 

Cloudant는 주로 IBM Cloud 에서 제공되는 클라우드 제품으로  , dashDB, DataWorks 및 Watson Analytics와 같은 다른 IBM Cloud 데이터 제품과 함께 사용할 수 있습니다.

 

 

클라란트 로컬

 

Cloudant Local 이라 불리는 Cloudant 의 방화벽 판은 클라우드 호스트 제품과 동일한 기능을 모두 제공합니다. Cloudant Local은 x86 Linux의 우분투 및 Red Hat 버전뿐만 아니라 Red Hat 또는 Suse를 실행하는 IBM 고유의 System z에서도 사용할 수 있습니다. 개발자는 Docker 이미지에서 무료 테스트 및 개발 전용 버전을 다운로드 할 수 있습니다.

 

MongoDB

 

MongoDB 는 가장 널리 배포 된 문서 데이터베이스이며 개발자 커뮤니티에서 가장 잘 알려져 있습니다. 이는 문서 데이터베이스 및 NoSQL 시스템에서 일반적으로 발견되는 핵심 개념의 대부분을 구현합니다 : 무결성 스토리지, 스케일 아웃 아키텍처 및 비공유 설계입니다.

 

 

MongoDB 엔터프라이즈 대 커뮤니티

 

MongoDB의 오픈 소스 에디션에는 이미 기본 프로덕션 배포를 마무리하는 데 필요한 많은 기능이 포함되어 있습니다. 상업용 라이센스는 백업, 자동화 확장, 모니터링, 데이터 탐색 도구, SQL 지원이 포함 된 BI 커넥터 및 메모리 내 스토리지 엔진과 같은 주요 엔터프라이즈 기능을 추가합니다.

 

MongoDB의 엔터프라이즈 기능 은 최근에 추가 된 메모리 내 처리, 타사 데이터 탐색을 통한 SQL과 같은 인터페이스 및 Tableau와 같은 BI 도구와 같이 오라클 과 같은 기업 개발자 를 그리는 쪽으로 기울어 졌습니다 . 문서 데이터에 대해 재귀 그래프 쿼리 를 수행하는 기능 . 그래프 쿼리는 패밀리 트리 및 소셜 네트워크와 같이 제한없는 관계 체인을 탐색하는 데 유용합니다.

 

 

MongoDB 데이터 손실

 

MongoDB는 또한 많은 비판의 대상이되었습니다. 그 중 일부는 제품의 목적과 방법론을 제대로 이해하지 못하는 개발자로부터 유래되었습니다. 그러나 그 중 일부는 더티 읽기 및 부실 읽기 , 손실 된 업데이트 및 유니 코드 문서를 처리 할 때 심각한 제한 사항 인 데이터 정렬별로 정렬 할 수없는 것과 같은 실제 문제로 인해 발생했습니다 . 이 모든 문제는 MongoDB 3.4 에서 다루어졌다 .

 

 

MongoDB 보안

 

또 하나의 주요한 문제는 잘못 설정된 공개 된 MongoDB 인스턴스가 속임수로 공격 받고 보유되는 보안과 같은 것이지만 MongoDB의 보안 설정 을 생산에 투입하기 전에 실사를 기울여 이를 해결할 수 있습니다 .

 

 

MongoDB 다운로드

 

MongoDB의 Community Server 버전 MongoDB의 무료 오픈 소스 에디션은 MongoDB의 공식 사이트에서 직접 다운로드 할 수 있습니다 . MongoDB의 소스 코드는 GitHub에서 사용할 수 있습니다 . Enterprise Server 에디션은 MongoDB 에서 직접 다운로드 할 수 있으며 무료 평가 및 테스트 용으로 사용할 수 있습니다.

 

 

RethinkDB

 

뒤에 이야기 RethinkDB는 프로젝트 자체만큼이나 흥미 롭다. RethinkDB는 원래 오픈 소스 (AGPL) 라이센스 버전을 사용하여 상용 제품으로 설계되었지만 데이터베이스를 운영하는 회사는 실패했습니다 . 클라우드 네이티브 컴퓨팅 재단 (Cloud Native Computing Foundation)은 프로젝트의 지적 재산을 구입하여 Linux Foundation에 기부함으로써 구조 작업에 나섰습니다. 이제 RethinkDB는보다 자유로운 오픈 소스 라이선스와 오픈 소스 공간에서 주요 업체의 후원으로 두 번째 삶을 살고 있습니다.

 

 

RethinkDB 기능

 

RethinkDB의 큰 혁신은 실시간 업데이트를 응용 프로그램에 스트리밍하는 기본 제공 변경 알림 시스템입니다. 도입부 문서에서 "변경 사항을 폴링하는 대신 개발자는 업데이트 된 쿼리 결과를 실시간으로 응용 프로그램에 지속적으로 전달하도록 데이터베이스에 알릴 수 있습니다."따라서 RethinkDB는 멀티 플레이어 게임과 같은 실시간 응용 프로그램의 개발을 단순화합니다 . 전반적인 ACID 준수 비용. 데이터베이스의 개별 문서는 트랜잭션 방식으로 처리되지만 전체적으로 데이터베이스의 상태는 결국 일관성이 있습니다.

 

RethinkDB는 SQL에 대한 기본 지원이 없지만 Python, JavaScript, Ruby 및 Java의 원시 구문을 통해 구현되는 ReQL이라는 쿼리 시스템을 포함 합니다 . ReQL은 체인 도트 명령을 사용하여 개발자가 선택한 언어로 복잡하고 느슨하게 평가 된 표현식을 작성할 수 있도록합니다.

 

 

예 :

 

r.table(‘users’).pluck(‘last_name’).distinct().run(conn)

 


RethinkDB에있는 문서 의 변경 사항은 변경 사항에 대한 세부 정보를 파생시키기 위해 응용 프로그램에서 파싱 할 수있는 로그 인 "변경 공급 "을 통해 제공됩니다 ( 예 : 해당 데이터가 새로운 경우 또는 기존의 변경된 버전). 데이터. ReQL 표현식은 changefeed 이벤트 (본질적으로 트리거)를 처리하기위한 콜백 함수의 양을 생성하는 데 사용됩니다. 테이블 조인을 모방하는 메커니즘을 통해 데이터 엔터티 간의 관계를 정의 할 수도 있습니다 .

RethinkDB 다운로드

RethinkDB의 바이너리 는 공식 RethinkDB 프로젝트 페이지에서 구할 수 있습니다.  공식 Docker 이미지는 Docker Hub에서 가져올 수 있습니다. 프로젝트 소스는 GitHub에서 사용할 수 있습니다 .

Comments