์ค๋ ๊ธฐ๋ค๋ฆฌ์
จ์ต๋๋ค!!!
BlueBase: Python์ผ๋ก ๋ฐ๋ฐ๋ฅ๋ถํฐ ์ง์ ๋ง๋ค์ด๋ณด๋ DBMS
https://theeluwin.github.io/BlueBase/
๊ฒฐ๊ตญ ์์ฑ์ ๋ชปํ์ง๋ง, ์ผ๋จ ๊ณต๊ฐํ ์ ์๋ ๋ถ๋ถ์ด๋ผ๋ ๊ณต๊ฐํฉ๋๋ค.
RedBase DBMS์ ๊ตฌ์ฑํ๋ PF, RM, IX, SM, QL ์ค PF์ RM์ ์ฌ๋ฌ๋ถ๋ค์ด ์ง์ ๊ตฌํ ํ ์ ์๊ฒ, ๊ณผ์ ์ ํํ๋ก ์ ๊ณตํฉ๋๋ค.
PF๋ paged file์ ์ฝ์๋ก, file์ page ๋จ์๋ก ๊ด๋ฆฌํ๋ ์ปดํฌ๋ํธ์
๋๋ค. ๋์ถฉ 4096 ๋ฐ์ดํธ ๋จ์๋ก ๊ด๋ฆฌํ๋๋ฐ์, file์ ๋ฐ๋ก๋ฐ๋ก readํ๊ฑฐ๋ writeํ์ง ์๊ณ , ์์ฃผ ์ฌ์ฉ๋๋ page๋ ๊ฐ๋ฅํ memory์ ์๋๋ก ์ค๊ฐ์ buffer manager๋ฅผ ๋ก๋๋ค. ๊ทธ๋ ๋ค๋ฉด buffer์ ๊ณต๊ฐ์ด ๋ชจ์๋ผ๋ฉด? buffer์ ์๋ page ์ค ๋๊ตฐ๊ฐ๋ฅผ evict ํ ์๋ฐ์ ์์ต๋๋ค. ๊ทธ๋ผ ๋ญ ๊ธฐ์ค์ผ๋ก ํ๋ฉด ์ข์๊น์? ์ด ๋ถ๋ถ์ ์ ์๊ฐํด์ ๊ตฌํํด๋ณด๊ณ , ์ฑ๋ฅ์ ๋น๊ตํด๋ณด๊ธฐ ๋ฐ๋๋๋ค. ์ ๊ฐ cache hit/miss ์๋ฎฌ๋ ์ด์
๊ตฌํํด๋๊ฒ ์์ผ๋, ์ custom ๋ณด๋ค ๋์ ์ฑ๋ฅ์ ๋ฌ์ฑํด์ฃผ์ธ์!
์ดํ RM์ record management์ ์ฝ์์ธ๋ฐ, PF๋ฅผ ์ฌ์ฉํด์ record๋ค์ ๊ฐ์ ธ์ค๊ฑฐ๋, ์๋ก ๋ฃ๊ฑฐ๋ ๋ฑ์ ํ๊ฒ ํด์ค๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ ์ฒด record๋ฅผ ์ํํ๋ scan ์ฐ์ฐ์ด ์ค์ํ๊ฒ ์ฃ . ์ด ๋ถ๋ถ์ ๊ตฌํํ๋ ๊ฒ์ด ํต์ฌ์
๋๋ค. record๋ page ์ ๋ถ๋ถ์ bitmap์ ๋ฌ์ slot์ด ๋น์ด์๋์ง ์๋์ง๋ฅผ ํ์ธํ๋๋ฐ, ๋ง์ฝ record ์ญ์ ๋ช
๋ น์ด ๋ง์ง๋ง slot์ ๋น์ฐ๊ฒ ๋๋ค๋ฉด ํด๋น page๋ ๋์ด์ ํ์ ์๊ฒ ์ฃ . ๊ทธ๋ ์ง๋ง ์ด๋ฅผ ๋ฐ๋ก free๋ก ๋ง๋๋๊ฑด ์กฐ๊ธ ๋น์ผ ์ฐ์ฐ์ด ํ์ํฉ๋๋ค. free page list๋ฅผ ๋ค์ ๊ณ์ฐํด์ผํ๊ฑฐ๋ ์. ๊ทธ๋์ ๋ณดํต DBMS์์๋ ์ด๋ฌํ ์์
๋ค์ vacuum ์ฐ์ฐ์ผ๋ก ํด๊ฒฐํฉ๋๋ค. ์ถ๊ฐ๋ก, ์ง๊ธ์ ๊ณ ์ ๊ธธ์ด record๋ง ๋ค๋ฃฐ ์ ์์ต๋๋ค๋ง, ๊ฐ๋ณ ๊ธธ์ด๋ฅผ ํ์ฉํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น์? ์ด ๋ถ๋ถ๋ค์ ์์ ๋กญ๊ฒ ๊ตฌํํด๋ณด์๋ฉด ์ข๊ฒ ์ต๋๋ค.
๋ฌธ์์ ํ
์คํธ๋ ๋ชจ๋ ๊ณต๊ฐ๋์ด์์ต๋๋ค. ๊ธฐ์ฌํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค! ๋ค๋ง, ์ ๋ต ์ฝ๋์ ํต์ฌ ๋ก์ง์ ๋ง์ง๋ง๊น์ง ์ ํผ์ ํด๋ณด๊ณ ์ถ์ต๋๋ค (๋์ ).
https://github.com/theeluwin/BlueBase