分类目录归档:Berkeley DB

Berkeley db管理

Berkeley db管理

1. 打开数据库
首先必须调用db_create()函数初始化DB句柄,然后就可以使用open()方法打开数据库了。默认情况下,如果数据库不存在,DB不会创建。为了覆盖缺省行为,可以在open()调用中指定DB_CREATE标记。
以下代码示范了如何打开数据库:
#include <db.h>
...
DB *dbp;
u_int32_t flags;
int ret;
ret = db_create(&dbp, NULL, 0);
if (ret != 0) {

}
flags = DB_CREATE;
ret = dbp->open(dbp,
NULL,
"my_db.db",
NULL,
DB_BTREE,
flags,
0);
if (ret != 0) {

}
在open参数中,DB_BTREE是DB的一种访问方法,此外还有DB_HASH、DB_HASH、DB_RECNO、DB_QUEUE等访问方法。
DB 存取数据的基本方式是key/value对,DB_BTREE和DB_HASH的key可为任意值,而DB_RECNO和DB_QUEUE的 key只能为逻辑上的数字。DB_BTREE用在记录数据较小的情况,通常能直接保存在内存里,而DB_HASH用在记录数据较大的情况。这里的记录数据 指单条记录。
DB_QUEUE和DB_RECNO用数字来标记每条记录(记录ID),前者逻辑数字不会随着记录的删除发生变化,后者会发生变化。
打开标记出了DB_CREATE外,还可有如下标记的或组合。
– DB_EXCL
独占式创建,如果数据库已经存在则打开失败,仅和DB_CREATE组合使用。
– DB_RDONLY
只读方式打开。
– DB_TRUNCATE
截断磁盘上的数据库文件,清空数据。 继续阅读

mysql driver could not create database instance object(bind dlz)

bind dlz(mysql)运行过程时出现如下错误:

Nov 24 10:35:01 lbbackup named[4155]: starting BIND 9.7.1-P2 -u named -c /usr/local/bind/etc/named.conf.mysql
Nov 24 10:35:01 lbbackup named[4155]: built with ‘–prefix=/usr/local/bind’ ‘–with-dlz-mysql=/usr/local/mysql’ ‘–enable-threads=no
‘ ‘–enable-largefile’
Nov 24 10:35:01 lbbackup named[4155]: using up to 4096 sockets
Nov 24 10:35:01 lbbackup named[4155]: loading configuration from ‘/usr/local/bind/etc/named.conf.mysql’
Nov 24 10:35:01 lbbackup named[4155]: reading built-in trusted keys from file ‘/usr/local/bind/etc/bind.keys’
Nov 24 10:35:01 lbbackup named[4155]: using default UDP/IPv4 port range: [1024, 65535]
Nov 24 10:35:01 lbbackup named[4155]: using default UDP/IPv6 port range: [1024, 65535]
Nov 24 10:35:01 lbbackup named[4155]: listening on IPv4 interface lo, 127.0.0.1#53
Nov 24 10:35:01 lbbackup named[4155]: listening on IPv4 interface eth0, 192.168.146.155#53
Nov 24 10:35:01 lbbackup named[4155]: listening on IPv4 interface eth1, 10.0.0.155#53
Nov 24 10:35:01 lbbackup named[4155]: Required root permissions to open ‘/usr/local/bind/var/run/named.pid’.
Nov 24 10:35:01 lbbackup named[4155]: Please check file and directory permissions or reconfigure the filename.
Nov 24 10:35:01 lbbackup named[4155]: generating session key for dynamic DNS
Nov 24 10:35:01 lbbackup named[4155]: Loading ‘Mysql zone’ using driver mysql
Nov 24 10:35:01 lbbackup named[4155]: Required token $zone$ not found.
Nov 24 10:35:01 lbbackup named[4155]: Could not build all nodes query list
Nov 24 10:35:01 lbbackup named[4155]: mysql driver could not create database instanceobject.
段错误 (core dumped) #加-g -d 1时出现

继续阅读

SQL 开发人员 Oracle Berkeley DB 指南

SQL 开发人员 Oracle Berkeley DB 指南

作者:Margo Seltzer

Oracle Berkeley DB 中常用 SQL 函数使用指南。

常常有人问 Oracle Berkeley DB “我如何在 Berkeley DB 中进行 <SQL 查询>?”因此,我们此处将介绍如何在 Oracle Berkeley DB 中实施众多您喜爱的 SQL 功能。不是所有的 SQL 应用程序都应该在 Oracle Berkeley DB 实施( Oracle Berkeley DB 是一个开放源的嵌入式数据库引擎,提供了快速、可靠、本地的持久性,无需管理),但如果您有一系列相对固定的查询且很关心性能,Berkeley DB 将是很好的选择。 继续阅读

