六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 40|回复: 0

bdb:改进Berkeley DB的Ruby Bindings

[复制链接]

升级  92%

12

主题

12

主题

12

主题

童生

Rank: 1

积分
46
 楼主| 发表于 2013-1-15 03:02:37 | 显示全部楼层 |阅读模式
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
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表