将Berkeley DB作为NoSQL使用

注:做为一个有20余年历史的产品,Berkeley DB有其远高于其它NoSQL在工业环境使用的经验和教训,并且也在早期被MySQL作为存储引擎使用。从笔者在Berkeley DB Java Edition的经验来看,它可能不适合作为类型Cache的产品,但是由于其架构上的特性,它非常适用于超大数据量(单机数百G)、缓存化比较糟糕的场景,或用做Cache后端的存储(基本是全表随机读)。

Berkeley DB概要

目前Berkeley DB家族主要由以下三部分构成:

  • Berkeley DB – 由C语言开发. 这是最古典的种类.
  • Berkeley DB Java Edition (JE) – 由Java开发.
  • Berkeley DB XML – 由C++开发。

数据结构

  • Berkeley DB – 目前支持四种数据结构.

    B-Tree

    Hash

    Queue:存取定长记录

    Recno:存变变长记录

  • Berkeley DB Java Edition (JE) – 由Java开发.目前只支持B-Tree格式
  • Berkeley DB XML – 由C++开发。

其物理结构可以参考这篇文章:http://forchenyun.javaeye.com/blog/841015

事务支持

Berkeley DB能够很灵活的支持事务。在Berkeley DB中,事务所支持的数据可靠性将有三个级别,最强的就是事务提交的时候直接数据持久到磁盘,其次是在事务提交时将数据交由操作系统决定何时刷磁盘,最后就是不持久磁盘,而由后台checkpoint保障。

横向扩展

Berkeley DB提供了Master-Slaver的扩展机制。可以由一个Master带多个Replica。它可以为你带来以下好处:

  • 增强读性能
  • 提高可靠性
  • 增强耐久性(Durability):可以在Master端放松事务,而由集群保障数据耐久性。
  • 增强可用性

Berkeley DB 已经应用或将要应用于Amazon’s DynamoProject VoldemortMemcacheDB, 以及GenieDB

请参考:Using Oracle Berkeley DB as a NoSQL Data Store

anyShare分享此文章的同学,将有机会送我iphone5!
          

无觅相关文章插件,快速提升流量

分类 NoSQL杂谈 · tag ,