问题标签 [berkeley-db]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9915 浏览

java - 使用 Java 将记录插入 Berkeley DB

我似乎找不到用 Java 构建 Berkeley DB 并将记录插入其中的示例代码。有样品吗?我也不是指 Berkeley DB Java 版。

0 投票
1 回答
862 浏览

performance - 部署高性能 Berkeley DB 系统的最佳实践

我希望使用 Berkeley DB 创建一个简单的键值存储系统。密钥将是 SHA-1 哈希,因此它们位于 160 位地址空间中。我有一个简单的服务器工作,这很容易,这要归功于 Berkeley DB 网站上写得很好的文档。但是,我对如何最好地建立这样一个系统,以获得良好的性能和灵活性有一些疑问。希望有人对 Berkeley DB 有更多经验并且可以帮助我。

最简单的设置是一个进程,一个线程,处理一个数据库;使用事务在这个数据库上执行插入和获取。

方案一:单进程、多线程、单DB;进程中的所有线程都在此数据库上执行插入和获取。

  • 使用多线程是否提供了很大的性能改进?有一个单独的数据库,因此它在一个磁盘上,因此我猜我不会得到太多的提升。但是,如果 Berkeley DB 在内存中缓存了很多东西,那么也许一个线程能够运行并从缓存中响应,而另一个线程阻塞等待磁盘?我正在使用 GNU Pth,用户级协作线程。我不熟悉 Pth 的细节,所以我也不确定使用 Pth 是否可以在另一个用户级线程被阻塞时运行一个用户级线程。

备选方案 2:单个进程、一个或多个线程、多个 DB,其中每个 DB 覆盖键的 160 位地址空间的一小部分。

  • 我看到拥有多个数据库的一些优点:我们可以将它们放在不同的磁盘上,减少争用,如果我们想这样做的话,更容易将数据库移动/分区到不同的物理主机上。有没有人有这种设置的经验并看到显着的好处?

备选方案 3:多个进程,每个进程都有一个线程,每个进程处理一个数据库,该数据库覆盖了 160 位密钥地址空间的一小部分。

  • 这具有使用多个 DB 的优点,但我们使用的是多个进程。这比第二种选择更好吗?我怀疑使用进程而不是用户级线程来获得并行性会让你获得更好的 SMP 缓存行为(更少的无效等),但是我会被所有进程开销和上下文切换杀死吗?

我很想知道是否有人尝试了这些选项,并看到了积极或消极的结果。

谢谢。

0 投票
2 回答
826 浏览

svn - Subversion 存储库类型

如何判断存储库是使用 BerkeleyDB 还是 FSFS?

0 投票
1 回答
1335 浏览

database - 不同的 BerkeleyDB 版本有什么区别,我应该选择哪个?

很多事情都依赖于 BDB。当我去为我的服务器安装预打包的软件时,每个软件似乎都需要不同版本的 BerkeleyDB。但似乎当我编译它们时,我可以指定一个特定的 BDB 版本。(涉及的软件包括 Postfix、OpenLDAP 和 Cyrus IMAP。)

我偶尔在 python 项目中使用 BDB,但我不知道不同版本对创建的数据库文件有什么影响。

我想知道所有不同 Berkeley DB 版本之间的区别。似乎很难找到有关不同版本以及任何 API 或文件格式差异、版本之间不兼容等的信息。

我知道至少存在以下版本:

  • 1.85(历史版本?)

  • 2.x

  • 3.x

  • 4.1

  • 4.2

  • 4.3

  • 4.4

  • 4.5

  • 4.6

  • 4.7

  • 4.8

  • 5.0

0 投票
3 回答
29556 浏览

sqlite - Berkeley DB SQL 与 SQLite 相比有多快?

Oracle 最近发布了 SQLite 的 Berkeley DB 后端。我碰巧有一个数百兆字节的 SQLite 数据库,它可以很好地受益于“改进的性能、并发性、可伸缩性和可靠性”,但 Oracle 的网站似乎缺乏任何改进的衡量标准。这里有人做过基准测试吗?

0 投票
1 回答
156 浏览

perl - 为什么我在插入 Berkeley DB 时会收到来自 Perl 的宽字符警告?

我正在对伯克利数据库进行实验。我只是从 DB a 中删除内容并将键值对重新插入 DB b。但是,在将键值对插入此 DB b 时,出现宽字符错误。帮助?

0 投票
1 回答
541 浏览

java - 是否可以从纯 Java 访问 BDB?

我正在尝试访问作为 BDB 数据库的“cert8.db”mozilla 文件。我知道有语言绑定,其中包括 Java,但我正在尝试构建一个多平台应用程序,所以我认为使用这样的 JNI 会是一个问题。

提前致谢。

0 投票
4 回答
1942 浏览

c++ - 使用散列访问将许多键值对快速插入 berkeley db

我正在尝试使用 berkeley db 构建一个散列,该散列应包含许多元组(大约 18GB 的​​键值对),但在我的所有测试中,插入操作的性能会随着时间的推移而急剧下降。我编写了这个脚本来测试性能:

也许你可以告诉我为什么一段时间后“放置”操作需要越来越长的时间,也许你可以告诉我如何解决这个问题。

谢谢你的帮助,安德烈亚斯

0 投票
2 回答
1574 浏览

php - 有没有人有使用 berkeley db 和 PHP 的经验?

我必须访问和写入其他应用程序共享的一些 berkeley db 文件。

我真的没有发现任何关于将它与 PHP 一起使用的信息。它似乎真的不是很受欢迎。

有没有人有任何链接或资源可以用来让事情顺利进行?

谢谢!

0 投票
1 回答
420 浏览

c++ - 使用 Berkeley DB、C++ STL 接口进行批量读取

我正在使用 Berkeley DB 4.8 的 C++ STL API,并且我能够对使用 begin() 创建的 db_map 或 db_multimap const 迭代器使用批量检索,但不是从 find()(或用于 multimaps 的 lower_bound() 创建的迭代器) )。

我很欣赏 find() 的单个项目随机访问使用会浪费使用批量检索,但我想从我的 find() 点向前以 btree 顺序访问许多记录,因此批量检索会对我有所帮助。底层的 C++ api 似乎允许它,是否可以从 STl API 获得?