Bind+Berkeley DB实现DNS动态更新

简介:

本文介绍使用Bind+Berkerley DB驱动(BDBHPT)实现DNS的动态更新。

 一、Bind配置

1.  在named.conf下的基本配置

dlz “bdbhpt zone” {       database “bdbhpt T(or C or P) /dns-root dnsdata.db”; };

2.  三种方式

Transactional mode.:  Highest safety – lowest speed. support commit or rollback operations
Concurrent mode:    Lower safety (no rollback) – higher speed.
Private mode:      No inter-process communication & no locking. Lowest saftey – highest speed.

二、Berkerley DB

1.DB 综述

DB最初开发的目的是以新的HASH访问算法来代替旧的hsearch函数和大量的dbm实现(如AT&T的dbm,Berkeley的ndbm,GNU项目的gdbm),DB的第一个发行版在1991年出现,当时还包含了B+树数据访问算法。在1992年,BSD UNIX第4.4发行版中包含了DB1.85版。基本上认为这是DB的第一个正式版。在1996年中期,Sleepcat软件公司成立,提供对DB的商业支持,后来被Oracle收购,全世界拥有达2亿多用户。在这以后,DB得到了广泛的应用,当前最新版本是4.6.19。

DB支持几乎所有的现代操作系统,如LINUX、UNIX、WINDOWS等,也提供了丰富的应用程序接口,支持C、C++、JAVA、PERL、TCL、PYTHON、PHP等,新版提供的只有C、C++、JAVA详细的文档API,对java有je-3.2.23工具包。

值得注意的是DB是嵌入式数据库系统,而不是常见的关系/对象型数据库,对SQL语言不支持,也不提供数据库常见的高级功能,如存储过程,触发器等。 继续阅读

dlzdb-util

Tool to add and remove IPs from the DLZ DB(Perl script to run a generic DLZ BDBHPT).

dlzdb-util [-a] [-z zone(domain)] [-t type] [-n name] [-v value] [-m mx-prefix]
                [-S serial] [-F refresh-time] [-R retry-time] [-E expire] [-H hostmaster]
                [-T minimumTTL] [-N primary-name-server]
dlzdb-util [-d] [-z zone(domain)] 
dlzdb-util [-s] [-z zone(domain)]
ex:
Add record
dlzdb-util -a -z dmain.com -t A -n www -v 172.16.5.33 
dlzdb-util -a -z dmain.com -t MX -n @ -v mail.domain.com. -m 10
dlzdb-util -a -z dmain.com -t TXT -n @ -v "text field here" -m 10
dlzdb-util -a -z dmain.com -t SOA -S 2006112401 -F 28800 -R 7200 -E 604800 -T 86400 -H hostmaster.domain.com. -N  01.dnsv.jp.
dlzdb-util -a -z 5.16.172.in-addr.arpa -t SOA -S 2006112401 -F 28800 -R 7200 -E 604800 -T 86400 -H  hostmaster.domain.com. -N 01.dnsv.jp.
dlzdb-util -a -z 5.16.172.in-addr.arpa -t PTR -n 34 -v www.dmain.com.
Delete record
dlzdb-util -d -z domain.com
Show record
dlzdb-util -s -z domain.com

继续阅读

Berkeley DB安装及配置

BerkeleyDB简介

Berkeley DB(BDB)是一个高性能的,嵌入数据库编程库,和C语言C++JavaPerlPythonTcl以及其他很多语言都有应用程序编程界面。Berkeley DB可以保存任意类型的键/值对,而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统包括大多数Unix类操作系统和Windows操作系统以及实时操作系统

源起

Berkeley DB最先由伯克利加州大学为了移除受到AT&T限制的程式码,从BSD 4.3到4.4时所改写的软件。在1996年时,网景公司希望Berkeley DB的作者群改善函式库,以配合网景公司所需要的LDAP服务器,以及在Netscape 浏览器,因此促成了Sleepycat Software(在2006年时2月时Sleepycat Software被甲骨文公司所买下)。

Berkeley DB以Sleepycat Public License发行(该授权条款为OSI及FSF所认可的条款)。发行时包括了完整的程式码、编译工具、测试套件,以及说明文件。由于良好的程式码的品质以及工具程式,Berkeley DB常被其他开放源代码软件所使用。对于不想使用Sleepycat Public License的开发团体,甲骨文公司也提供了其他付费的授权方式。

继续阅读