[TIL] 5월 24일 (clustered index)

yeon·2021년 5월 25일
0

호눅스 수업 DB

오늘 수업 키워드: clustered index, B+tree, primary index와 secondary index

Inno DB

  • MySQL의 데이트베이스 엔진
  • MySQL에서 storage 엔진에 대한 인터페이스를 제공, 이에 대한 구현체가 Inno DB 이다.
  • 저장 단위: 레코드 기반(row store)
    • row store ↔ column store(filed를 다 묶어서 저장)
  • page(페이지): 레코드가 모여있는 것

row store

  • page안에 레코드들을 저장한다.

    이미지 출처 (프레디가 공유해주셨다)

column store

  • 필드 검색에 유리하다. ex) select a from T;

  • 필드들을 따로따로 나눠서 각 필드별로 저장한다.

  • Big data가 컬럼 기반을 주로 이용한다.

  • 분석 쿼리에 유리 ex) 아마존의 Red shift 서비스, 분석쿼리 하는 서비스, row 기반보다 열배 빠르지만 열배 비싸다.

PK를 만들면 인덱스를 만든다. 이 인덱스는 물리적으로 B+tree 구조로 저장된다.

B-tree와 B+tree의 차이

이미지 출처

  • B+tree는 리프노드에만 데이터를 가지고 있다. → 리프노드에 모든 숫자들이 있다. 리프 노드끼리 data pointer가 연결되어 있으니깐

  • B-tree는 모든 노드가 데이터를 가지고 있다.

  • 리프노드: 자식노드가 없는 노드

  • B-tree와 B+tree는 디스크에 저장이 된다. DB에서 디스크의 저장 단위페이지이다.

create table T ( a int PK, b char(50) ); 을 입력하면 생기는 일은?

→ PK a에 대한 B+tree가 생성된다.

B+tree에 PK a를 기준으로 index page가 만들어지고, data page에는 PK a를 기준으로 page에 정렬되어 있다.

→ 이것이 clustered index 자료구조이다.

→ 관계형 데이터베이스는 해당 구조로 되어있다.

오늘 한일

  • airbnb 미션 진행중, bibi랑 url 설계하고 repository를 구현하고 있다. BookingRepository에서 booking 객체를 insert하는 메소드를 구현했다.
  • 호눅스 수업 clustered index에 대해 다뤘다. 수업중에 내용이 좀 어려워서 다시 보고 복습했는데도 추가적인 학습이 필요할 거 같다.

Todo

2개의 댓글

comment-user-thumbnail
2021년 5월 26일

앗 돌아온 노트필기 정리 잘해주셨네요 감사합니다! ㅋㅋ 퍼다가 써도 되나요?

1개의 답글