본문 바로가기

DB 공부

(9)
해시 테이블(Hash Table) 유튜브에 있는 MIT의 6.006 수업의 해시부분을 보고 정리한 내용입니다. Dictinoary ADT 사전(Dictionary)라고 부르는 자료구조가 있다. 파이썬의 Dictionary가 이 기능을 하는 자료구조이다. 기능은 간단하다. key와 item이 있을 때 이 사전에 key에 대응하는 item을 삽입하고(Insert), key에 대응하는 item이 현재 사전에 있는지 확인하고(Search), 특정 key에 해당하는 item을 삭제할 수 있어야 한다.(Delete) 이를 구현하기 위해서 생각할 수 있는 방법은 두 가지가 있겠다. key 끼리의 비교연산을 기반으로 balanced tree(Red-black Tree, Splay Tree, B+-tree)등을 이용해서 구현하는 것이다. 이런 자료구조를..
Buffer Pool Manager - 2 Buffer Pool은 사실상 page table의 역할을 OS 대신에 하는거나 마찬가지입니다. 그리고 이런 저장장치 간의 속도 차이로 인한 캐싱 이슈는 CS에서 굉장히 고전적인 이슈입니다. OS 수업에서도 page replacement는 들어본 적이 있을 겁니다. page table에서와 같이 buffer pool도 파일 크기에 비해 작은 메모리를 잘 사용하기 위해서 replacement policy를 잘 세워야 합니다. 사실 누군가가 OS 수업에서 들었을 얘기와 겹치는 부분이 많지만 buffer pool의 replacement policy를 알아봅시다. Buffer Replacement Policies 먼저 언제 replacement가 일어나는지 알아보자. DBMS가 쿼리를 수행하면서 파일을 읽어들이..
Buffer Pool Manager - 1 DBMS는 디스크에 있는 파일에 직접 접근할 수가 없습니다. 무조건 메모리에 올린 다음에 접근이 일어나야 합니다. 디스크 I/O는 정말 느립니다. 그래서 디스크에 존재하는 파일들을 얼마나 효율적으로 메모리에 올리고 내리는지는 성능에 있어서 중요해집니다. 이런 이유 때문에 DBMS는 OS에게 이러한 작업을 맡기지 않고 직접하려고 하죠. 이러한 작업을 효율적으로 만들기 위해 신경 쓸 부분을 두 가지로 볼 수 있습니다. 먼저 같이 사용되는 비율이 높은 페이지들은 디스크 상에서 서로의 거리가 가깝게 저장하도록 하는 것입니다. 같이 사용되는 페이지들이 가깝게 위치한다면 sequential access의 이점을 늘릴 수 있는 것이죠. 이런 식으로 효율성을 늘리는 것을 spatial control이라고 합니다. 다른..
DBMS는 저장소를 어떻게 관리하는가? - 2 Data Representation 데이터베이스 파일은 페이지들로 구성되고 그 페이지가 어떻게 저장되는지 또 어떻게 찾아가는지를 알았습니다. 이제 튜플의 데이터들이 어떻게 표현되는지 볼 차례입니다. 디스크에 저장되어 있는 것은 크게 봤을 때 그저 바이너리일 뿐입니다. 이를 해석하는 것은 DBMS의 일입니다. DBMS는 튜플 내부에 대한 정보를 어떻게 해석할지를 알아야 하는데 이 정보는 우리가 스키마라고 얘기하는 것과 상통하는 부분입니다. 그리고 이런 정보를 catalog에 저장해둡니다. 튜플 내부에 저장되는 값들의 종류를 몇가지 살펴봅시다. Integer는 우리가 흔히 다루는 자료형 중 하나로 INTEGER, BIGINT, SMALLINT, TINYINT 같은 자료형이 있으며 C/C++의 native t..
DBMS는 저장소를 어떻게 관리하는가? 개인적으로 아래과 같은 강의를 들으면서 DBMS에 관련해서 공부 중인 내용을 정리하려고 쓰는 포스팅입니다. 강의도 듣고 책도 읽고 정리하고는 있어도 제가 모자라서 틀린 부분이 있을 수도 있습니다. 혹시라도 발견하시면 댓글로 알려주시면 감사하겠습니다. https://15445.courses.cs.cmu.edu/fall2019/ Which Storage Type? 저장소를 분류하는 방법에는 다양한 기준이 있겠지만 휘발성을 기준으로 나눠보자. 여기서 휘발성이란 전원을 껐을 때 담겨있던 정보가 사라지는 것을 의미한다. 휘발성이 있는 저장소의 대표격은 역시 RAM이다. 보통 메모리라고 퉁쳐서 부르기도 합니다. 그리고 비휘발성의 저장소 중 제일 대표적인 것은 HDD일 것입니다. 일반적으로 데이터베이스를 사용하는 상..
SQL에서 NULL과의 연산 SQL에서 일반적인 속성값들 외에도 null value라는 좀 특별한 값이 있다. 어떤 튜플의 어떤 속성 값이 null이라는 것은 해당 속성에 대해서 어떤 값도 갖고 있지 않는 것이라고 이해하면 좋다고 한다. 물론 진짜로 아무 값이 없는 게 아니라 null을 나타내는 어떤 것을 저장하고 있을 것이다. sqlite에서는 아예 storage type 중의 하나로 null이라는 것이 존재하여 관리하는 듯하다. 어쨌든 이것도 값의 하나인데 값들끼리는 산술 연산(Arithmetic operation)도 비교 연산(Comparison)도 가능할텐데 null과 이러한 연산을하면 어떤 결과를 가질지 SQL에서는 정의하고 있는 듯 하다. 산술 연산 기본적으로 null과 산술 연산을 한 결과는 null로 정의된다. $+,..
SQL 쿼리 연습문제 2 6. OLD IS NOT GOLD 문제 : Which decades saw the most number of official releases? List the number of official releases in every decade since 1900. Like 1970s|57210. Print all decades and the number of official releases. Releases with different issue dates or countries are considered different releases. Print the relevant decade in a fancier format by constructing a string that looks like this: 197..
SQL 쿼리 연습문제 SQL을 연습해보기 위해서 연습용 DB와 연습문제 10개를 풀어봅니다. sqlite3을 이용하며 사용한 연습문제와 연습용 DB는 전부 이 링크에서 가지고 왔습니다. CMU의 Intro to Database 수업의 과제로 나온 것입니다. DB 스키마를 그림으로 나타낸 것은 아래와 같습니다. 해당 스키마에 대한 설명은 링크로 가시면 좀 더 자세하게 알아볼 수 있습니다. 1. SAMPLE 문제 : List all types of work ordered by type ascendingly. work라는 것의 type을 type의 오름차순으로 출력해야 합니다. 위 스키마를 보면 work_type이라는 테이블? 릴레이션?이 있는데 name을 attribute로 가지고 있습니다. 이 name을 기준으로 오름차순으로 ..