Berkeley DB Archive

  • 最近小伙伴在分布式数据库(DPINM)环境下做实验,数据集比较大,分到集群中每台机器上,会报lock不够用的错。Berkeley DB在初始化的时候,就会初始化锁子系统,为锁结构分配内存空间,一旦启动,是不可以动态分配的,如果不够用,就会报错。后来调节了参数,加大了Locks,  Lockers, Locked Object 的最大数量,重启之后被惊呆了,锁子系统映射到文件系统的共享内存空间竟然有60多G,磁盘立马就不够用了(挂载目录只有100G….)。以前看到过配置锁子系统的参数该如何算,总结起来就是能大就大,毕竟不够用重启很麻烦,但万万没想到占这么大的空间,所以还是仔细看看怎么 […]

    Berkeley DB 锁子系统的配置

    最近小伙伴在分布式数据库(DPINM)环境下做实验,数据集比较大,分到集群中每台机器上,会报lock不够用的错。Berkeley DB在初始化的时候,就会初始化锁子系统,为锁结构分配内存空间,一旦启动,是不可以动态分配的,如果不够用,就会报错。后来调节了参数,加大了Locks,  Lockers, Locked Object 的最大数量,重启之后被惊呆了,锁子系统映射到文件系统的共享内存空间竟然有60多G,磁盘立马就不够用了(挂载目录只有100G….)。以前看到过配置锁子系统的参数该如何算,总结起来就是能大就大,毕竟不够用重启很麻烦,但万万没想到占这么大的空间,所以还是仔细看看怎么 […]

    Continue Reading...

  • 本文翻译自Berkeley DB 官方文档 Architecting Transactional Data Store applications 一节,主要讲述使用BDB作为存储引擎时提供事务支持的几种进程访问模式。每个BDB环境都对应一个文件系统目录,其中包涵存储的数据和运行时提供的锁资源,互斥变量资源,共享缓冲池等。每个目录可以被多个BDB进程打开访问,但使用复杂度有较大区别。需要说明的是,每一个目录在打开它的BDB进程中被称作一个数据库环境,一个目录可以对应多个环境,一个环境只能对应打开一个目录。几种架构模式分别为: 一个进程 多个相关的进程 多个不相关的进程 正文: 当构建支持事务的应 […]

    Berkeley DB 事务支持的应用架构

    本文翻译自Berkeley DB 官方文档 Architecting Transactional Data Store applications 一节,主要讲述使用BDB作为存储引擎时提供事务支持的几种进程访问模式。每个BDB环境都对应一个文件系统目录,其中包涵存储的数据和运行时提供的锁资源,互斥变量资源,共享缓冲池等。每个目录可以被多个BDB进程打开访问,但使用复杂度有较大区别。需要说明的是,每一个目录在打开它的BDB进程中被称作一个数据库环境,一个目录可以对应多个环境,一个环境只能对应打开一个目录。几种架构模式分别为: 一个进程 多个相关的进程 多个不相关的进程 正文: 当构建支持事务的应 […]

    Continue Reading...

  • 趁着五一,劳动一下,把这篇酝酿已久的博客写了。这是去年做的东西,完成了一段时间,经过测试使用还可以,基本可以保证数据库的Durability,无论是突然断电还是磁盘坏了等等。文章的大部分内容都是之前完成的(为了交高级数据库这门课的课程报告….)。适合需要使用Berkeley DB或者其它存储引擎建立自己的备份系统的人阅读和参考。或者是想看看设计思路的~ 摘要 本文所述内容基于实验室的INM DBMS系统,原系统使用嵌入式开源数据库Berkeley DB为存储引擎,构建一种全新的语义数据模型。拥有自己的一套不同于SQL的数据库语言。原系统主要着眼于数据模型的构建,ACID的特性均交给 […]

    基于Berkeley DB的数据库备份系统

    趁着五一,劳动一下,把这篇酝酿已久的博客写了。这是去年做的东西,完成了一段时间,经过测试使用还可以,基本可以保证数据库的Durability,无论是突然断电还是磁盘坏了等等。文章的大部分内容都是之前完成的(为了交高级数据库这门课的课程报告….)。适合需要使用Berkeley DB或者其它存储引擎建立自己的备份系统的人阅读和参考。或者是想看看设计思路的~ 摘要 本文所述内容基于实验室的INM DBMS系统,原系统使用嵌入式开源数据库Berkeley DB为存储引擎,构建一种全新的语义数据模型。拥有自己的一套不同于SQL的数据库语言。原系统主要着眼于数据模型的构建,ACID的特性均交给 […]

    Continue Reading...

  • 完成了关于Berkeley DB 整体介绍的PPT,弄懂了其中product的区别,仅用于大概了解,没有具体说怎么用。 发展历史 1991年,Berkeley DB的第一个版本发行(Linux系统也在这一年诞生),其最初的开发目的是以新的HASH访问算法来代替旧的hsearch函数和大量的Dbm库。 1992年,BSD UNIX第4.4发行版中包含了Berkeley DB 1.85版。基本上认为这是Berkeley DB的第一个正式版本。 1996年,Sleepycat软件公司成立,提供对Berkeley DB的商业支持。 2006年,Sleepycat被Oracle收购,当时最新版本是4.7 […]

    Berkeley DB 简简介

    完成了关于Berkeley DB 整体介绍的PPT,弄懂了其中product的区别,仅用于大概了解,没有具体说怎么用。 发展历史 1991年,Berkeley DB的第一个版本发行(Linux系统也在这一年诞生),其最初的开发目的是以新的HASH访问算法来代替旧的hsearch函数和大量的Dbm库。 1992年,BSD UNIX第4.4发行版中包含了Berkeley DB 1.85版。基本上认为这是Berkeley DB的第一个正式版本。 1996年,Sleepycat软件公司成立,提供对Berkeley DB的商业支持。 2006年,Sleepycat被Oracle收购,当时最新版本是4.7 […]

    Continue Reading...

  • 事务的隔离性是数据库很重要的一个方面。它保证事务之间对相同数据库操作的正确性。常常用在多线程程序中,而保证隔离性又需要对资源的竞争,因此应对不同等级的要求,也对隔离性分为不同的等级。等级越低,对数据的保护性越差,但是对资源的竞争越小。需要对各种等级有所了解,才能在使用中找到平衡。 Degree1:Read Uncommitted 1.描述 隔离等级最低的一种,保证一个事务不会重写 另一个事务写过但是尚未commit 的数据。也就是write操作会加写锁,之后其它事务的write操作就会阻塞,一直等待前一个事务完成操作,将锁释放。但是read操作绝不会阻塞,如果事务read操作之前有其它事务的w […]

    BDB 事务隔离等级

    事务的隔离性是数据库很重要的一个方面。它保证事务之间对相同数据库操作的正确性。常常用在多线程程序中,而保证隔离性又需要对资源的竞争,因此应对不同等级的要求,也对隔离性分为不同的等级。等级越低,对数据的保护性越差,但是对资源的竞争越小。需要对各种等级有所了解,才能在使用中找到平衡。 Degree1:Read Uncommitted 1.描述 隔离等级最低的一种,保证一个事务不会重写 另一个事务写过但是尚未commit 的数据。也就是write操作会加写锁,之后其它事务的write操作就会阻塞,一直等待前一个事务完成操作,将锁释放。但是read操作绝不会阻塞,如果事务read操作之前有其它事务的w […]

    Continue Reading...

  • 从去年开始,学习Berkeley DB 也有一段时间,因为没有找到比较好的中文书籍,一直断断续续看官方的英文文档,开着有道词典,不认识的单词就划词去查。开始速度很慢,后来熟了一些就能快一点。这两个礼拜正式投入使用,学习实验室INM数据库存储模块,完成了物化视图实例的存储接口。期间也对Berkeley DB的桶操作有了更深入一些的了解。 1.BDB简单存取 BDB是键值对存取,一个键值对叫做一个record,键和值使用相同的数据结构,C++ API中定义为Dbt,用数据的指针和数据的长度初始化Dbt对象。假设key值为“luffy”,value值为“op”。 char *pkey =

    Berkeley DB 的桶操作

    从去年开始,学习Berkeley DB 也有一段时间,因为没有找到比较好的中文书籍,一直断断续续看官方的英文文档,开着有道词典,不认识的单词就划词去查。开始速度很慢,后来熟了一些就能快一点。这两个礼拜正式投入使用,学习实验室INM数据库存储模块,完成了物化视图实例的存储接口。期间也对Berkeley DB的桶操作有了更深入一些的了解。 1.BDB简单存取 BDB是键值对存取,一个键值对叫做一个record,键和值使用相同的数据结构,C++ API中定义为Dbt,用数据的指针和数据的长度初始化Dbt对象。假设key值为“luffy”,value值为“op”。 char *pkey = "luff […]

    Continue Reading...