2013-11-14 42 views
2

對於一個項目,我正在尋找一個簡單的數據庫,它是用C(或C++)編寫的跨平臺應用程序。 在調查了HamsterDB(看起來很有保證)後,我發現它依賴於窗口上的提升。 因此,替代品不應該依賴於STL或其他庫,因爲應用程序將運行在不同的Eco系統(如arduino,symbian,android,windows)上並在不同的IDE上編譯。關鍵值平面文件數據庫簡單的C或C++

它將存儲噸20密爾鍵(但通常低於50k鍵),IO會很低。

因此,它應該儘可能清潔C(或C++)。

有人能告訴我什麼東西可以滿足這個需求嗎?

+0

你看了看[sqlite](http://www.sqlite.org/) – amdixon

+0

是boost依賴問題嗎?對於Windows,您可以下載預編譯的庫,甚至可以使用預編譯的依賴關係來編譯hamsterdb庫:https://github.com/cruppstahl/hamsterdb-alien。我不知道有關Arduino/Symbian/Android - 這裏是一個問題嗎? – cruppstahl

+0

sqlite,是的,可能是最簡單的編譯/端口在所需的平臺(線程和互斥量也使用),但肯定是一個小的矯枉過正的需要 – alfetta

回答

0

看起來像Berkeley DB是你的選擇。不確定嵌入的部分(特別是對於arduino)。

您可以在standford的課程中找到完整的教程。

+0

檢查BDB,肯定是一個很好的解決方案,但再次使用套接字。這將在某些平臺上成爲一個nogo。 – alfetta

2

LevelDB是你在找什麼。它用C++編寫,但C函數也可用。

LevelDB is a fast key-value storage library written at Google that provides 
an ordered mapping from string keys to string values. 
+0

在對LevelDB進行簡短檢查之後,如果沒有線程和互斥鎖支持,我們可能無法在幾臺所需機器上進行編譯。我認爲LevelDB的性能是基於這些觀點的一部分,我們希望使用它們,但我們無法保證在所有平臺上都擁有它們,並且希望爲所有平臺保留一個代碼庫。即使在Windows/MinGW下編譯也不容易。 – alfetta

+0

什麼平臺 - 運行需要數據庫的應用程序 - 沒有線程支持?你聽起來有點怪異。 – Lothar