我需要實現儘可能最快的方式來將密鑰/值對存儲在Linux上的分佈式系統中。數據庫記錄很小,平均爲256字節。我打算使用open(),write()和read()系統調用,並直接在文件中的某個偏移量處編寫鍵值對。我可以省略fdatasync()系統調用,因爲我將使用帶有電池的SSD磁盤,所以如果發生意外的系統關閉,我不必擔心ACID兼容性問題。 Linux已經提供了磁盤緩存實現,所以在已經加載到內存中的扇區上不會發生讀/寫操作。這(我認爲)將是存儲數據的最快方式,比任何其他緩存數據庫引擎(例如GT.M或Intersystem的Globals)要快得多。如果我有2個數據服務器(1個本地服務器和1個遠程服務器),那麼這個數據服務器就可以使用NFS來掛載另一個Linux服務器的文件系統, ,我會發出2 open(),2 write()和2 close()調用。如果遠程服務器上的事務失敗,我會將其標記爲「不同步」,並在遠程服務器恢復時再次複製正確的文件。實現高性能分佈式文件系統/數據庫
您如何看待這種方法?它會很快嗎?我可以在UDP上使用NFS,這樣我就可以避免TCP Stack的開銷。
優勢列表到目前爲止是這樣的:
- Linux磁盤高速緩存中重用
- 的幾行代碼
- 高性能
我會用C語言來編寫此要找到在文件中的記錄我將保留一個指向物理位置的指針。
等等,你爲什麼需要寫這個?這是爲了一個班級什麼的? – chrisaycock 2012-01-10 17:59:01
不,它適用於Web應用程序 – Nulik 2012-01-10 18:03:00
您是否考慮將GDBM用作基本庫? – 2012-01-10 20:33:30