Berkeley DB
文章平均质量分 77
david_zhao_wei
资深数据库内核开发者。现在腾讯公司做TDSQL分布式强一致数据库的MariaDB/MySQL 研发。 曾在 ORACLE公司 MYSQL 研发部门任职 Principal Software Engineer 曾任 方正 智睿NoSQL数据库 高级架构师负责方正NoSQLXMLKEY-VALUEGRAPH数据库的设计和研发曾任TeraData公司 Senior Database Kernel Developer负责Jupiter的存储引擎研发曾任Oracle 公司软件工程师负责Berkeley DB嵌入式数据库的开发
展开
-
Berkeley DB的动态散列技术
本文最初贴在我在百度空间的blog(http://hi.baidu.com/dazhao_dbblog),现在把它也发布到这里。 一个Berkeley DB数据库(也就是关系数据库中的一个表)存储的数据是key/data pair(键/值)对的集合,这些key/data pairs原本可以是任何结构、模式和意义的数据,Berkeley DB不理会它们的结构和意义,只把他们当作字原创 2009-01-18 13:20:00 · 2067 阅读 · 1 评论 -
Berkeley DB 源代码分析 (6) 缓存模块
这篇文字原来是贴在wiki里面的,所以有一些wiki系统使用的格式标记,大家将就看吧,不好意思哈。= Memory Pool subsystem === Architecture ==mpool is the underlying cache for all access methods (AMs). It provides pages to AMs, and writes原创 2012-03-25 15:56:57 · 1321 阅读 · 0 评论 -
Berkeley DB 列存储设计方案
这是我根据列存储的需求以及Berkeley DB的技术特征做的一个列存储设计方案。有兴趣的朋友可以研究一下,并且在Berkeley DB的基础上面实现出来。有问题可以联系我,我尽量抽时间回答。Column store improvements:0. Store column metadata and table metadata. Column metadata including:原创 2012-03-25 15:58:38 · 1134 阅读 · 0 评论 -
Berkeley DB 源代码分析 --- 小结
刚才贴了一些文章,都是我之前读Berkeley DB的代码时候记下来的笔记,基于Berkeley DB 4.6 ~ Berkeley DB 4.8版本的代码,不过相信与现在最新的代码差别也不大,有兴趣朋友可以看看。同时如果想要完全理解代码,那么在看我这些分析的同时,可以调试一下bdb代码,按照功能逐一调试。比如想要理解bdb的btree如何插入一条key/data pair,那么就写一小段代码调用原创 2012-03-25 15:59:38 · 2880 阅读 · 2 评论 -
Berkeley DB 源代码分析 (1) --- 代码特征与游标的实现
I. General Notes1. use a cursor to access db internally. cursor connects lock/txn/logging/AM, etc.To get a page, first create a cursor if don't have one, then call __db_lget to lock the page, then原创 2012-03-25 15:52:06 · 1336 阅读 · 0 评论 -
Berkeley DB 源代码分析 (4) --- 事务和日志
1. in nested txns, when child txns of any level commit, __txn_child logs are always written, no matter the child txn commits explicitly or implicitly by its parent's commit.2. Read only txns don原创 2012-03-25 15:54:45 · 709 阅读 · 0 评论 -
Berkeley DB 源代码分析 (5) --- 事务锁模块
Locking Subsystem Learning Notes0. locking API__db_lput/__db_lget are txnal lock put/get, often __TLPUT is called instead,and __TLPUT calls __db_lput internally. __db_lput will downgrade the loc原创 2012-03-25 15:55:56 · 5049 阅读 · 0 评论 -
Berkeley DB 源代码分析 (2) --- Btree的实现 (1)
II. Type Dictionary1. BTREEThe DB handle's DB->bt_internal structure, stores per-process and per-dbhandlebtree info and function pointers.2. BTMETAThe btree meta page structure shared by原创 2012-03-25 15:52:53 · 1336 阅读 · 0 评论 -
Berkeley DB 源代码分析 (3) --- Btree的实现 (2)
__bam_ditemIn btree we store on-page duplicate key/data pairs this way: 1. we only put the key onto the page once, since it's duplicated, there is no meaning puttingidentical keys multiple tim原创 2012-03-25 15:54:00 · 1402 阅读 · 0 评论 -
Berkeley DB内核源码分析
Berkeley DB是一个优秀的数据库存储引擎,虽然它比起那些大块头的DBMS来说显的很小,但是size并不与能力呈正比,Berkeley DB拥有那些大块头DBMS的存储引擎所拥有的全部功能,而且做得还不错。哪些大块头之所以大,很大程度是对于数据库管理系统的设计技术感兴趣的同行们来说,学习Berkeley DB是一个很好的开始,因为Berkeley DB全面地拥有一个DBMS的存储引擎应该原创 2012-03-25 15:51:11 · 1660 阅读 · 0 评论 -
直接使用Berkeley DB的Memory Pool 功能
Normal 0 false false false MicrosoftInternetExplorer4 <!-- /* Font Definitions */ @font-face {font-family:宋体原创 2010-05-13 13:12:00 · 1126 阅读 · 0 评论 -
Berkeley DB概况
说实话,在我进入Oracle之前一个月,也是拿到Oracle的Offer 5个月之后,我才得到我未来经理的电话通知(我不是怪他通知的晚,事实上我非常感谢他给我机会进入这个产品组---这纯属机缘巧合,让我来到一个崭新的世界),说我在Berkeley DB产品组,这之前我从来没听说过它,我的第一印象,Berkeley的DB不是postgresl吗?仔细一查,才知道它是Oracle的嵌入式数据库,而嵌入原创 2009-01-18 13:26:00 · 1828 阅读 · 0 评论 -
Berkeley DB示例程序详解 (1)
/** 这个例子程序是Berkeley DB的示例程序之一(DB/example_cxx/AccessMethod.cpp),* 它演示了如何使用Berkeley DB的基本功能,包括打开一个数据库,存入若干个* key/data pair,然后遍历数据库中的数据,最后关闭数据库。** 原始代码中有一些英文注释,但是对于初学者还是不够详细,我没有删除原来* 的注释,而且添原创 2009-02-26 14:24:00 · 3214 阅读 · 2 评论 -
Berkeley DB Performance Test
各位读者,很抱歉这篇文章是英文的,我当初做笔记的时候,写成英文了,这样才可以在同事之间交流。而现在确实没时间翻译过来了,还望大家理解,谢谢!In this article Id like to talk about the caveats and how-tos when doing performance test with Berkeley DB, when the data volu原创 2009-07-07 22:56:00 · 910 阅读 · 0 评论 -
Berkeley DB 示例程序详解(2)
// File TxnGuide.cpp/** 这个例子程序是Berkeley DB的示例程序之一(DB/example_cxx/txn_guide/TxnGuide.cpp),* 它演示了如何使用Berkeley DB的事务功能,以及如何做死锁检测和处理。** 原始代码中有一些英文注释,但是对于初学者还是不够详细,我没有删除原来* 的注释,而且添加了针对每一个Berkeley DB操作的更加详原创 2009-07-07 22:50:00 · 1993 阅读 · 0 评论 -
Berkeley DB 4.8 的 dbstl API
Berkeley DB 4.8 刚刚发布,我的心情格外激动。不仅仅是因为这个版本是Berkeley DB新增了很多新功能,在很多方面有不小的增强,更因为在众多的新功能中,有主要由我设计开发的STL API。 作为增强Berkeley DB的易用性或者叫做用户友好性的重要组成部分,STL API是Berkeley DB4.8的主要的新特性之一。Berkeley DB的STL原创 2009-09-30 16:10:00 · 1512 阅读 · 3 评论 -
Berkeley DB示例程序详解(3.2)
/* * Perform command line parsing and common replication setup for the repmgr * and base replication example programs. */intcommon_rep_setup(dbenv, argc, argv, setup_info) DB_ENV *dbenv; int argc; cha原创 2009-10-04 16:33:00 · 933 阅读 · 0 评论 -
Berkeley DB示例程序详解(3.1)
/* * 这个示例程序演示了使用Berkeley DB的replication功能的方法。 * * Berkeley DB提供了一套基本API和一套replication manager API来使用 * 它的replication功能。 * 前者有更大的灵活性,用户可以选择各种网络协议来实现数据传输,并且使用各种 * 线程库来进行多线程编程。同时由于使用最基本的API, 用户可以定制选举和 *原创 2009-10-04 16:28:00 · 1328 阅读 · 0 评论 -
Berkeley DB 批量插入更新与删除用法示例
在Berkeley DB 4.8之前,我们可以执行的唯一的批量数据库操作是批量读取。从Berkeley DB 4.8开始,Berkeley DB支持批量插入/更新/删除,并且用法也与批量读取相似。批量插入/更新/删除对Berkeley DB的更新性能提升非常大,是一个值得认真学习的新功能。本文就以一个示例程序展示批量插入和批量删除的用法。/* 批量插入示例函数。*/void原创 2010-03-01 16:55:00 · 2319 阅读 · 0 评论 -
Berkeley DB 源代码分析 (7) --- 事务和日志 (2)
这篇和上篇一样,也是含有一些wiki格式控制字符,看的时候直接忽略这些格式字符。= Logging subsystem === Architecture ==Log subsystem consists of one log buffer, and several log files, each has a unique file number. Log buffer原创 2012-03-25 15:57:48 · 1014 阅读 · 0 评论