我需要实现尽可能最快的方式来将密钥/值对存储在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