발자취
#01 RDBMS의 기본 구조 본문
- 정형 데이터: 스키마, 자유도 ↓ / RDBMS, XML
- 반정형 데이터: 어느정도의 자유도 / NoSQL, JSON
- 비정형 데이터: 구조가 없음 / Ngram, 역인덱스(검색)
1. DBMS란?
데이터 베이스를 관리하는 시스템
2. 데이터베이스란?
데이터를 CRUD하는 시스템(특히 검색)
데이터를 "많이" 쌓아두고 "빨리 검색"하는 것이 목표
3단 구조: DBMS - DB(Catalog) - Table
3. 관계형 DBMS란?
테이블 기반으로 데이터를 저장하는 시스템(컬럼, 레코드...)
여러 테이블로 나눠 각 테이블 간의 관계를 정의(->외래키)하는 DBMS
4. 스키마
정형 데이터에서 테이블 구조 및 테이블 관계를 정의
5. 모델링
요구 사항에서 DB 스키마를 만드는 작업
6. 정규화
데이터의 중복을 제거함. 정규화 시 테이블이 쪼개져 많은 테이블이 생기고 흔적(외래키)이 남음.
7. 검색
빠른 검색을 위해 "인덱스" 사용
8. 인덱스
CUD가 일어나면 재구성(정렬 후 업데이트) -> 쓰기 속도 ↓ => 인덱스는 빠른 검색에는 유리하나 빠른 입력은 X
- B+ 트리
인덱스 파일만 별도 파일이고 데이터는 참조함. 이진 검색 트리의 변형.
- 느려지는 경우?
저장되는 데이터가 많아지면 B 트리의 높이가 늘어나 검색 속도 ↓ => 해결: 파티셔닝 / 샤딩(여러 시스템에 분할 저장)
- 약점?
연속적인 검색 => 해결: 연결 리스트로 보완
9. 외래키
테이블이 쪼개지면서 남기는 흔적
어떤 테이블의 기본키가 다른 테이블에 속해있는 컬럼
10. 조인
검색을 위해 여러 테이블을 합해 하나의 테이블로 만드는 연산. 테이블 단위 연산. 공통 컬럼(외래키) 필요!
'3-1 > 데이터베이스' 카테고리의 다른 글
| #06 트랜잭션(격리성, 원자성), MVCC, 모델링 기초 (0) | 2023.05.07 |
|---|---|
| #05 조인 (0) | 2023.03.31 |
| #04 DML 실습2 (집계함수, 레코드 삽입, 수정, 삭제) (0) | 2023.03.30 |
| #03 DML 실습 (환경 설정, 기본 구문) (0) | 2023.03.25 |
| #02 RDBMS 연산 (0) | 2023.03.19 |