在我們當前的項目中,我們需要一些高級別的DBI用於不同的數據庫。它應該提供以下功能:C++ DBI類 - 最好的/開發者最友好的風格
- 在內存中緩存 - 的DBI應該能夠緩存所有讀取和更新寫作調用緩存中(我們的編碼上的應用是重螺紋,並且需要快速一直訪問當前數據)。內存高速緩存將基於
boost::multi_index
- 自動SQL建築 - 我們不想解析SQL語句在內存中緩存
來查找我們需要爲提供的功能:定義表佈局,做選擇,插入,更新,連接......,界面會變得非常複雜。
我們需要一個調用接口函數的好方法。
有很多風格,但我們找不到任何有用的用途。
這裏舉幾個例子:
SOCI
sql << "select name, salary from persons where id = " << id, into(name), into(salary);
我們不希望一些SQL語句,所以我們必須定義what
和from
以不同的方式。
pqxx
Conn.prepare("select_salary",
"select name, salary from persons where id = $1")
((string)"integer",prepare::treat_direct);
重載operator()
的大量使用僅僅是醜陋,但它可以爲我們工作了。
任何建議如何設計的界面?
謝謝你的想法,但我們已經評估過。ODB使用自己的編譯器/預處理器,大多數ORM框架使用數據庫相關的數據類型等等。我喜歡使用ODB的編碼風格,但是現在,我不知道如何實現,而不需要自己的編譯器/預處理器。由於我們也需要查詢內部緩存,所以我們必須能夠將sql數據類型映射到相應的內部類型。可能是你。 –
所以如果我們排除使用現有的框架,似乎最大的問題是查詢語法,是否正確?插入,更新和按ID檢索都可以由表,列等對象處理。如果你爲每個基本上運行「如果沒有在緩存中的表」執行「search_by」方法,那麼執行sql select select * from field where field_name is blah「? –
'search_by'聽起來不錯。今天晚上我會更深入地瞭解 –