NoSQL是现在互联网Web2.0时代备受关注的技术之一,被用来存储大量的非关系型的数据。Berkeley DB作为一款优秀的Key/Value存储引擎自然也在讨论之列。最近使用BDB来发一个KV系统,并将这段时间的BDB的学习和使用经验记录如下。(项目中使用了BDB的4.8.30版本,本文所有涉及的具体问题都基于该版本)。
1. Berkeley DB的简介
Berkeley DB(BDB)是一个高性能的嵌入式数据库编程库(引擎),它可以用来保存任意类型的键/值对 (Key/Value Pair),而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库,支持最大256TB的数据。
BDB提供诸如C语言,C++,Java,Perl,Python,Tcl等多种编程语言的API,并且广泛支持大多数类Unix操作系统和Windows操作系统以及实时操作系统(如 VxWorks)。
1991年,Berkeley DB的第一个版发行(Linux系统也在这一年诞生),其最初的开发目的是以新的HASH访问算法来代替旧的hsearch函数和大量的dbm实现,该版本还包含了B+树数据访问算法。
1992年,BSD UNIX第4.4发行版中包含了Berkeley DB1.85版。基本上认为这是Berkeley DB的第一个正式版。
1996年,Sleepycat软件公司成立,提供对Berkeley DB的商业支持。
2006年,Sleepycat被Oracle收购,当时最新版本是4.7.25。
以上来自:http://blog.sina.com.cn/s/blog_502c8cc40100yqkj.html
下面说一下实战吧:
1. 安装
http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
下载并解压。
cd db-xxx cd build_unix ./dist/configure --prefix=/home/work/opt/berkeleydb --enable-cxx #其中 --enable-cxx来启动编译c++的相关选项,如果没有enable那么编译出的就不能使用berkeley db c++对应的接口。 之后: make make install
添加对应的环境变量:
C_INCLUDE_PATH=your_dir:$C_INCLUDE_PATH
CPLUS_INCLUDE_PATH=your_dir:$CPLUS_INCLUDE_PATH
LD_LIBRARY_PATH=your_dir:$LD_LIBRARY_PATH
LD_RUN_PATH=your_dir:$LD_RUN_PATH
2. 测试:
#include <iostream> #include <stdio.h> #include <db_cxx.h> #define DATABASE "test.db" using namespace std; int main() { u_int32_t flag = DB_CREATE; Db db(NULL, 0); try { db.open(NULL, DATABASE, NULL, DB_BTREE, flag, 0); } catch (std::exception &e) { printf("std eception happens\n"); return 2; } Dbt key, data; for (int i = 0; i < 100; ++i) { Dbt key(&i, sizeof(int)); Dbt data(&i, sizeof(int)); db.put(0, &key, &data, DB_NOOVERWRITE); } Dbc *dbcp, *dbcp1; db.cursor(NULL, &dbcp, 0); while(dbcp->get(&key, &data, DB_NEXT) == 0 ) { printf("key:%d#value:%d\n",*((int*)key.get_data()), *((int*)data.get_data())); } dbcp->close(); db.sync(0); try { db.close(0); } catch (std::exception &e) { printf("when clsoe std exception happens\n"); } printf("yes\n"); return 0; }
编译: g++ test_bdb.cpp -ldb_cxx
./a.tout
相关推荐
**知识点:Berkeley DB 安装与构建指南** 在IT领域,Berkeley DB(BDB)是一款由Oracle公司维护的高性能嵌入式数据库系统,它以其高效、可靠和灵活的特点在众多应用程序中得到了广泛的应用。Berkeley DB支持多种...
Berkeley DB是一款由Oracle公司开发的嵌入式数据库系统,被广泛应用于许多软件项目中,尤其是在需要快速、轻量级数据存储解决方案的场景下。它提供了键值对存储模式,适用于构建高性能的数据缓存和数据库应用程序。...
在提供的“db-6.0.20.msi”文件中,包含了Berkeley DB的安装程序。用户可以通过这个安装包进行安装和升级,以获取最新的功能和修复。 **9. 性能优化** BDB允许用户调整各种参数以优化性能,如缓存大小、事务日志...
BerkeleyDB 多库联合操作 (Secondary Databases) - **3.1 二级数据库介绍** - **概念解释**:二级数据库是对主数据库的一个索引,用于提高查询效率。 - **应用场景**:快速查找、数据统计等。 - **3.2 创建二级...
在“BerkeleyDB概念”部分,文档会介绍Berkeley DB的基本概念,如BTree和Hash数据库的访问方式选择,以及Queue和Recno之间的选择。 接下来,教程会讨论数据库的限制与可移植性、环境设置、异常处理和错误返回。然后...
Berkeley DB 6.2.32_64.msi Windows 64-bit binary installer Berkeley DB是一个嵌入式数据库,为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。 主要特点: 嵌入式:直接链接到应用程序中,与...
#### 1.1 Introduction to BerkeleyDB Cursor - **定义与作用**:游标是Berkeley DB提供的一种高效访问数据库记录的方式,通过游标可以实现对数据库中记录的查找、修改和删除等操作。 - **应用场景**:适用于需要...
**BerkeleyDB测试程序** BerkeleyDB是一款轻量级、高性能、嵌入式的数据库系统,由Oracle公司开发。它提供了一种键值对存储模型,适用于需要快速存取大量数据的应用场景,尤其在分布式系统、嵌入式系统以及对性能有...
《BerkeleyDB的参考书集》是一份包含全面的BerkeleyDB相关书籍和文档的资源集合,涵盖了从基础到高级的各个层次,旨在为开发者提供深入理解和应用BerkeleyDB的全面指南。BerkeleyDB,简称BDB,是一个开源的、高性能...
它通常会提供快速上手的教程,介绍BerkeleyDB的基本概念、安装步骤、基本API的使用,以及如何创建、打开、关闭数据库。此外,还会涉及数据的读写操作、索引创建、数据库备份和恢复等基础操作。 最后,`BerkeleyDB-...
3. **编译**:进入解压后的目录,执行`./configure --prefix=/usr/local/BerkeleyDB.4.8`进行配置,指定安装路径,然后使用`make`进行编译,最后用`sudo make install`安装。 4. **配置Open LDAP**:在Open LDAP的...
### sqlite与Berkeley DB的深度比较 在信息技术领域,数据库技术是支撑现代软件应用的关键基石之一,其中,sqlite和Berkeley DB作为两款优秀的开源嵌入式数据库管理系统,因其轻量级、高性能及易于集成的特性,在...
Berkeley DB 是一款高效、轻量级的嵌入式数据库系统,特别适合于需要本地存储且对性能有高要求的应用程序。它支持多种编程语言,包括Java,这使得开发人员能够在Java应用程序中直接使用Berkeley DB进行数据管理。在...
Berkeley DB 5.3.21.tar,你也可以去http://www.oracle.com/technetwork/products/berkeleydb/downloads/index.html下载最新版
**BerkeleyDB** 是一款由 Oracle 公司开发的开源、高性能、无模式的键值对存储数据库系统。它在嵌入式环境和轻量级应用程序中被广泛使用,尤其适用于那些需要快速数据访问和简单数据管理的应用。BerkeleyDB 的设计...
《SQL开发人员Oracle Berkeley DB指南》 Oracle Berkeley DB是一个开源的嵌入式数据库引擎,它提供了高效、可靠的本地持久性存储,无需独立的数据库管理系统。这个数据库引擎特别适合那些需要固定查询模式并且对...
Oracle Berkeley DB Java 版是一个开源的、可嵌入的事务存储引擎,是完全用 Java 编写的。与 Oracle Berkeley DB 类似,Oracle Berkeley DB Java 版在应用程序的地址空间中执行,没有客户端/服务器通信的开销,从而...
- 安装包:用于在目标系统上安装Berkeley DB的二进制文件和库。 - 头文件:包含API函数声明,供开发者在编写程序时引用。 - 示例代码:展示如何使用Berkeley DB API进行数据操作。 - 文档:详细介绍了Berkeley DB的...
在本文中,我们将深入探讨BerkeleyDB的特性、安装过程以及如何在Scrapy-Deltafetch项目中使用它。 一、BerkeleyDB的特性与优势 1. **嵌入式设计**:BerkeleyDB不依赖于服务器进程,可以直接在应用程序中使用,减少...