常常有人问 Oracle Berkeley DB “我如何在 Berkeley DB 中进行 ?"因此,我们此处将介绍如何在 Oracle Berkeley DB 中实施众多您喜爱的 SQL 功能。不是所有的 SQL 应用程序都应该在 Oracle Berkeley DB 实施( Oracle Berkeley DB 是一个开放源的嵌入式数据库引擎,提供了快速、可靠、本地的持久性,无需管理),但如果您有一系列相对固定的查询且很关心性能,Berkeley DB 将是很好的选择。
让我们从头开始 (很好的起步点)。我们从 ABC 开始学阅读,在 Berkeley DB 中我们从术语开始。
这里为坚定的 SQL 程序员提供了一个小型“翻译指南”:
|
SQL 术语
|
Oracle Berkeley DB 对应词汇
|
|
数据库
|
环境
|
|
表
|
数据库
|
|
字节组/行
|
键/数据对
|
|
主索引
|
键
|
|
次索引
|
次数据库
|
选择一个应用程序域 — 传统员工数据库,经过一定的简化。我们进一步假定您需要所有 Berkeley DB 的全部额外特性:并发、事务、可恢复性等。
创建数据库
在 SQL 中,您可以执行以下命令
CREATE DATABASE personnel
在 Berkeley DB 中, 您想要创建一个放置所有应用程序数据的环境。在代码中,您将通过一个环境句柄来引用环境,该句柄类型为 DB_ENV。您将使用这一句柄来操作此环境。现在,将一些精妙的错误处理过程放在一边,来集中讨论 API。
|
DB_ENV *dbenv;
int ret; /* Create the handle. */ DB_ASSERT(db_env_create(&dbenv, 0) == 0); /* * If you wanted to configure the environment, you would do that here. * Configuraition might include things like setting a cache size, * specifying error handling functions, specifying (different) * directories in which to place your log and/or data files, setting * parameters to describe how many locks you'd need, etc. */ /* Now, open the handle. */ DB_ASSERT(dbenv->open(dbenv, "my_databases/personnel", DB_CREATE | DB_INIT_LOCK | DB_INIT_MPOOL | DB_INIT_TXN | DB_THREAD, 0644); |
您现在创建和打开了一个环境。需要注意几项事情:
· 开始前必须有 my_databases/personnel 目录。
· open 调用的最后一个参数就是作为此环境的一部分为您创建的文件的模式。
· 此处指定的标记将允许您创建环境
(DB_CREATE),使用锁定 (DB_INIT_LOCK);有一个共享的内存缓存池 (DB_INIT_MPOOL);使用事务 (DB_INIT_TXN);并同时在不同的控制线程中使用得到的环境句柄 (DB_THREAD)。
(DB_CREATE),使用锁定 (DB_INIT_LOCK);有一个共享的内存缓存池 (DB_INIT_MPOOL);使用事务 (DB_INIT_TXN);并同时在不同的控制线程中使用得到的环境句柄 (DB_THREAD)。
在 SQL 中,查询通常由单独的服务器处理,该服务器由数据库管理员配置以在您的系统上正常(或不正常)工作。因为 Berkeley DB 嵌入到了您的应用程序中,因此该应用程序可以执行许多配置工作。但这确实与数据库调优有关,我们将另文详述。
0
