This project is built for learning purposes and is not intended for production use.
DRDB (Datafusion + RocksDB) leverages DataFusion as its SQL engine and RocksDB as the storage backend.
The main goal of this project is to deepen my understanding of DataFusion and database internals. The ultimate objective is to develop a fully functional columnar database.
Please note that this is a personal learning project, and as I'm still exploring, there may be mistakes or inefficiencies in the implementation. Any feedback or suggestions are welcome!
-
2024/10/04: Set up the structure to be implemented to support
CREATE
andDROP
SQLs. -
2024/09/22: Introduced a customized
DeleteExec
to perform delete operations on rocksdb, and a series of planners and rule to make datafusion replace theDML::Delete
plan, which is not support, toDeletePlanNode
. -
2024/09/15: Introduced an abstraction layer between RocksDB and DataFusion's
TableProvider
. Implemented basicscan
andinsert_into
operations to enable reading and writing to RocksDB, currently supporting onlyDataType::Utf8
. Currently ugly code.
This project is still in its early stages. Here’s what I plan to work on:
- Implement a
serialization
layer for converting data betweenRecordBatch
androcksdb::DB
. - Extend DataFusion’s DML capabilities to support SQL commands like
INSERT INTO
andDELETE FROM
. - Extend DataFusion’s Sql2Rel to handle SQL commands like
CREATE TABLE
andDROP TABLE
. - Support different
DataType
s, now onlyDataType::Utf8
. - Support
ALTER TABLE
. - More...