Open6

Let's Build a Simple Database

pqppqpqppq

おおまかなアーキテクチャ
Frontend

  • Interface
  • SQL Command Processor
    • Tokenizer
    • Parser
    • Code Generator

Backend

  • Virtual Machine
  • B-Tree
  • Pager
  • OS Interface
pqppqpqppq

ドットから始まる.exitなどのメタコマンドとSELECT/INSERTなどのステートメントのenumを定義

enum MetaCommandResult {                                                                                              
    Exit,                                                                                                             
    Success,                                                                                                          
    UnrecognizedCommand,                                                                                              
} 

enum Statement {                                                                                                      
    Insert,                                                                                                           
    Select,                                                                                                           
    Unrecognized(String),                                                                                             
}                                                                                                                     
pqppqpqppq

小さい機能から実装していく

  • 行の追加と全行の出力
  • メモリーにのみ保存
  • 単一のハードコードされたテーブルのみサポート