- 출처: https://github.com/donnemartin/system-design-primer?tab=readme-ov-file#nosql
GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Inclu
Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. - donnemartin/system-design-primer
github.com
- NoSQL
NoSQL 은 key-value store, document store, wide column store 나 graph DB 같은 형태로 데이터를 표현하는 집합이다. 데이터가 비정규화되어 있으며 조인은 어플리케이션 코드에서 수행된다. 대부분의 NoSQL store 들은 RDB 에서처럼 "진정한 ACID" 트랜잭션은 부족하며 최종 일관성을 선호한다.
종종 NoSQL 디비의 속성을 묘사하는데 BASE 를 사용한다. CAP 이론과 비교해서 BASE 는 일관성보다 가용성을 우선한다.
- Basically available: 시스템은 가용성을 보증한다.
- Soft state: 시스템의 상태는 시간이 지남에 따라 변하며 심지어 입력이 없어도 그렇다.
- Eventual consistency: 시스템은 특정 기간 입력을 받지 않는다면 시스템은 일정 기간 동안 일관성을 유지하게 된다.
SQL 이나 NoSQL 중에서 선택하는것 외에도 어떤 NoSQL 디비가 구축하려는 어플리케이션 use case 에 맞는지 이해하면 도움이 된다.
- Key-value store
key-value store 는 일반적으로 O(1) 읽기/쓰기를 허용하며 메모리 또는 SSD 로 지원되는 store 이다. 데이터 store 는 사전식 순서로 key 를 유지하여 키 범위를 효율적으로 검색할 수 있다. key-value store 는 값과 함게 메타데이터 저장을 허용한다.
key-value store 는 고성능을 제공하며 간단한 데이터 모델이나 메모리 캐시 레이어 계층같이 빠르게 변화하는 데이터에 종종 사용된다. 제한된 연산만 허용하기 때문에 만약 추가적인 연산이 필요하다면 어플리케이션 계층에서 이를 수행해야 한다.
key-value store 는 document store 와 같은 보다 복잡한 시스템과 어떤 경우에는 그래프 디비의 기반이 된다.
- Document store
document store 는 문서를 중심으로 구성되며 문서는 주어진 객체에 대한 모든 정보를 저장한다. document store 는 문서 자체의 내부 구조에 기반하여 쿼리하기 위한 API 나 쿼리 언어를 지원한다. 많은 key-value store 는 값의 메타데이터 처리 기능이 포함되어 있어 두 저장소 유형 간의 경계가 모호해지는 경향이 있다.
구현 측면에서 document 는 collcetion, tag, 메타데이터, 디렉토리로 조직화된다. 비록 document 가 조직화되거나 함께 그룹화될지라도 document 마다 서로 완전히 다른 필드가 있을 수 있다.
MongoDB 나 CouchDB 같은 어떤 document store 들은 복잡한 쿼리 수행을 위해 SQL 같은 언어를 지원하기도 한다. DynamoDB 는 key-value 와 document 를 둘 다 지원한다.
Document store 는 높은 유연성을 제공하며 가끔씩 변경되는 데이터를 다루는데 종종 사용된다.
- Wide column store
wide column store 의 데이터 기본 단위는 column (name/value 쌍) 이다. column 은 column families (SQL table) 로 그룹화될 수 있다. column failimies 를 더 그룹화한 super column families 라는 개념도 존재한다. row key 를 사용하여 각 column 에 독립적으로 접근할 수 있으며 동일한 row key 를 가진 열들이 하나의 row 를 형성한다. 각 값에는 버저닝과 충돌을 피하기 위한 timestamp 가 포함되어 있다.
Google 은 Bigtable 최초 wide column store 로 도입했는데 이는 Hadoop 생태계에서 자주 사용되는 오픈소스 HBase 와 Facebook 의 Cassandra 에 영향을 미쳤다. BigTable, HBase, Cassandra 와 같은 store 는 사전식 순서로 key 를 유지하여 선택적으로 키 범위를 효율적으로 검색할 수 있도록 한다.
wide column store 는 고 가용성과 고 확장성을 제공하며 매우 큰 데이터 셋을 다루는 경우에 종종 사용된다.
- Graph database
그래프 디비에서 각 노드는 record 이며 각 arc 는 두 노드간의 관계이다. 그래프 디비는 다수의 외래 키나 many-to-many 관계로 복잡한 관계를 표현하는데 최적화되어 있다.
그래프 디비는 social network 같은 복잡한 관계에 대한 데이터 모델에서 고 성능을 제공한다. 생긴지 얼마 되지 않아서 아직 널리 사용되진 않는다.
'Concepts > System Design' 카테고리의 다른 글
RDBMS (0) | 2025.04.20 |
---|---|
DNS (0) | 2025.04.13 |
Communication (0) | 2025.04.13 |
Asynchronism (0) | 2025.04.13 |
Application layer (0) | 2025.04.13 |
댓글