데이터베이스의 원칙
1. 무결성(Integrity)
- Accuracy
a. 데이터에 오류가 없어야함
b. 사용자가 저장하고자 하는 내용들이 저장되어야 함
- Consistency
a. 데이터베이스는 일관성이 있어야함
b. 하지만 서비스 방향에 따라 타협 할 수 있음
2. 안정성(reliability)
- Resilient
- 고장이 잘 안나야함
3. 확장성
- Scale up vs scale out
a. 어떤 상황에 유리한가?
1. Scale up(수직 확장) :
- 단일 서버 또는 가상 머신의 성능을 향상시키는 방식이다. 기존 서버의 성능을 높이기 위해 CPU, RAM, 디스크 등의 리소스를 업그레이드하거나 추가하는 것을 의미한다.
- 간단하고 관리가 쉽다.
- 어플리케이션의 단일 인스턴스에서 성능 향상이 이루어진다.
2. Scale Out(수평 확장) :
- 시스템의 성능을 향상시키기 위해 서버의 수를 늘리는 방식이다. 여러 서버가 협력하여 작업을 분산하고 처리한다.
- 확장이 유연하며, 필요에 따라 서버를 동적으로 추가하거나 제거할 수 있습니다.
- 높은 가용성과 내결함성을 제공할 수 있습니다.
- 수평 확장을 통해 대규모 트래픽에 대응할 수 있습니다.
3 비교 :
- Scale Up 과 Scale Out의 차이 : Scale up은 단일 서버의 성능을 강화하는 것이고, Scale out은 여러 서버로 시스템의 성능을 확장하는 것이다.
- 적용 분야 : 대규모 데이터베이스나 CPU-bound한 어플리케이션은 Scale up을 고려할 수 있습니다. Stateless한 웹 어플리케이션, 대용량 트래픽을 처리해야 하는 시스템은 Scale out을 고려할 수 있습니다.
- 비용 측면 : Scale up은 일반적으로 더 비싸다. 높은 성능을 제공하는 단일 서버의 비용이 높을 수 있다. 반면 Scale out은 비교적 저렴한 서버들을 여러 대 사용하므로 비용이 효율적이다.
- 유연성 : Scale out은 유연하게 확장이 가능하다. 필요에 따라 서버를 동적으로 추가하거나 제거할수 있다. Scale up은 서버 업그레이드가 필요하며 상대적으로 덜 유연하다.
데이터베이스의 유형과 종류
1. Relational(RDBMS - 관계형 데이터베이스 시스템) :
- 데이터를 테이블 형태로 저장하며, 각 테이블을 관련된 데이터의 레코드를 포함합니다.
- 테이블 간에 관계를 설정하여 데이터를 구조화합니다.
- SQL을 사용하여 데이터를 조작하고 조회합니다.
- ACID 속성을 갖추어 데이터의 일관성과 안정성을 보장합니다.
- MySQL, PostgreSQL, Oracle, SQL Server 등.
2. NoSQL(비관계형 데이터베이스 시스템) :
- 비관계형 데이터 모델을 사용합니다.
- 다양한 데이터 모델을 제공하며, 주요 유형으로 Key-Value, Document, Graph 등이 있습니다.
- 데이터 모델에 따라 유연하게 확장이 가능합니다.
- ACID 속성을 완전히 준수하지 않을 수 있으며, CAP 이론에 따라 일부는 일관성, 일부는 가용성, 일부는 분할 내성을 선택합니다.
1. Key-Value Store(키-값 스토어) :
- 단순한 키와 값의 쌍으로 데이터를 저장합니다.
- 매우 빠르고 간단한 구조를 가지며, 확장성이 뛰어납니다.
- 주로 단순한 조회 또는 쓰기 작업에 적합합니다.
- Redis, DynamoDB, Riak 등.
2. Document Store(문서 스토어) :
- JSON 또는 BSON과 같은 문서 형식으로 데이터를 저장합니다.
- 유연한 스키마를 가지며 중첩된 구조를 지원합니다.
- 복잡한 쿼리 및 인덱싱이 가능합니다.
- MongoDB, CouchDB, Elasticsearch 등.
3. Graph Database(그래프 데이터베이스) :
- 그래프 구조로 데이터를 저장하며, 노드와 간선으로 표현됩니다.
- 복잡한 관계나 네트워크 데이터를 효과적으로 다룰 수 있습니다.
- 쿼리는 주로 그래프 알고리즘을 기반으로 합니다.
- Neo4j, Amazon Neptune, ArangoDB 등.
'강의 및 강연 > 원티드 프리온보딩 챌린지' 카테고리의 다른 글
프리온보딩 백엔드 챌린지(DB) - DB 기본기 다지기2 - (0) | 2023.10.22 |
---|---|
프리온보딩 백엔드 챌린지(JAVA) - CleanCode 작성법 - (0) | 2023.09.05 |