반응형
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] 분산 데이터 액세스 패턴(분산된 데이터에 어떻게 접근할 것인가) (2) | 2024.09.01 |
---|---|
[MSA] 서비스 분리 해야할 때와 통합 해야할 때(서비스 분해와 통합 요인) (0) | 2024.08.31 |
[MSA] 모놀리식 데이터베이스 분해 과정 (0) | 2024.08.24 |
[MSA] 데이터베이스 분해인과 통합인 - 어떤 이유로 분해 또는 통합해야하는가? (0) | 2024.08.18 |
[MSA] 모놀리식 어플리케이션 분해 전략(서비스 분리) (1) | 2024.08.17 |
댓글