-
가장 먼저 저장되는 공간은 storage. = non-volatile disks
-
밑으로 갈 수록 점 점 더 느려지는 경향, 용량이 크다. (Storage → non-volatile)
-
위로 갈 수록 용량 대비 가격이 높은 곳이다. (Memory → volatile)
-
저장을 할 수 있는 기능이 있는 애들을 적절하게 섞어서 효과를 극대화 해야 함.
-
<표: Access Times>
-
DBMS의 goal
-
OS로 안되는 이유
- mmap; malloc을 할 수 있다.
- 내가 필요한 껏들을 넣어서 넘어갔을 때 내가 쓰는 자원에는 locality라고 하는 것이 있어서 소분배를 ㅎ해서 access하면 그 다음에는 그 곳에 있을 가능성이 높다.
- 하지만, 중요한 것은 DB는 여러 사용자가 사용한다는 것 → OS의 multiple threads
- 읽는 것은 아무 문제 없지만 누군가가 쓰려고 하는 순간 문제가 발생한다.
- 데이터 베이스를 설계하면서 OS에 맞춰서 설계하는 것은 매우 복잡하다.
- OS가 가지고 있는 툴
- madvice
- mlock
- 내가 얘기할 때 까지 lock을 걸어 놓는 것.
- msync
- DBMS
- row-level의 작업들을 알아서 하기를 원한다.
- 데이터가 읽어지고 있는데, 미리 데이터를 가져올 수도 있다.
Database Storage Concerns
1. 데이터 베이스는 데이터를 스토리지에 저장****
- 내 데이터는 파일로 존재한다.
- 파일을 어떻게 관리할 것인가?
- 한정된 메모리는 최대한 max하게 사용한다.
2. 데이터를 메모리에 넣고 빼고 하면서 시스템 사용 효과를 어떻게 극대화할 것인가?
- Hash.
- 결국에 DBMS는 데이터 스트럭쳐를 엄청나게 복잡하게 하는 소프트웨어임.
Database file storage
- 데이터는 결국 파일로 존재한다.
- 하나 혹은 그 이상의 파일로 디스크에 저장한다.
- /var/lib/mysql → 실제로 데이터베이스에 해당하는 파일들이 저장되어 있다.
- data, meta-data, logs(usage history)
- storage를 메인 메모리에 넣지 않는 이유?
- 비용이 너무 많이 나감.
- 휘발성 메모리임.
- 원칙적으로 storage에 저장을 한다.
- ↔ In-memory database
- Redis DBMS를 사용하면 실제 데이터베이스를 파일에 저장하는 것 뿐만 아니라 작동하는 동안에는 메모리에 저장해서 엄청나게 빠르게 작동함.
- mysql도 이런 기능이 있긴 함.
Disk
- 데이터 베이스에 해당하는 파일이 디스크에 있다.
- secondary
- block이나 page를 unit으로 쓰고 읽고 한다.
- disk는 물리적인 영향을 받는다
- 실제로 어디에 저장되느냐에 따라서 retrieve시간이 달라진다.
Disk Components
- <사진>
- 하드디스크 드라이브
- Disk = HDD라고 가정함. (아닌 경우도 있지만 여전히 많이 사용)
- SDD도 큰 틀은 달라지지 않지만, 읽기 속도가 일정하다는 등의 효과가 있음.
- 알루미늄 판을 뜯어내면 은색 원판 ; platter
- 이 위에 실제로 데이터가 저장되는 것이다.
- 이 위에 바늘이 있어서 전자석이 붙어서 platter위에 자기장을 형성하고, 혹은 그 자기장을 읽을 수 있다.
- 전자석을 이용해서 magnetic field를 형성한다.
- write; platter위에 마그네틱 필드를 쓴다.
- read; platter위에 마그네틱 필드를 읽는다.
- →플래터는 컴퓨터를 켜고 끌때까지 계속 빙글빙글 돈다. 읽기 쓰기 속도가 빨라지면 가격도 비싸짐.
- Platter
- 여러 장 혹은 한 장.
- spindle; 축을 기준으로 돌아감.
- head ;
- arm ; 암 하나가 여러개의 헤드를 움직임.
- 각각의 플레터가 실제 데이터가 저장되는 곳이다.
- 자기장을 기록하기 위한 vomit이 다 정해져 있음
- 동심원들 하나하나를 track
- 한 track은 여러 개의 sector로 이루어짐.
- track이 안 쪽에 있는 트랙과 바깥쪽 트랙이 있음.
- 같은 데이터가 안쪽이랑 바깥쪽에 쓰여져 있을 때 속도가 다름. 바깥쪽이 더 빠름.
- OS는 바깥쪽, 문서 데이터는 안쪽에 저장한다는 DBMS안에서도 이러한 원리를 적용함. (자주; 밖)
- 절대적인 룰은 아니지만, 최적화를 적용하는 부분임.
- 여러 sector가 모여서 하나의 block이나 page를 이룸.
- 연속되어 있어야 하나의 page를 이룸.