我可以使用 oracle berkeley db java edition 的 c 实现(python bsddb)创建的 bdb(berkeley db)文件吗?

Posted

技术标签:

【中文标题】我可以使用 oracle berkeley db java edition 的 c 实现(python bsddb)创建的 bdb(berkeley db)文件吗?【英文标题】:can i use bdb(berkeley db) file created by c implementation (python bsddb) by oracle berkeley db java edition? 【发布时间】:2008-10-12 16:23:31 【问题描述】:

我有一个由 C 实现(python bsddb 模块)创建的 berkeley db 文件 (*.bdb)。是否可以通过 Berkeley Db 的纯 Java 实现来读取此文件?我尝试使用 berkeley db java edition (je) 阅读它,但不能。 je 抛出一个异常,说它无法检测到 berkeley 数据库。 berkeley db 文件是否不能跨不同的实现互操作?如果有,为什么?

【问题讨论】:

【参考方案1】:

没有。

根据Berkeley DB Java Edition FAQ,Berkeley DB 和 Berkeley DB Java 版彼此不兼容,因为它们具有不同的文件布局结构。

【讨论】:

【参考方案2】:

请注意,共有三种不同的产品

    Berkeley DB -- C 实现 伯克利 DB Java 版 伯克利数据库 XML

见,Wikipedia

确实,“Berkeley DB”和“Berkeley DB Java 版”具有不同(即不兼容)的文件格式。但是,“Berkeley DB”产品确实通过 JNI 提供了 Java API。因此,可以从 Java 访问 C 实现编写的数据文件,但不能使用“Berkeley DB Java 版”。

【讨论】:

【参考方案3】:

我没有研究过确切的答案,但我有同样的经历。 Java API 根本检测不到使用 pythons bdb 创建的数据库,也可以使用 cli utils 访问该数据库。反之亦然。

【讨论】:

以上是关于我可以使用 oracle berkeley db java edition 的 c 实现(python bsddb)创建的 bdb(berkeley db)文件吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Java 将记录插入 Berkeley DB

如何跟踪存储在 Oracle Berkeley DB XML 中的文件的更改

Oracle - Berkeley DB XML Java API - XML 查询以获取多个级别的属性值

数据库连接 MySQL 或 Berkeley DB

在 Berkeley DB JE 中进行比较和交换?

如何在 Berkeley DB 5.2.28 中使用堆访问方法