Open6
Let's Build a Simple Database
これをRustで実装してみる
おおまかなアーキテクチャ
Frontend
- Interface
- SQL Command Processor
- Tokenizer
- Parser
- Code Generator
Backend
- Virtual Machine
- B-Tree
- Pager
- OS Interface
FrontendとしてREPLを作る
rustylineを使えば簡単に実装できる
ドットから始まる.exitなどのメタコマンドとSELECT/INSERTなどのステートメントのenumを定義
enum MetaCommandResult {
Exit,
Success,
UnrecognizedCommand,
}
enum Statement {
Insert,
Select,
Unrecognized(String),
}
小さい機能から実装していく
- 行の追加と全行の出力
- メモリーにのみ保存
- 単一のハードコードされたテーブルのみサポート