(3 Students)
- Provide index structures for faster data access:
- Primary Key Index
- Clustered Index
- Secondary Index on Keys
- Secondary Index on Non-Key Attributes
- Implement:
- Hash Index
- Tree Index
- Support:
- Index Scanning
- Range Search
- Maintain indexes during:
- INSERT
- UPDATE
- DELETE operations
- Evaluate and compare the performance of all index structures.
(3 Students – One Join Algorithm per Student)
- Implement the following join algorithms:
- Nested Loop Join
- Sort-Merge Join
- Hash Join
- Support combining tuples from multiple relations.
- Evaluate join conditions.
- Handle joins on large datasets.
- Evaluate and compare the performance of all join algorithms.
(2 Students)
- Manage the in-memory buffer pool.
- Maintain mapping between disk pages and memory frames.
- Handle page fetching and eviction.
- Manage page flushing to disk.
- Support page replacement policies.
(2 Students)
- Maintain system metadata.
- Store catalog information as database pages.
- Manage metadata for:
- Tables
- Columns
- Data Types
- Databases
- Constraints
- Support:
- Primary Keys
- Unique Constraints
- NOT NULL Constraints
- Foreign Keys
- Store index metadata.
- Cache catalog pages using the buffer manager.
- Handle catalog bootstrapping.
(2 Students)
- Store relations in sorted order based on one or more attributes.
- Sort unordered files if they are not sorted.
- Implement sorting algorithms:
- In-Memory Sorting
- External Sorting
- Support
ORDER BYprocessing on relations. - Enable:
- Range-based scans
- Ordered scans on sorted files
- Handle insertion into ordered files while preserving sort order.
(2 Students)
- Track available free space on disk pages.
- Manage free page lists.
- Identify suitable pages for insertion.
- Reclaim unused pages.
- Coordinate space reuse across the system.
- Handle page allocation and deallocation.
- Maintain file-level metadata.
(Individual Project – Max 4 Students)
Each student will implement a subset of SQL-99 fixed-length data types.
Collectively, the team supports all SQL-99 fixed-length data types.
All students will collectively decide the common system-wide data type framework and APIs.
Each student will then implement their chosen SQL-99 fixed-length data types using that framework.
- Define how data will be stored on disk:
- On-disk binary format
- Define a system-wide data type framework.
- Create APIs to:
- Store data
- Retrieve data
- Implement:
- Type validation
- Constraints
- Determine how a row will be formed using the data types.
- Implement:
- Type serialization (
Value -> Bytes) - Type deserialization (
Bytes -> Value)
- Type serialization (
- Specify:
- Byte alignment rules
- Padding rules
- Handle:
- Invalid values
- Out-of-range values
- Support comparison operations:
><=- Other relational operators
- Handle NULL values.
- Implement all functions related to fixed-length data types available in RDBMS systems.
(Individual Project – Max 3 Students)
Each student will implement a distinct subset of variable-length data types.
No two students should work on the same data type.
- Support variable-length data types:
- VARCHAR
- TEXT
- BLOB
- JSON
- Arrays
- User-defined data types
- Create APIs to:
- Retrieve
- Store
- Delete
- Update variable-length data
- Handle:
- Value encoding
- Value decoding
- Handle very large values:
- Data size larger than a page size
- Implement comparison between values.
- Support NULL value representation for variable-length data types.
(Individual Project – Max 3 Students)
Each student will implement a distinct query processing operator:
- Selection
- Projection
- Aggregation
- Subqueries
Collectively, the team supports filtering, projection, aggregation operations, and subqueries required for SQL query execution.
- Apply filtering conditions on tuples.
- Support comparison operators:
=<><=>=!=
- Support logical operators:
ANDOR
- Handle data types:
- INT
- FLOAT
- DATE
- STRING
- Evaluate predicates row by row.
- Support NULL semantics in conditions.
- Select specified attributes from tuples.
- Support:
- Column reordering
- Column elimination
- Construct output tuples.
- Maintain output schema.
- Implement aggregate functions:
- COUNT
- MIN
- MAX
- SUM
- AVG
- Handle different data types.
- Implement:
- GROUP BY
- HAVING
- Support NULL value handling.
- Maintain aggregate state.
- Produce aggregate results.
(1 Student)
- Support deletion of records.
- Support update of existing records.
- Manage reuse of freed space.
- Handle record relocation when required.
- Perform page reorganization and compaction.