问题标签 [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.
database - can a berkeley database be opened and accessed from multiple programs at the same time?
according to the Berkeley documentation the Transactional (TS) and the Concurrent Datastore version of the Database, multiple threads may access (and change) the database.
Does this also mean that I can have 2 programs linked to the berkely 'client' and have them access the same database file without any problems?
(I ask, since for a separate database server this would be no problem of course, but in the case of Berkeley the database engine is linked long with your program)
thanks!
R
atomic - Berkeley DB 使用的原子性如何?
我正在编写一个简单的应用程序,其中包含 24 个项目的哈希值,以便在程序执行中保持不变,因此 Berkeley DB (DBM) 应该非常适合这项任务。
这只是为了好玩。
但我想知道是否使用它(与 Ruby 一起使用),然后当用户按下 CTRL-C 时,执行就会停止。这种情况下,是不是数据都乱了?
例如,如果 DB 中的值为 63,我将其加 1(变为 64)
那么,当“最重要的”1 被写入但 0 还没有被写入时,CTRL-C 是否会发生?在这种情况下,DB 中的值将是 127 而不是 63 或 64。如果不是 Ruby 而是 C 语言,并且用户使用“关闭窗口”或“杀死”来终止进程怎么办?想一想,硬盘驱动器可能一次将这个字节(或4字节)全部写入硬盘表面,所以这种情况不应该发生。
如果 CTRL-C 不会导致这种情况发生,那么停电或我踢电源插头可能会导致这种情况发生?例如,当值第一次缓存在 RAM 中,当它被写入硬盘时,我踢了电源插头,硬盘驱动器在写入 0 之前就断电了。我知道百万分之一,这不会发生,但这只是好奇的问题。
另一方面,如果我的脚本是
- 减少硬币价值
- 在他的库存中给用户一个“汉堡包”
然后当用户按下 CTRL-C 时,它恰好发生在上面的 (1) 和 (2) 之间,那么用户将拥有更少的硬币,并且不会得到汉堡包。
为了防止这一切发生,那就是使用SleepyCat、SQLite或MySQL的事务方法,这些都不会发生?
ruby - Ruby 上的 Berkeley DB 中的键和值必须是字符串,而不是 int、float 或任何其他类型吗?
似乎如果我在 Ruby 上使用 Berkeley DB (DBM),哈希的键和值必须是字符串?它们可以是其他数据类型吗?
结果:
java - Java 中的哪个 API 用于文件读取以获得最佳性能?
在我工作的地方,曾经有每个文件超过百万行的文件。尽管服务器内存超过 10GB,而 JVM 内存为 8GB,但有时服务器会挂起片刻并阻塞其他任务。
我分析了代码,发现虽然文件读取内存使用率经常增加千兆字节(1GB 到 3GB),然后突然恢复正常。似乎这种频繁的高低内存使用会挂起我的服务器。当然,这是由于垃圾收集。
我应该使用哪个 API 来读取文件以获得更好的性能?
现在我BufferedReader(new FileReader(...))
用来阅读这些 CSV 文件。
过程:我如何读取文件?
- 我逐行读取文件。
- 每行都有几列。基于我相应地解析它们的类型(double中的成本列,int中的访问列,String中的关键字列等)。
- 我在 HashMap 中推送符合条件的内容(访问 > 0),最后在任务结束时清除该 Map
更新
我读取 30 或 31 个文件(一个月的数据)并将符合条件的文件存储在地图中。后来这张地图被用来在不同的桌子上找到一些罪魁祸首。因此读取是必须的,存储数据也是必须的。虽然我现在已经将 HashMap 部分切换到 BerkeleyDB,但是读取文件时的问题是相同的,甚至更糟。
ruby - 为什么在 Ruby 中使用 DBM 时,db[1] = 2 没问题,但 print db[1] 会报错?
在 Ruby 上,使用 DBM 时
有人知道 db[1] = 2 没问题,但是打印出 db[1] 会出错吗?
如果它要求 db["1"] 有效,那么它为什么不适用于两种情况而仅适用于一种情况?
multithreading - 多线程应用程序中的 Berkeley DB
在多线程应用程序中使用 berkeley DB (bdb) 句柄的最佳方式是什么?
让每个线程打开自己的句柄会更好吗?或者,
打开单个句柄并让每个线程执行 txn_begin { } txn->commit() 会更好吗?
哪个更适合缩放?我正在使用带有 DB_THREAD 标志的事务数据存储。
谢谢
java - Berkeley DB JE - 打开游标计数
有没有办法向 API 询问打开的游标列表(或至少是当前打开游标的数量)?
svn - 如何检查我的 SVN 存储库使用的文件系统?
我已经创建了我的存储库并且已经使用了一段时间。我想检查它正在使用什么文件系统数据存储:Berkeley DB 或 FSFS。我不确定如何检查。我看过 svnadmin、svnlook 等。关于如何做到这一点的任何提示?
berkeley-db - 将 Berkley Db 从 XP 迁移到 Ubuntu
我有一个 bdb 数据库,我一直在我的 XP 机器上使用它。我现在正在将我的大部分应用程序等迁移到 Linux(准确地说是 Ubuntu 9.10)。
我不确定简单地移动数据库文件是否有效。以前有没有人经历过将 BDB 数据库从 windows 平台迁移到 Linux 的过程,如果是,过程是什么?
此外,在“迁移”期间,我需要特别注意什么(即“陷阱”)?
linker - 链接 C++ - BDB - LNK2001
BDB 在同一台 PC 上编译,在同一 VS 下。
#include <db_cxx.h>
int main(){
Db b(NULL, 0);
return 0;
}
1>main.obj : 错误 LNK2001: 无法解析的外部符号 ""public: virtual __thiscall Db::~Db(void)" (??1Db@@UAE@XZ)"
1>main.obj : 错误 LNK2001: 无法解析的外部符号 ""public: __thiscall Db::Db(class DbEnv *,unsigned int)" (??0Db@@QAE@PAVDbEnv@@I@Z)"
有什么问题?