bdb:改进Berkeley DB的Ruby Bindings
http://www.ruby-china.org/attachments/090110/312cc54f6dcbd9ec8b0e9adfe55502c3.png Berkeley DB 是一个高性能的数据库系统,它在20世纪90年代初开始开发,他不是SQL数据库引擎驱动,而是用于存储键/值对数据 。BDB非常快,可在大多数的操作系统上使用, 并且是双许可开源和允许商业用途.对于初次使用者来说,它有几个优点:仅使用一个单位文件,PStore(受保护存储): 事务, 细纹锁, 可复制和支持热备份。虽然已经存在关于BDB的Ruby Bindings,但是Matt Bauer发布的Ruby Bindings加入了一些新的特性且能够快速容易的使用。当然,刚开始之前,你需要在你的操作系统中安装 Berkeley DB Library. OS X,MacPort中Berkeley BD 4.6 被称为db46,Ubuntu中为libdb-dev。另外,可以到Berkeley DB 的官方网站下载源代码,还有Matt的关于安装和使用Ruby Bindings 的说明文件.
使用范例:
env = Bdb::Env.new(0)env_flags =Bdb::DB_CREATE | # Create the environment if it does not already exist. Bdb::DB_INIT_TXN| # Initialize transactions Bdb::DB_INIT_LOCK | # Initialize locking. Bdb::DB_INIT_LOG| # Initialize logging Bdb::DB_INIT_MPOOL# Initialize the in-memory cache.env.open(File.join(File.dirname(__FILE__), 'tmp'), env_flags, 0);db = env.dbdb.open(nil, 'db1.db', nil, Bdb::Db::BTREE, Bdb::DB_CREATE | Bdb::DB_AUTO_COMMIT, 0) txn = env.txn_begin(nil, 0)db.put(txn, 'key', 'value', 0)txn.commit(0)p db.get(nil, 'key', nil, 0)db.close(0)env.close 好了,这不是最容易阅读的代码,但是Berkeley BD的功能远远大于它复杂的API。如果你对Berkeley DB 及其方式仍然感到新鲜,请查阅指南(略有些旧但不过时)来加快理解。
英文原文:http://www.rubyinside.com/bdb-improved-ruby-bindings-for-berkeley-db-1438.html
页:
[1]