본문 바로가기
강의 및 강연/원티드 프리온보딩 챌린지

프리온보딩 백엔드 챌린지(DB) - DB기본기 다지기 1 -

by 요섹남 2023. 10. 15.

데이터베이스의 원칙

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 등.