C++ 是否应该在没有磁盘容器的情况下使用Berkeley DB XML?

C++ 是否应该在没有磁盘容器的情况下使用Berkeley DB XML?,c++,memory-management,berkeley-db-xml,C++,Memory Management,Berkeley Db Xml,我正在考虑使用BDBXML,作为内存中的应用程序数据存储。它是具有定义记录和数据记录的类似XML的数据,我为数据访问提供了类似XPath的quiring。它运行良好,除了内存溢出问题,在某些情况下会发生无法避免的问题(因此,只需使用ant来避免内存溢出),并且数据仍然需要进一步处理(因此,它还无法进入输出流)。所以,我打算使用分隔文件或XMl文件将数据缓存到磁盘上,并尝试推进序列化。那时我想到了使用一些嵌入式数据库,它可以给我磁盘上的缓存(当需要时),加密的磁盘上的缓存(在某些情况下,我仍然对磁

我正在考虑使用BDBXML,作为内存中的应用程序数据存储。它是具有定义记录和数据记录的类似XML的数据,我为数据访问提供了类似XPath的quiring。它运行良好,除了内存溢出问题,在某些情况下会发生无法避免的问题(因此,只需使用ant来避免内存溢出),并且数据仍然需要进一步处理(因此,它还无法进入输出流)。所以,我打算使用分隔文件或XMl文件将数据缓存到磁盘上,并尝试推进序列化。那时我想到了使用一些嵌入式数据库,它可以给我磁盘上的缓存(当需要时),加密的磁盘上的缓存(在某些情况下,我仍然对磁盘进行加密的XML缓存,但它们与内存溢出无关)。现在,我需要:

  • 无性能退化和可靠性
  • 需要时(或数据集达到限制时)对内存中数据进行加密的磁盘缓存
  • 按需加密磁盘缓存
  • 数据访问的XPath兼容性(访问不需要知道数据是否在磁盘上的内存中)
  • 不希望在磁盘上创建db容器(在BDBXML的情况下),因为在执行完成后不需要它,删除通常会产生一些代价
  • 解决方案需要独立于平台
那么,我应该使用BDBXML吗?它是最突出的解决方案,提供了C++ API(我的应用程序是在平台无关的C++)中,它提供了XPath 2访问(它需要的),但是我想一个节点一个节点地构建XML,主要是一个节点一个节点地访问XML,并希望在没有显式磁盘上容器的情况下使用它。磁盘上的容器需要在执行期间经常清除,然后删除,但需要它时使用的内存不超过指定的缓冲区,并在需要时使用磁盘。

否。请查看Joel的专栏

从根本上说,BDB-XML是生成和使用XML的好方法,而XML又是交换数据的好方法。但是XML不是为了在内存中使用,因此BDB-XML甚至不应该被考虑