我正試圖設計一個帶索引的數據庫表的內存模擬。我實現了一個整潔的DSL來查詢表,看起來像這樣如何設計索引表?
table.select do
age > 44
name == "Adam"
end
,併產生了一堆Condition
類的實例,如EqCondition
,GteCondition
等嗯,這是比較容易的部分。 Table
檢查這些條件並選擇適當的索引來執行查詢。我堅持的是什麼樣的參數Index#select
接受?如果它接受與表格的選擇方法相同的參數,它有兩次做同樣的工作。假設我們需要選擇年齡大於25的每個人。首先,Table類確定有一個可以使用的(年齡,名稱)索引。然後,索引應該確定這是一個範圍查詢,只涉及部分密鑰並相應地執行它。
我在問一些關於如何正確設計的想法(或許是在真實數據庫中做了一些簡單的版本)?
PS。這是Ruby,但我認爲它不相關。在Java/C#它會看起來像table.select(new GtCondition("age", 44), new EqCondition("name", "Adam"))