사용자가 늘면 서버 하나로는 충분하지 않아서 여러 서버를 두어야 합니다. 하나는 웹/모바일 트래픽 처리 용도고, 다른 하나는 데이터베이스용입니다.
어떤 데이터베이스를 사용할 것인가?
전통적인 관계형 데이터베이스(relational database)와 비-관계형 데이터베이스 사이에서 고를 수 있습니다.
관계형 데이터베이스
관계형 데이터베이스 관리 시스템(Relational Database Management System, RDBMS)이라고 부릅니다. RDBMS 가운데 가장 유명한 것으로는 MySQL, 오라클 데이터베이스, PostgreSQL 등이 있습니다. 관계형 데이터베이스는 자료를 테이블과 열, 칼럼으로 표현합니다. SQL을 사용하면 여러 테이블에 있는 데이터를 그 관계에 따라 조인(join)하여 합칠 수 있습니다.
비 관계형 데이터베이스
NoSQL이라고 부릅니다. 대표적인 것으로는 CouchDB, Neo4j, Cassandra, HBase, Amazon DynamoDB 등이 있습니다. NoSQL은 다시 네 부류로 나눌 수 있는데, 키-값 저장소(key-value store), 그래프 저장소(graph stroe), 칼럼 저장소(column store), 그리고 문서 저장소(document store)가 그것입니다. 이런 비-관계형 데이터베이스는 일반적으로 조인 연산은 지원하지 않습니다.
비-관계형 데이터베이스가 바람직한 경우
- 아주 낮은 응답 지연시간(latency)이 요구됨
- 다루는 데이터가 비정형(unstructured)이라 관계형 데이터가 아님
- 데이터(JSON, YAML, XML 등)를 직렬화하거나(serialize) 역직렬화(deserialize) 할 수 있기만 하면 됨
- 아주 많은 양의 데이터를 저장할 필요가 있음
참조
'System Design' 카테고리의 다른 글
[사용자 수에 따른 규모 확장성] 무상태(stateless) 웹 계층 (0) | 2021.09.07 |
---|---|
[사용자 수에 따른 규모 확장성] 콘텐츠 전송 네트워크(CDN) (0) | 2021.09.02 |
[사용자 수에 따른 규모 확장성] 캐시 (0) | 2021.09.01 |
[사용자 수에 따른 규모 확장성] 수직적 규모 확장 vs 수평적 규모 확장 (0) | 2021.08.31 |
[사용자 수에 따른 규모 확장성] 단일 서버 (0) | 2021.08.30 |
댓글