应该在没有磁盘容器的情况下使用 Berkeley DB XML?
Posted
技术标签:
【中文标题】应该在没有磁盘容器的情况下使用 Berkeley DB XML?【英文标题】:Should use Berkeley DB XML without an on disk container? 【发布时间】:2010-07-01 05:41:25 【问题描述】:我正在考虑在内存应用程序数据存储中使用 BDB XML。它是具有定义记录和数据记录的类似 XML 的数据,我提供了 XPath,例如查询数据访问。它运行良好,除了内存溢出问题,在某些情况下无法避免(所以,只是为了避免内存溢出),并且仍然需要数据进行进一步处理(所以,它不能得到输出流呢)。所以,我打算使用分隔或 XMl 文件将数据缓存到磁盘,也正在尝试 BOOST 序列化。那就是当我想到使用一些嵌入式数据库时,它可以给我磁盘缓存(需要时),在磁盘缓存上加密(在某些情况下,我仍然对磁盘进行一些加密的 XML 缓存,但它们与内存溢出无关)。现在,我需要:
没有性能下降和可靠性 在需要时(或当数据集达到限制时)对内存数据进行加密磁盘缓存 按需加密磁盘缓存 数据访问的 XPath 兼容性(访问不需要知道数据是否在磁盘的内存中) 不想创建磁盘数据库容器(在 BDB XML 的情况下),因为在执行完成后不需要它,如果并且可能会产生一些损失,通常会删除。 解决方案需要独立于平台那么,我应该使用 BDB XML 吗?它是最突出的解决方案并提供 C++ API(我的应用程序是独立于平台的 C++),它提供了 XPath 2.0 用于访问(它需要),但我想在其中一个节点一个节点地构建和 XML,并且主要是一个节点地访问节点并且想要在没有明确的磁盘容器的情况下使用它,该容器需要在执行期间经常清除并随后删除,但需要它不使用超过指定缓冲区的内存并在需要时使用磁盘。
【问题讨论】:
【参考方案1】:没有。查看 Joel 的 "back to Basics" 专栏。
从根本上说,BDB-XML 是一种生成和使用 XML 的好方法,而 XML 反过来又是一种交换数据的好方法。但 XML 不适合在内存中使用,因此 BDB-XML 甚至不应该纳入考虑范围。
【讨论】:
以上是关于应该在没有磁盘容器的情况下使用 Berkeley DB XML?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Kubernetes 中获取容器的磁盘使用情况(没有 docker 命令)?
如何在不安装的情况下在应用程序中使用 Berkeley DB