오늘은 회사에서 근무하다가 문득 NoSQL에 속하는 데이터베이스들 중, 저한테만 조금 생소한 데이터베이스들에 대해서 기본적인 정보 및 특징들을 정리해보았습니다. 해당 포스트에서는 단순히 정보와 특징들만 정리하고, 다음 포스트에서는 차이점을 비교해보고자 합니다.

NoSQL: MongoDB,  RavenDB, CouchDB, DynamoDB에 대한 기본 정보 및 특징 정리

1. MongoDB http://mongodb.com

1.1. MongoDB 란?

MongoDB문서형 데이터베이스이므로 JSON과 같은 문서에 데이터를 저장한다.

일반적으로 알고 있는 MySQL과 같이 행렬로 이루어진 방식보다 훨씬 더 편리하다.

 

1.2. JSON 기반

- 데이터를 다룰때 가장 생산적인 방법

- 배열과 중첩된 객체 지원

- 유연하고 동적인 스키마 허용

 

1.3. 강력한 쿼리 언어

- 문서 내에 데이터들이 아무리 중첩되어 있더라도 필드 별로 필터링하고 정렬 가능

- 위치 기반 검색, 그래프 검색 및 텍스트 검색과 같은 집계 및 기타 지원

- 쿼리 자체는 JSON이므로 쉽게 작성 가능

 

1.4. 관계형 데이터베이스의 모든 기능 지원

2. RavenDB https://ravendb.net/features

2.1. RavenDB 란?

RavenDB문서형 데이터베이스이다.

 

2.2. 다중 모델 아키텍처

- 자동 ETL (추출, 변환 및로드) 프로세스 지원

- 데이터를 SQL 솔루션에 복제 가능

 

2.3. 올인원 데이터베이스

- 인하우스(in-house) 스토리지 엔진은 한 곳에서 모든 요구를 충족하도록 설계

 

2.4. 사용하기 쉬운

- 설치, 구현 및 사용이 쉬움

 

2.5. 빠른 확장

- 클러스터 설정은 RavenDB Management Studio에서 단순 클릭만으로도 관리 가능

 

2.6. 고 가용성

- 노드 간 실시간 복제를 통해 데이터베이스를 온라인 상태로 유지

- 항상 여러 지점에서 사용할 수 있음.

3. CouchDB https://couchdb.apache.org/

3.1. CouchDB 란?

CouchDB는 선택한 단일 응용 프로그램 서버 뒤의 다른 데이터베이스와 마찬가지로 작동하는 단일 노드 데이터베이스이다.
대부분의 사람들은 단일 노드 CouchDB 인스턴스로 시작한다. 이 보다 더 까다로운 프로젝트는 클러스터로 원활하게 업그레이드 할 수 있다.

 

3.2. 클러스터

- 여러 서버 또는 VM에서 단일 논리 데이터베이스 서버를 실행할 수있는 클러스터된 데이터베이스

- CouchDB 클러스터는 API를 변경하지 않고도 단일 노드 설정에서 더 높은 용량과 고 가용성 제공

 

3.3. HTTP / JSON

- 유비쿼터스 HTTP 프로토콜과 JSON 데이터 형식을 사용하며 이를 지원하는 모든 소프트웨어 호환

- HTTP 프록시 서버,로드 밸런서와 같은 외부 도구와도 원활히 동작

 

3.4. 오프라인 최초 데이터 동기화

- CouchDB의 고유한 복제 프로토콜은 네트워크 애플리케이션이 까다로운 모바일 애플리케이션 및 기타 환경을 위한 차세대의  "Offline First" 애플리케이션을 위한 토대

 

3.5. 생태계

- CouchDB는 서버용으로 (Raspberry Pi에서 대규모 클라우드 설치에 이르기까지) 구축

- PouchDB는 모바일 및 데스크탑 웹 브라우저 용으로 구축

- Couchbase Lite는 기본 iOS 및 Android 앱용으로 구축

- 모두 원활하게 데이터 복제

3.6. 신뢰할 수 있음

- CouchDB는 데이터 신뢰성에 대해 많은 고민을 했음 ( 원문. CouchDB is serious about data reliability. )

- 개별 노드는 충돌 방지 추가 전용 데이터 구조 사용

- 다중 노드 CouchDB 클러스터는 모든 데이터를 중복 저장하므로 필요할 때 언제든지 사용 가능

4. DynamoDB https://aws.amazon.com/ko/dynamodb/

4.1. DynamoDB 란?

Amazon DynamoDB는 어떤 규모에서도 10밀리초 미만의 성능을 제공하는 키-값문서형 데이터베이스이다.

 

4.2. 큰 규모를 지원하는 성능

- DynamoDB는 어떤 규모에서도 일관되게 10밀리초 미만의 응답 시간을 제공하여 세계에서 가장 큰 규모의 몇몇 애플리케이션 지원

- 고객은 사실상 무제한의 처리량과 스토리지로 애플리케이션 구축 가능

- DynamoDB 글로벌 테이블은 여러 AWS 리전에 데이터를 복제하므로 전 세계에 배포된 애플리케이션의 데이터에 빠르게 로컬 액세스 가능

- 밀리 초 단위의 지연 시간으로 더 빠른 액세스가 필요한 사용 사례를 위해 DynamoDB Accelerator(DAX)는 완전 관리형 인 메모리 캐시 제공

 

4.3. 서버 관리 불필요

- DynamoDB는 서버리스이므로, 서버를 프로비저닝하거나 패치를 적용하거나 관리할 필요 없음

- 소프트웨어를 설치하거나 관리하거나 운영할 필요 없음

- DynamoDB는 용량에 맞게 테이블을 자동으로 확장하고 축소하며 성능 유지

- 가용성과 내결함성이 내장되어 있어서 이러한 기능을 위해 애플리케이션을 설계할 필요 없음

- DynamoDB는 온디맨드 용량 모드와 및 프로비저닝 용량 모드를 모두 제공하므로 워크로드당 용량을 지정하거나, 사용하는 리소스에 대해서만 비용을 지불함으로써 비용을 최적화 가능

 

4.4. 엔터프라이즈에 사용 가능

- DynamoDB는 ACID 트랜잭션을 지원하므로 규모에 맞게 비즈니스 크리티컬 애플리케이션 구축 가능

- DynamoDB는 기본적으로 모든 데이터를 암호화하고 모든 테이블에 대해 세분화된 자격 증명 및 액세스 제어 제공

- 테이블에 대한 성능 저하 없이 수백 테라바이트의 데이터를 즉시 전체 백업하고, 가동 중지 없이 이전 35일 이내의 원하는 시점으로 복구 가능

- DynamoDB는 또한 가용성 보장을 위한 서비스 수준 계약을 통해 지원

 

반응형

+ Recent posts