without haste but without rest

데이터베이스 요약 본문

Database

데이터베이스 요약

JinungKim 2021. 12. 4. 17:50

1. 데이터베이스

여러 사람이 사용할 목적으로 통합 관리하는 데이터 집합으로, 데이터를 효율적으로 저장하고 빠르게 검색하기 위해 사용한다. 데이터의 저장, 접근, 갱신 효율성을 높이기 위해서 데이터를 저장하는 데이터 파일 그리고 인덱스를 저장하는 인덱스 파일을 분리하여 관리한다.  (인덱스는 메타 데이터를 저장한다. 메타데이터: 데이터에 대한 구조화된 데이터로, 특정 데이터를 설명해주는 데이터) 

 

2. 데이터베이스 관리시스템

데이터베이스를 효율적으로 활용하기 위한 소프트웨어로, 트랜잭션의 ACID를 보장한다. 

원자성(Atomicity): 트랜잭션이 부분적으로 실행되다가 중단되지 않는 것을 보장

일관성(Consistency): 트랜잭션이 성공적으로 완료되면 언제나 일관성 있는 데이터베이스 상태를 유지

독립성(Isaolation): 트랜잭션 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장

지속성(Durability): 성공적으로 수행된 트랜잭션은 영원히 반영 됨

 

3. 트랜잭션

데이터베이스에서 데이터의 논리적인 실행 단위

 

4. 스키마

테이블의 구조와 제약 조건에 대한 명세

 

5. 인덱스

데이터베이스에서 검색 속도를 높여주는 자료구조다. 보통 B-Tree(Balanced Tree) 구조를 많이 활용한다. 밸런스드 트리 구조는 문자열 컬럼의 경우 A-Z 에 대한 리프 페이지를 생성해서 어떤 데이터를 찾고자 하는 경우 풀 테이블 스캔을 방지할 수 있다.

 

6. 관계형 데이터베이스

데이터를 컬럼과 로우로 구성되는 트랜잭션 테이블로 정리하고, 프라이머리 키가 각 레코드를 식별하는 구조로 데이터를 저장하는 데이터베이스. 

일반적으로 각 테이블은 하나의 엔티티(개체, 저장해야하는 개체에 대한 개념적인 정보) 타입을 대표한다.

 

7.  NoSQL

스키마가 없거나 유연한 스키마를 활용하고, 트랜잭션의 일관성을 완화하는 대신 확장성을 선택한 데이터베이스(일관성과 확장성 사이의 트레이드 오프 관계) 큰 데이터 볼륨과 짧은 지연 시간, 유연한 데이터 모델이 필요한 경우에 적합하다. 

 

RDBMS의 경우 데이터베이스를 수직으로 확장하지만 NoSQL은 수평 확장도 가능하다.

 

Key-Value: 단순하게 키에 매핑되는 값을 저장하는 구조로 레디스 이에 해당함

Document: 키 밸류 구조에서 확장된 형태로 밸류가 계층적인 형태인 문서로 저장할 수 있다. 몽고디비가 이에 해당함

Column Family: 컬럼 기반으로 집계 작업에 특화되어 있는 데이터베이스. Hbase, Cassandra가 이에 해당함

 

8. NoSQL의 의의

RDBMS의 경우 전체 데이터베이스에서 일부 데이터를 지속적으로 조회하고 수정하는 것에 더 특화되어 있다. 그런데 SNS 데이터 등은 매 초마다 엄청난 양이 생성되지만 한 번 저장하고 난 후에는 수정될 일이 거의 없어서  ACID 트랜잭션을 지원할 필요성이 작아지고, 또한 NoSQL은 확장이 용이하기 때문에 각광받는다.

 

 

9. 파티셔닝

데이터베이스의 테이블, 인덱스를 물리적으로 분할하는 기법이다. (단 이때 애플리케이션 입장에서는 분할된 것을 인식하지 못한다.)

 

장점

성능 향상과 가용성, 관리 용이성이 증가한다.

 

단점

테이블간 조인 비용이 증가한다.

테이블과 인덱스를 별도로 파티셔닝 해야한다.

 

10. 수평 파티셔닝

샤딩이라고도 하며 하나의 테이블에서 행을 기준으로 분리한다. 스키마를 복제한 후 샤드키를 기준으로 데이터를 나누는 방법으로, 스키마가 같은 데이터를 두 개 이상의 테이블에 나누어 저장한다.

 

11. 수직 파티셔닝

테이블의 일부 열을 빼내는 형태로 분할하는 방법으로, 정규화와 비슷하지만, 이미 정규화된 데이터를 분리하는 과정으로 스키마를 나누고 데이터가 따라 옮겨가는 작업이다. 하나의 엔티티를 2개 이상으로 분리하는 작업이다.

Comments