본문 바로가기
개발/MSA

[MSA] 데이터베이스 종류와 데이터베이스 선택 평가 항목

by 궁즉변 변즉통 통즉구 2024. 8. 25.
반응형

MSA에서 데이터베이스를 분리하면 각 서비스의 목적에 맞는 최적의 데이터베이스 타입을 선택해서 적용할 수 있다. 데이터베이스 타입의 종류와 타입을 선택하기 위한 평가 항목, 항목 별 대략적인 평가 점수를 정리해본다. 

 

데이터베이스 타입 종류

DB 설명
RDB  - 일반적으로 ACID를 지원하는 관계형 데이터베이스
 - Oracle, MySQL, Postgresql 등
Key-Value DB  - 키와 값으로 이루어진 저장과 조회라는 가장 간단한 원칙에 충실한 데이터베이스
 - Redis, Riak, Oracle Berkely, AWS DynamoDB 등
문서형(Document) DB  - 키와 값이라는 기본 구조이지만 값을 문서로 저장.
 - 별도 스키마가 없고 문서를 추가하면 그게 바로 스키마가 됨
 - MongoDB, CouchDB, Couchbase 등
컬럼형 DB  - 한 객체에 관련된 모든 정보를 가능한 매우 너비가 넓은 단일 Row에 많은 컬럼 기반으로 보관(스키마 없음)
 - 많은 컬럼 수 중 관련된 컬럼들을 컬렉션으로 묶어서 처리 가능
 - Hbase, Cassandra, GCP BigTable, Microsoft Azure Cosmos DB 등
그래프 DB  - 데이터를 점과 선의 그래프 형태로 저장하고, 선을 따라 특정 패턴과 현상을 빠르게 분석 가능 
 - Neo4J, Infinite Graph 등
NewSQL DB  - SQL의 특징(ACID)에 NoSQL의 확장성과 유연성을 결합한 데이터베이스 
 - VoltDB, NuoDB 등
시계열(TS, TimeSeries) DB  - 시계열 데이터(시간에 따라 저장된 데이터)를 처리하기 위해 최적화된 데이터베이스 
 - 데이터들과 시간이 함께 저장되어 이를 통해 시간의 흐름에 따라 데이터를 분석하기에 매우 용이
 - InfluxDB, kdb+ 등

 

데이터베이스 타입 선택의 평가항목 기준

평가 항목 설명
학습 용이성  개발자, DBA, DA 등이 얼마나 쉽게 배우고 적응할 수 있는가? 
 학습 곡선이 높으면 그만큼 적용하는데 시간이 많이 걸리고 어려움
데이터 모델링 용이성  얼마나 쉽게 도메인을 잘 표현할 수 있는가? 많은 유즈케이스에 잘 맞고 모델링 변경이 용이한가?
확장성/처리량  데이터베이스를 어느정도까지, 얼마나 쉽게 확장해서 처리량을 높일 수 있는가?
가용성/내분할성  고가용성(HA)를 지원하는지? 네트워크 파티션 등을 처리하는 기능은 있는지?
일관성  ACID 트랜잭션을 잘 지원하는가?
프로그래밍 언어 지원 /  성숙도 / 커뮤니티  제품이 얼마나 성숙했고 커뮤니티도 활발한가? 인재를 구하기 쉬운가?
읽기/쓰기 우선순위  쓰기와 읽기 중에 어느 영역을 우선하는지?

 

데이터베이스 타입 별 평가 항목 점수(1~5점)

평가항목 RDB Key-Value
DB
문서형 DB 컬럼형 DB 그래프 DB NewSQL DB 시계열 DB
학습 용이성 4 3 3 2 1 3 1
데이터 모델링 용이성 3 1 3 1 2 3 2
확장성/처리량 2 4 2 4 3 3 4
가용성/내분할성 1 4 3 4 3 3 2
일관성 5 2 2 1 3 2 3
프로그래밍 언어지원/성숙도/커뮤니티 4 3 3 2 2 2 2
읽기/쓰기 우선순위 균형 읽기 우선 읽기 우선 쓰기 우선 읽기 우선 균형 읽기 우선

 

모든 것이 완벽한 데이터베이스는 없으니 데이터베이스 선택 시 각 평가항목의 중요도를 판단해서 선택을 해야 할 것이다.

 

관련글:

 

[MSA] 데이터베이스 분해인과 통합인 - 어떤 이유로 분해 또는 통합해야하는가?

MSA에서 어떤 경우에 데이터베이스를 분리를 해야하는지?(분해인), 또 어떤 경우에 데이터베이스 통합을 고려해야하는지?(통합인)를 살펴본다.  데이터베이스 분해인- 데이터베이스를 분해해야

happy-jjang-a.tistory.com

 

[MSA] 모놀리식 데이터베이스 분해 과정

MSA에서 데이터베이스 분해하는 과정을 알아본다. 아래 내용들은 도서 '소프트웨어 아키텍처 The Hard Parts'를 참조해서 정리한 내용이다. 모놀리식 데이터베이스를 분해해서 독립적인 데이터 도

happy-jjang-a.tistory.com

 

반응형

댓글