DBMS (Data Base Management System)
- 데이터베이스(DB)를 관리하는 시스템
- 데이터를 저장하고 유지보수(수정,삭제,추가)하고 이를 검색하는 시스템
- 대량의 데이터를 처리하는 시스템
- 다양한 자료구조와 검색구조(정렬, 인덱싱, …) 사용해 빠른 검색 가능
- 대부분의 시스템은 R(검색) >>>>> CUD(업데이트)의 빈도수가 많음
- 검색에 최적화
RDBMS 관계형 데이터베이스 시스템
-
테이블 기반의 DBMS
- 테이블/컬럼 형태의 데이터 저장 방식
- 테이블과 테이블 간의 연관관계(주로 외래키 형태)를 이용해 필요한 정보를 구하는 방식
- 테이블끼리의 중복정보는 최소화 → 정규화
-
모델링은 E-R(Entity Relationship) 모델을 사용
-
테이블을 엔티티(기본)와 릴레이션 테이블로 구분하는 방식
-
데이터의 검색을 빠르게 하기 위해서 데이터를 변경(추가/업데이트/삭제)할 때 인덱스를 미리 만들어서 데이터의 검색을 빨리 되도록 함
-
하지만, 데이터의 변경이 많을 경우에는 인덱스 때문에 오히려 성능이 떨어지기도 한다
정렬
- 빠른 검색을 위해서는 데이터가 반드시 정렬(Sorting)되어 있어야 함
- 정렬 되어 있지 않다면 평균적으로 전체 데이터의 절반 필요
- 정렬되어 있을 경우 데이터를 빠른 시간 안에 찾을 수 있음
- 퀵정렬/힙정렬 계열이 주로 사용됨
인덱스
- 이진검색(Binary Search)
- 최대 log2(N)번 내에 검색 가능
- 데이터를 정렬 후 “test” 단어를 검색하는 경우
- 한가운데 값을 확인 → “sample” → 뒤쪽 절반
- 뒤쪽 중 한가운데 확인 → “yield” → 앞쪽 절반
- 계속 반복해 “test” 단어가 나올 때까지 계속
- 🌟 B-Tree 계열 → DBMS의 인덱스 기본!
- 사용 DBMS에서 가장 일반적으로 많이 사용됨
- 이진 검색과 유사하지만 한 번에 비교를 2번 (a,b : a <b)
- 작은 값보다 작은 경우 ( x < a )
- 큰 값과 작은 값 사이인 경우 ( a < x < b )
- 큰 값보다 큰 경우 ( x > b )
- B-트리 계열이 이진검색 계열보다 빠름
- 데이터가 추가/삭제/변경 될 때마다 a,b 값을 업데이트
⇒ 데이터 추가/수정/삭제할 때마다 정렬/인덱스 업데이트가 일어남
저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!