我可以使用由oracle berkeley db java版的c实现(python bsddb)创建的bdb(berkeley db)文件吗?
我有一个 berkeley db 文件(*.bdb),它是由 C 实现(python bsddb 模块)创建的。 是否可以通过 Berkeley Db 的纯 java 实现来读取此文件? 我尝试使用 berkeley db java Edition (je) 阅读它,但不能。 je 抛出异常,表示无法检测到 berkeley 数据库。 伯克利数据库文件在不同的实现之间不能互操作吗? 如果是这样,为什么?
I have a berkeley db file (*.bdb) which is created by the C implementation(python bsddb module). Is it possible to read this file by a pure java implementation of Berkeley Db? I tried to read it using berkeley db java edition (je) but could not. je throws out an exception saying that it could not detect the berkeley database. Are berkeley db files not inter operable across different implementations? If so, why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
否。
根据 Berkeley DB Java 版常见问题解答、Berkeley DB 和 Berkeley DB Java 版彼此不兼容,因为它们具有不同的文件布局结构。
No.
According to the Berkeley DB Java Edition FAQ, Berkeley DB and Berkeley DB Java Edition are not compatible with one another because they have a different file layout structure.
请注意,Berkeley DB 共有三种不同的产品
请参见,维基百科
确实,“Berkeley DB”和“Berkeley DB Java 版”具有不同(即不兼容)的文件格式。 然而,“Berkeley DB”产品确实通过 JNI 提供了 Java API。 因此,可以从 Java 访问由 C 实现编写的数据文件,但不能使用“Berkeley DB Java 版”。
Note that there are three different products
see, Wikipedia
It is true that the "Berkeley DB" and "Berkeley DB Java Edition" have different (i.e. incompatible) file format. However, the "Berkeley DB" product does provide a Java API via JNI. So it is possible to access data file written by the C implementation from Java, but not with the "Berkeley DB Java Edition".
我没有研究过确切的答案,但我有同样的经历。 Java API 根本检测不到使用 python bdb 创建的数据库,也可以使用 cli utils 访问该数据库。 反之亦然。
I haven't researched the definite answer, but I have the same experience. A database created with pythons bdb, and also accessible with the cli utils, is not detected at all by the Java API. The reverse was also true.