Skip to content

3조 물리적 데이터베이스 미션

Semin Choi edited this page Aug 14, 2024 · 1 revision

B+ 트리 인덱싱

  • B-tree 의 등장 배경
    • 이진 검색 트리의 노드 수가 많으면 노드들을 모두 메인 메모리에 올려서 사용할 수 없다.
    • 하나의 노드의 크기를 페이지 크기 단위와 일치시켜서 디스크 I/O를 최소화 하기 위함.
  • B-tree 의 동작 방식
    • 검색: 기본적으로 이진트리와 같은 방식으로 동작합니다. B 트리는 노드가 여러개 있기 때문에 key가 들어갈 수 있는 위치를 찾으며 검색합니다.
    • 삽입:
      • 삽입할 리프노드 N에 key를 저장합니다.
      • 노드 N에 여유가 없으면 노드의 중간 키를 부모 노드에 삽입하고, 나머지 키들을 두 개의 새로운 리프노드로 나눕니다.
  • B-tree와 B+ tree의 차이점
    • B-Tree는 루트 노드, 브랜치 노드, 리프 노드로 구성된다.
    • 브랜치 노드와 리프 노드에 모두 데이터가 저장된다.
    • B+ Tree는 리프 노드에만 데이터가 저장된다.
    • 브랜치 노드에는 키만 저장된다.
    • 리프 노드는 링크드 리스트 형태로 연결되어 있어 풀 스캔에 유리하다.
❓ **의문 - B-Tree, B+Tree 는 어떻게 데이터의 지역성을 보장하는가?**

Clustered Index란?

  • Clustered Index의 동작방식
    • 클러스터드 인덱스는 유사한 값을 가진 컬럼을 기준으로 정렬되어 모여있는 인덱스를 말한다.
    • 클러스터드 인덱스의 리프 노드는 실제 데이터 레코드를 함께 가지고 있다.
  • 테이블을 저장하는 다른 방식도 있을까?
    • 논클러스트 인덱스, 해시 테이블,
  • 물리적으로 테이블을 저장하는 다양한 방법

MySQL과 InnoDB

  • InnoDB 란 무엇인가?

    • MySQL은 두뇌 부분에 해당하는 쿼리 파서, 전처리기, 옵티마이저, 실행 엔진과 실제 작업을 처리하는 핸들러(스토리지 엔진)으로 구성되어 있다.
    • InnoDB는 이 중 스토리지 엔진에 해당한다.
    • InnoDB는 실행 엔진의 요청에 따라 데이터를 디스크에 저장하고 읽어오는 역할을 담당한다.
  • InnoDB 에서 create database -> create table 을 할 때 일어나는 일을 설명해 보세요.

    • /var/lib/mysql 하위에 데이터베이스 이름의 디렉토리가 생성된다. (cafe가 jsp-cafe 미션 중 생성한 데이터베이스)

    스크린샷 2024-08-14 오후 1.18.37.png

    • 데이터베이스 디렉토리 하위에는 각 테이블이 ibd 확장자를 가진 테이블스페이스 파일이 생성된다.

    스크린샷 2024-08-14 오후 1.21.22.png

    • ibd 파일은 테이블의 데이터와 인덱스를 저장한다.
  • InnoDB 외에 어떤 스토리지 엔진들을 사용할 수 있는가? 특징은?

    • MyISAM
      • 트랜잭션을 지원하지 않는다.
    • Memory
      • 트랜잭션을 지원하지 않는다.
      • 메모리에 데이터를 저장되어 캐시로 사용할 수 있다.

Indexing

  • MySQL 에서 지원하는 인덱스의 종류와 용도에 대해 설명해 보세요.
    • B+ Tree
    • R-Tree
  • MySQL 로 지도정보를 저장하고 싶습니다. 어떻게 해야 할까요?
    • R-Tree는 2차원의 데이터를 인덱싱하고 검색하는 목적의 인덱스
    • 기하학적 도형(Geometry) 정보를 관리할 수 있는 데이터 타입을 제공
    • R-Tree는 도형을 감싸는 최소 크기의 사각형(MBR, Minimum Bounding Rectangle)들의 포함 관계를 B-Tree 형태로 구현한 인덱스

데이터베이스 일반

Oracle, MS-SQL, PostgreSQL 에서 테이블과 레코드를 저장하는 방식은 어떤 것들이 있는가?그룹으로 위 주제에 대해 학습하고 학습정리결과를 댓글로 달아 주세요.

👼 개인 활동을 기록합시다.

개인 활동 페이지

🧑‍🧑‍🧒‍🧒 그룹 활동을 기록합시다.

그룹 활동 페이지

🎤 미니 세미나

미니 세미나

🤔 기술 블로그 활동

기술 블로그 활동

📚 도서를 추천해주세요

추천 도서 목록

🎸 기타

기타 유용한 학습 링크

Clone this wiki locally