Simple Database Management System
This project is an implementation of a basic Database Management System (implemented from scratch) in C++.
The main modules of this DBMS are:
- A Paged File (PF) System and the operations of a record-based file (RBF) manager. The PF component provides classes and methods for managing files and pages in files and the RBF manages the records in pages.
- A Relation Manager on top of the basic paged file system.
- An Index Manager which provides classes and methods for managing persistent indexes over unordered data records stored in files. The type of hashing used is Linear Hashing, which is a dynamic hash table algorithm invented by Witold Litwin (1980), and later popularized by Paul Larson . Linear hashing allows for the expansion of the hash table one slot at a time and provides O(1) performance for exact-match predicates but also offers O(N) support for range predicates.
- An extended Relation Manager (RM), which cover the orchestration of Record Based File Manager (RBF) and Index Manager (IX), and the implementation of a Query Engine (QE) component which provides classes and methods for answering SQL queries.
Authors: Joel Fuentes & Eduard Sedakov.
Bibliography used:
R. Ramakrishnan and J. Gehrke. Database Management Systems. McGraw- Hil, 2002.