我正在为桌面应用程序寻找c或c++库(没有服务器-客户机,只需要编辑存储在磁盘中的数据),具有以下特性
。libspatialindex似乎满足了需求。但是有一件事从网页上还不清楚,那就是,让我们说,我从磁盘上加载了大量的数据,只想更新一个很小的对象。libspatialindex是重新序列化整个数据并将其写入磁盘,还是只更新需要更改的部分是明智的?
带有RTree的sqlite似乎正在实现这一目标。但是,我希望有一个简单的c++库,而不是所有的sql库。
还有其他的超级药物吗。GEOS是否有任何智能磁盘映像更新功能?
发布于 2013-02-11 20:43:40
libspatialindex的DiskStorageManager文档说:
磁盘存储管理器使用两个随机访问文件来存储信息。..。.idx文件在初始化时加载到主内存中,只有在刷新存储管理器或销毁对象时才会写入磁盘。如果发生意外故障,存储管理器的更改将因陈旧的.idx文件而丢失。避免这类灾害是今后的工作。
..。这意味着,每当索引项更改时,数据文件中的相应页面都会被更新。
这在本质上类似于SQLite数据库,只是SQLite文件在崩溃后不会损坏。( SQLite存储管理器似乎是libspatialindex的一个明显扩展。)
我建议考虑使用SQLite;如果您不喜欢它的wraps,请使用一个封装它的框架,例如Qt。
https://stackoverflow.com/questions/14818414
复制相似问题