问题标签 [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.
java - 使用 Java 将记录插入 Berkeley DB
我似乎找不到用 Java 构建 Berkeley DB 并将记录插入其中的示例代码。有样品吗?我也不是指 Berkeley DB Java 版。
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 缓存行为(更少的无效等),但是我会被所有进程开销和上下文切换杀死吗?
我很想知道是否有人尝试了这些选项,并看到了积极或消极的结果。
谢谢。
svn - Subversion 存储库类型
如何判断存储库是使用 BerkeleyDB 还是 FSFS?
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
sqlite - Berkeley DB SQL 与 SQLite 相比有多快?
Oracle 最近发布了 SQLite 的 Berkeley DB 后端。我碰巧有一个数百兆字节的 SQLite 数据库,它可以很好地受益于“改进的性能、并发性、可伸缩性和可靠性”,但 Oracle 的网站似乎缺乏任何改进的衡量标准。这里有人做过基准测试吗?
perl - 为什么我在插入 Berkeley DB 时会收到来自 Perl 的宽字符警告?
我正在对伯克利数据库进行实验。我只是从 DB a 中删除内容并将键值对重新插入 DB b。但是,在将键值对插入此 DB b 时,出现宽字符错误。帮助?
java - 是否可以从纯 Java 访问 BDB?
我正在尝试访问作为 BDB 数据库的“cert8.db”mozilla 文件。我知道有语言绑定,其中包括 Java,但我正在尝试构建一个多平台应用程序,所以我认为使用这样的 JNI 会是一个问题。
提前致谢。
c++ - 使用散列访问将许多键值对快速插入 berkeley db
我正在尝试使用 berkeley db 构建一个散列,该散列应包含许多元组(大约 18GB 的键值对),但在我的所有测试中,插入操作的性能会随着时间的推移而急剧下降。我编写了这个脚本来测试性能:
也许你可以告诉我为什么一段时间后“放置”操作需要越来越长的时间,也许你可以告诉我如何解决这个问题。
谢谢你的帮助,安德烈亚斯
php - 有没有人有使用 berkeley db 和 PHP 的经验?
我必须访问和写入其他应用程序共享的一些 berkeley db 文件。
我真的没有发现任何关于将它与 PHP 一起使用的信息。它似乎真的不是很受欢迎。
有没有人有任何链接或资源可以用来让事情顺利进行?
谢谢!
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 获得?