-
This is an implementation of key-value database storing the variable length records.
-
The record length must fit on one disk page.
-
The size of the page is fixed during the compilation. The current value is 4096 bytes.
-
All data are stored in one file. The file is implemented in class UnixFile.
-
The data to the UnixFile is transferred in pages of fixed size. This is managed by class DiskSpaceMgr.
-
Buffer manager (implemented in class BufferMgr) is responsible for transferring data from disk into memory and transferring data from memory to disk. Disk blocks in the buffer manager are kept in frames (class Frame), where "dirty" bit and "pin-count" are stored.
-
Heap file is a sequence of pages. It uses buffer manager for page management.
-
Pages in heap file are managed by directory of pages.
-
On the page of heap file variable length record can be stored.
-
The program is implemented in C++.
-
There is an extensive set of tests written in Google test format.
The project romzdb is based on:
-
RedBase project from Stanford University https://web.stanford.edu/class/cs346/2015/redbase.html
-
Book: "Database Management Systems" by Raghu Ramakrishnan and Johannes Gehrke http://pages.cs.wisc.edu/~dbbook/ and associated MiniBase project with tis book http://pages.cs.wisc.edu/~dbbook/openAccess/Minibase/minibase.html
-
Book: "Fundamentals of Database Systems" by Ramez Elmasri and Shamkant B. Navathe
-
Book: "Database System Concepts" by Abraham Silberschatz, Henry Korth, S. Sudarshan
-
Paper: "Principles of Database Buffer Management" by WOLFGANG EFFELSBERG and THEO HAERDER ACM Transactions on Database Systems, Vol. 9, No. 4, December 1984, Pages 560-595.
-
RocksDB: A Persistent Key-Value Store for Flash and RAM Storage. http://rocksdb.org/ https://github.com/facebook/rocksdb
-
BadgerDb: Fast key-value DB in Go. https://open.dgraph.io/post/badger/
-
BadgerDb: Software for lecture CS 564: Database Management Systems on University Wisconsin-Medison http://pages.cs.wisc.edu/~cs564-1/projects/BadgerDB/
In order to compile, and run all tests execute bash script: ./build-all.sh
Name: Zbigniew Romanowski
email: [email protected]