gpt4 book ai didi

c++ - libspatialindex 是否需要重新序列化以进行简单更新?

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:16 29 4
gpt4 key购买 nike

我正在寻找具有以下功能的桌面应用程序的 c 或 c++ 库(没有服务器客户端,只需要编辑存储在磁盘中的数据)

  • 将空间数据存储在虚拟内存中,因此空间查询速度很快
  • 可以选择使用智能更新方式在磁盘中维护等效数据。更新不必是即时的,但可以缓冲。

. libspatialindex 似乎满足要求。但是从网页上有一点不清楚的是,比方说,我从磁盘加载了大量数据,只想更新一个很小的对象。 libspatialindex 是重新序列化整个数据并将其写入磁盘还是只更新需要更改的部分是否明智?

带有 RTree 的 sqlite 似乎正在实现这一点。但是,我想要一个简单的 c++ 库而不是整个 sql 东西。

还有其他选择吗? GEOS 有智能磁盘镜像更新功能吗?

最佳答案

libspatialindex 的 DiskStorageManager documentation说:

The disk storage manager uses two random access files for storing information. [...] The .idx file is loaded into main memory during initialization and is written to disk only after flushing the storage manager or during object destruction. In case of an unexpected failure changes to the storage manager will be lost due to a stale .idx file. Avoiding such disasters is future work.

... 这意味着只要索引条目发生变化,数据文件中的相应页面就会更新。

这在本质上类似于 SQLite 数据库,只是 SQLite 文件在崩溃后不会损坏。(SQLite 存储管理器似乎是 libspatialindex 的明显扩展。)


我建议考虑使用 SQLite;如果您不喜欢它的 C API,请使用包装它的框架,例如 Qt。

关于c++ - libspatialindex 是否需要重新序列化以进行简单更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14818414/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com