NoSQL 비교(카산드라, HBASE, MongoDB)

2023. 4. 26. 16:12 NoSQL/Cassandra

이전에 데이터 처리하는 어플리케이션을 개발할 때 NoSQL로 어떤걸 쓰면 좋을지 조사한 글을 포스팅해본다.

그 당시 고민했던 NoSQL 중 카산드라(Cassandra), HBASE, MongoDB 세 가지로 선정해 조사했었다.

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년 아파치 오픈소스로 공개된 분산 데이터 베이스 (자바 언어 기반) -컬럼 단위로 관리되어 컬럼형으로 분류 -대용량의 데이터 트랜잭션에 대해 고성능 처리가 가능(실제 트위터 MYSQL -> Cassandra로 전환) -대량으로 쓰기가 발생하는 서비스에 좋음 -확장성이 뛰어남  -Apache Foundation에서 개발중이며커뮤니티 활발 - Scale-Out -최소 3대 이상 구성(클러스터 환경) -복잡한 조건 검색 불가 -데이터 갱신 및 입력시 Atomic한 처리가 힘듬
HBase -대량 데이터를 우수한 성능으로 데이터 일관성을 보장하면서 다뤄야 할 때 주로 사용 -대량 데이터 분석 및 처리를 위해 사용되는 Hadoop의 산하 프로젝트로 시작된 데이터베이스 (HDFS 및 MapReduce등과 함께 사용하기에 최적화) -수십 테러바이트가 넘는 빅데이터에 적합 -하둡 기반에서 동작하고 다양한 하둡 의 도구들과 상호 운영성이 좋음-데이터 일관성 보장 우수(상대적) -5대 미만에서는 사용할 수 없다(대규모 전용) -성능이 좋진 않다 (상대적)
MongoDB -MongoDB는 10gen 사에서 개발된 높은 성능과 확장성을 가지고 있는 데이터베이스NoSQL 데이터베이스에서는 문서형 데이터베이스로 분류(C언어 기반)-데이터를 입력할때 데이터 구조 정보를 포함하여 BSON(JSON을 바이너리화한것)형식으로 저장하고, key value로 사용-NON-SCHEMA-비정형 데이터, 파일 데이터등의 스키마프리(Scheme free)모델에서 적합  - SQL 과 비슷한 방식의 쿼리 사용 -스키마 없이 사용 가능 -SQL 과 비슷한 방식의 쿼리 사용 -몽고는 쓰기할때 메모리에 먼저 Write 후에  1분 단위로 Flushing하는 Write back 방식을     사용한기 때문에 write성능이 좋음-Read시에는 파일의 Index를 메모리에 로딩해   놓고 찾는다(memory mapped file) - 빠름-다양한 기능 제공 -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

 

출처 : https://brocess.tistory.com/115