# Berkeley DB 体系结构-NoSQL 很酷之前的 NoSQL

> 原文： [http://highscalability.com/blog/2012/2/20/berkeley-db-architecture-nosql-before-nosql-was-cool.html](http://highscalability.com/blog/2012/2/20/berkeley-db-architecture-nosql-before-nosql-was-cool.html)

![](img/c5609977746e08c737e71118996cd87c.png)

在文件系统和简单的库包之后，例如 [dbm](http://en.wikipedia.org/wiki/Dbm) ， [Berkeley DB](http://www.oracle.com/technetwork/database/berkeleydb/overview/index.html) 是最初被应用程序广泛用作其核心数据库引擎的豪华嵌入式数据库。 NoSQL 比 NoSQL 还酷。 使复杂的应用程序唱歌的隐藏秘密。 如果您希望免除基于服务器的系统的所有网络开销，那么它仍然是一个不错的选择。

[《开源应用程序的体系结构](http://astore.amazon.com/possiboutpos-20/detail/1257638017)》一书中对 Berkeley DB 背后的体系结构进行了大量撰写。 如果您想了解有关数据库如何工作的更多信息，或者如果您正在考虑如何构建自己的数据库，那么它的详细信息，说明和课程将非常丰富。 这是本书中的 [Berkeley DB](http://www.aosabook.org/en/bdb.html) 章节。 它涵盖了以下主题：建筑概述； 访问方法：Btree，Hash，Reno，Queue； 库接口层； 缓冲区管理器：Mpool； 预写日志记录； 锁管理器：锁； 日志管理器：日志； 事务管理器：Txn。

## 相关文章

*   [伯克利 DB：Margo Seltzer 的回顾性](http://sites.computer.org/debull/a07sept/seltzer.pdf)
*   [在维基百科](http://en.wikipedia.org/wiki/Berkeley_DB)上
*   [LevelDB-MapReduce 和 BigTable 作者的快速轻量级键/值数据库。](http://highscalability.com/blog/2011/8/10/leveldb-fast-and-lightweight-keyvalue-database-from-the-auth.html)

当然，如果您的方案是非分片的单个 Web 服务器，那么 BerkeleyDB 的速度将惊人地快。 我在 BookMooch.com 上使用 BerkeleyDB 已有 6 年了，对于单个网页来说，现实世界中每秒 200 万次查询的查询速度是很典型的。 这些不是模拟的速度：在锁定，窃听等之后，它是真实的速度。这种速度让我可以使用 BerkeleyDB 代替内存中的数组，然后获得自动持久性（就像 Perl 一样）。

-约翰

首先，让我说“ NoSQL 比 NoSQL 还酷”的名字是 MarkLogic 很久以来提出的（[，我有衬衫来证明它](http://contentmangler.wordpress.com/2012/02/25/marklogic-nosql-before-nosql-was-cool/?preview=true&preview_id=35&preview_nonce=9757b1bfd1)）。 话虽如此，在速度和可伸缩性方面，MarkLogic 是事实上的 XML 数据库。 MarkLogic 不需要水平分片，因为它是为群集和协调数千个节点和 PB 级数据而构建的。 MarkLogic 在一些内容/数据非常复杂的大型公司中安装了设备，并且可以对任何节点或文档执行亚秒级的查询。 我认为伯克利是一个很棒的工具，但充其量只是新颖，我会对企业中谁在使用它以及在什么规模上使用它感兴趣。 成为与 MarkLogic 紧密合作的人。 我知道它可以扩展并解决很多信息问题，无论您拥有 100 GB 还是 100 TB 的内容。

-加里·维达尔

请查看 Bangdb。 当前，嵌入式版本已在 www.iqlect.com 上发布。 BerkleyDB 和 LevelDB 有一个有趣的性能比较文档。 请在可能的情况下退房。
谢谢