이전에 데이터 처리하는 어플리케이션을 개발할 때 NoSQL로 어떤걸 쓰면 좋을지 조사한 글을 포스팅해본다.
RDBMS? NOSQL?
- 데이터의 읽기 쓰기 등 퍼포먼스에 치중한다면 NOSQL, 트랜잭션과 같은 정합성 위주의 시스템을 사용한다면 RDBMS
- RDBMS 컬럼 변경 용이하지 않음, NOSQL 컬럼 변경 용이
- NOSQL의 경우 sorting, join, grouping, range query, index 매우 취약
- RDBMS 학습 비용 x
- NOSQL 학습 비용 소요 (운영시 어떤 장애상황이 생길지 예측이 어려움)
- NOSQL 가장 큰 장점 (Scale-Out, RDBMS보다 상대적으로 빠른 쓰기/읽기)
NOSQL 분류
[ 키 밸류형 ] redis, memcached, Oracle Coherence
[ 컬럼형 ] Cassandra, HBASE, Cloud Datastore
[ 문서형 ] MongoDB, Couchbase, MarkLogic, PostgreSQL, MySQL, DynamoDB MS-DocumentDB
[ 그래프형 ] Neo4j
DataStore | 설 명 | 장 점 | 단 점 |
Cassandra | -Facebook에 의해 2008년 아파치 오픈소스로 공개된 분산 데이터 베이스 (자바 언어 기반) | -대량으로 쓰기가 발생하는 서비스에 좋음 | -최소 3대 이상 구성(클러스터 환경) |
HBase | -대량 데이터를 우수한 성능으로 데이터 일관성을 보장하면서 다뤄야 할 때 주로 사용 | -하둡 기반에서 동작하고 다양한 하둡 의 도구들과 상호 운영성이 좋음 | -5대 미만에서는 사용할 수 없다(대규모 전용) |
MongoDB | -MongoDB는 10gen 사에서 개발된 높은 성능과 확장성을 가지고 있는 데이터베이스 | -스키마 없이 사용 가능 | -JOIN이나 트랜잭션 처리가 불가능 |
[ Cassandra & HBase ]
- 카산드라 클러스터 설정 및 구성이 HBase 클러스터 구성보다 훨씬 쉽다.
- 카산드라가 일반적으로 write시 5배 이상의 더 나은 성능, read시 4배 이상의 성능을 보인다.
[ Cassandra & MongoDB ]
- Cassandra 노드가 추가될수록 MonogoDB 보다 훨씬 나은 선형적인 성능 향상을 보인다.
- 다중 Index가 필요한 구조라면 MongoDB를 선택하고, 데이터 항목 변경이 많고 unique access가 많은 경우라면 Cassandra가 적합 - http://db-engines.com/en/system/Cassandra;MongoDB
성능비교
https://academy.datastax.com/planet-cassandra/nosql-performance-benchmarks
https://www.datastax.com/nosql-databases/benchmarks-cassandra-vs-mongodb-vs-hbase
'Programming > Programming' 카테고리의 다른 글
[ MAC ] mac에 nvm, npm, bower설치하기 (0) | 2018.01.03 |
---|---|
맥북(Mac) 메모 파일 txt파일로 쉽게 추출하기 (0) | 2017.11.15 |
MAC에서 curl이용해서 파일 다운받기(wget, curl 공통점 및 차이점) (0) | 2017.11.07 |
MAC에 메이븐(Maven)설치하기 (0) | 2017.10.30 |
톰캣은 웹 애플리케이션을 어떻게 관리하나? (0) | 2017.10.11 |