应该使用没有磁盘容器的Berkeley DB XML吗?

时间:2010-07-01 05:41:26

标签: c++ memory-management berkeley-db-xml

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

  • 没有性能下降和可靠性
  • 在需要时(或当数据集达到限制时)对内存数据进行加密的磁盘缓存
  • 按需加密磁盘缓存
  • 数据访问的XPath兼容性(访问不需要知道数据是否在磁盘内存中)
  • 不想创建磁盘上的数据库容器(在BDB XML的情况下),因为在执行完成后不需要它,删除通常会发生并且可能会有一些损失。
  • 解决方案需要独立于平台

那么,我应该使用BDB XML吗?它是最突出的解决方案并提供C ++ API(我的应用程序是在平台无关的C ++中),它提供了用于访问的XPath 2.0(它需要),但我想逐个节点地构建和使用XML,并且主要是按节点逐个访问并且想要在没有明确的磁盘容器的情况下使用它,这需要在exec期间经常清除并在之后删除,但是需要它不使用比指定缓冲区更多的内存并在需要时使用磁盘。

1 个答案:

答案 0 :(得分:0)

没有。查看Joel的"back to Basics"列。

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