MySQL) DBMS 기초

CHOISUJIN·2023년 7월 17일
0
post-thumbnail
post-custom-banner

DBMS (Data Base Management System)

  • 데이터베이스(DB)를 관리하는 시스템
    • DB : 테이블들이 모여 이루는 데이터 단위
  • 데이터를 저장하고 유지보수(수정,삭제,추가)하고 이를 검색하는 시스템
    • CRUD
  • 대량의 데이터를 처리하는 시스템
  • 다양한 자료구조와 검색구조(정렬, 인덱싱, …) 사용해 빠른 검색 가능
  • 대부분의 시스템은 R(검색) >>>>> CUD(업데이트)의 빈도수가 많음
  • 검색에 최적화
    • 쓰기에 최적화된 시스템은 NoSQL 계열

RDBMS 관계형 데이터베이스 시스템

  • 테이블 기반의 DBMS

    • 테이블/컬럼 형태의 데이터 저장 방식
      • 하나의 테이블은 여러 개의 컬럼으로 구성
    • 테이블과 테이블 간의 연관관계(주로 외래키 형태)를 이용해 필요한 정보를 구하는 방식
    • 테이블끼리의 중복정보는 최소화 → 정규화
  • 모델링은 E-R(Entity Relationship) 모델을 사용

  • 테이블을 엔티티(기본)와 릴레이션 테이블로 구분하는 방식

  • 데이터의 검색을 빠르게 하기 위해서 데이터를 변경(추가/업데이트/삭제)할 때 인덱스를 미리 만들어서 데이터의 검색을 빨리 되도록 함

  • 하지만, 데이터의 변경이 많을 경우에는 인덱스 때문에 오히려 성능이 떨어지기도 한다

정렬

  • 빠른 검색을 위해서는 데이터가 반드시 정렬(Sorting)되어 있어야 함
  • 정렬 되어 있지 않다면 평균적으로 전체 데이터의 절반 필요
    • 최선 : 1, 최악 : N, 평균 : N/2
  • 정렬되어 있을 경우 데이터를 빠른 시간 안에 찾을 수 있음
    • O(NlogN)-O(N2)
  • 퀵정렬/힙정렬 계열이 주로 사용됨

인덱스

  • 이진검색(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 값을 업데이트

⇒ 데이터 추가/수정/삭제할 때마다 정렬/인덱스 업데이트가 일어남

profile
매일매일 머리 터지는 중 ᕙ(•̀‸•́‶)ᕗ
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기