Oracle Berkeley DB Java 版是一个开源的、可嵌入的事务存储引擎,是完全用 Java 编写的。它充分利用 Java 环境来简化开发和部署。Oracle Berkeley DB Java 版的架构对于读密集型和写密集型的负载提供非常高的性能和并发性。您可以根据需要选择 Berkeley DB Java 版的 Direct Persistence Layer (DPL)、Persistent Collections API 或只存储任意数据的键/值对。如果关系数据库无法满足您的应用程序要求,那么 Berkeley DB Java 版将是您的最佳选择。

大多数 Java 解决方案都使用 Java Persistence API (JPA) 等对象关系映射 (ORM) 解决方案将类和实例数据映射为 RDBMS 的行和列。关系数据库非常适合数据存储和分析。然而,大多数保留的对象数据从未使用即席 SQL 查询进行分析;它们通常只作为 Java 对象进行检索和重构。您是因为 ORM 的存在而对其加以利用,还是因为确实需要 SQL 的特性?对于对象存储和检索这一基本任务,关系存储不能发挥作用。Berkeley DB Java 版则不同。Berkeley DB 将对象图形、集合对象或简单的键/值数据以 B 树的形式直接存储在磁盘上。这个简单、高效的方法可以避免 ORM 解决方案中的所有不必要开销。使用 Direct Persistence Layer (DPL),Java 开发人员可以使用存储信息对类进行批注,就像 JPA 一样。这种方法熟悉、高效且快速。DPL 可以降低数据存储的复杂性且不影响速度。

Berkeley DB Java 版不同于目前可用的其他所有 Java 数据库。Berkeley DB Java 版不是用 Java 构建的关系引擎。它是 Berkeley DB 样式的嵌入式存储,具有一个针对程序员(而非 DBA)设计的界面。该架构基于一个基于日志、无重写的存储系统,当提供 ACID 事务和记录级锁定时具有较高的并发性和较快的速度。Berkeley DB Java 版在内存中高效缓存最常用的数据,不会超出应用程序规定的限制。通过这种方式,Berkeley DB Java 版使用一个应用程序来使用可用的 JVM 资源,同时提供对非常大型的数据集的访问。

Berkeley DB Java 版通过在 J2EE 中实现三个关键的 API 来适应 J2EE 架构。通过 Java Transaction API (JTA),Berkeley DB Java 版可以在应用服务器中充当托管的事务资源。Berkeley DB Java 版还实现了 J2EE 连接器架构 (JCA) 以简化到应用服务器的集成。最后,进行集成后执行事务性操作时,大多数应用程序将需要某种能力来管理服务。Berkeley DB Java 版使用 Java 管理扩展 (JMX) 来导出信息和服务。JTA、JCA 和 JMX 三者相结合,从而使 Berkeley DB Java 版在基于 J2EE 的解决方案中以可预测的方式发挥其全部潜力。

Berkeley DB Java 版支持跨多个系统的复制,从而使应用程序能够以较短的时间进行大规模扩展并为高可用性解决方案提供容错。该技术的工作机制是让所有更新进入一个指定的主节点中,这个主节点自动将更改分发到一组副本节点。读负载可以跨这些副本节点分散,而新的副本节点可以随时加入该组来扩展此系统。如果任何副本将节点失败,其余的副本节点可以取代它。如果主节点发生故障,副本节点将进行选举,然后指定一个新的主节点。选定了新的主节点后,所有副本节点与新的主节点同步并在不中止服务的情况下继续进行正常处理。主-故障切换过程通常不到一秒,故障切换期间由副本节点针对读请求提供服务,从而确保不会停机。

数据存储

Berkeley DB Java 版可以轻松快速地存储数据,而不会导致像其他数据库中那么多的开销。Berkeley DB Java 版是与您的应用程序运行在同一 JVM 中的单个 JAR 文件,因此不需要远程服务器。本地缓存在内存中保存最活跃的数据以避免开销较大的磁盘访问,并将 JVM 内存的使用限制到一个可预测的数量。

  • 本地、进程间数据存储
  • 与模式无关的、应用程序原生数据存储
  • 按关键字访问的数据检索和顺序数据检索
  • 易于使用的 Java Collections API
  • 用于访问 Java 对象的 Direct Persistence Layer (DPL)
  • DPL 类的模式进化
  • 单进程、多线程模型
  • 用于高并发性的记录级锁定
  • 支持辅助索引
  • 内存中和/或磁盘上
  • 可配置的后台清理器线程重新组织数据并优化磁盘使用

事务

Berkeley DB Java 版可靠地存储数据并确保数据完整性。如果系统发生故障,Berkeley DB Java 版将恢复事务数据并根据日志和数据库信息将系统重置为可运行的、一致的状态。

  • 完全符合 ACID
  • 可选择的隔离级别和持久性保证,可在每事务基础上进行配置
  • 使用 Java Transaction API (JTA) 托管的事务
  • 使用 J2EE 连接器架构 (JCA) 进行 J2EE 应用服务器集成
  • 使用 Java 管理扩展 (JMX) 进行审计、监视和管理
  • 灾难和例程故障恢复模式
  • 基于超时的死锁检测
  • 冷热备份、日志文件压缩和完整的数据库转储

部署

Berkeley DB Java 版高度可移植、非常灵活且易于集成。它从一开始就被设计为一个充分利用 Java 环境的纯 Java 产品。作为单个 Java 存档 (JAR) 文件,它在运行应用程序的 JVM 中运行。Berkeley DB Java 版旨在通过企业级、纯 Java 的数据存储解决方案为不断增长的大型 Java 社区提供服务。

  • 100% 的纯 Java,便于移植且易于开发
  • 单个 JAR 文件 — 易于安装,与应用程序运行在相同的 JVM 上
  • 需要 Java 1.5 或更高的标准版 JVM
  • 编程管理
  • 无需人为管理
  • 针对例行管理功能的 API
  • 体积小 820KB
  • 可扩展到数以 TB 计的数据,数百万条记录
  • 包含源代码、测试套件

Oracle Berkeley DB Java 版的更多相关文章

  1. 了解 Oracle Berkeley DB 可以为您的应用程序带来 NoSQL 优势的原因及方式。

    将 Oracle Berkeley DB 用作 NoSQL 数据存储 作者:Shashank Tiwari 2011 年 2 月发布 “NoSQL”是在开发人员.架构师甚至技术经理中新流行的一个词汇. ...

  2. Berkeley DB Java Edition 简介

    一.             简介        Berkeley DB Java Edition (JE)是一个完全用JAVA写的,它适合于管理海量的,简单的数据. l         能够高效率的 ...

  3. Berkely DB Java Edition学习笔记

    Berkely DB对于高并发.要求速度快的应用来说是个不错的选择,mysql就是用BDB实现的(mysql的后台) ,mysql快,BDB比mysql还要快N倍.BDB是一种嵌入式的.非关系数据库, ...

  4. The Architecture of Open Source Applications: Berkeley DB

    最近研究内存关系数据库的设计与实现,下面一篇为berkeley db原始两位作为的Berkeley DB设计回忆录: Conway's Law states that a design reflect ...

  5. Berkeley DB (VC6.0 编译环境配置)

    操作系统:winxp VC环境:VC6.0 必需文件:Berkeley DB安装文件(db-.msi) 下载地址:http://www.oracle.com/technology/software/p ...

  6. C# 使用Berkeley DB

    Berkeley DB是一个开源的文件数据库,介于关系数据库与内存数据库之间.简称BDB Berkeley DB是嵌入式键值数据库库,为应用程序提供可扩展的高性能数据管理服务. Berkeley DB ...

  7. 免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE)

    SQLite数据库是中小站点CMS的最佳选择 SQLite 是一个类似Access的轻量级数据库系统,但是更小.更快.容量更大,并发更高.为什么说 SQLite 最适合做 CMS (内容管理系统)呢? ...

  8. java.util.MissingResourceException: Can't find resource for bundle oracle.sysman.db.rsc.LoginResourc

    http://blog.itpub.net/197458/viewspace-1055358/   oracle 10.2.0.4 windows 2003 X64 平台 系统安装EMCA正常.第一次 ...

  9. 「JAVA」:Berkeley DB的JAVA连接

    Berkeley DB是一个嵌入式的数据库,它适合于管理海量的.简单的数据.关键字/数据(key/value)是Berkeley DB用来进行数据管理的基础.每个key/value构成了一条记录,而整 ...

随机推荐

  1. nginx 根据IP 进行灰度发布

    灰度发布,简单来说,就是根据各种条件,让一部分用户使用旧版本,另一部分用户使用新版本. nginx 的语法本身可以看作是一门小型的编程语言,通过简单的编程,可以轻松实现基于IP的灰度发布. 需求:搭建 ...

  2. spring03autowire属性

    1.创建需要的实体类 public class Student { //学生实体类 private String name; //姓名 private Integer age; //年龄 privat ...

  3. Windows离线安装.NET3.X

    Windows离线安装.NET3.X 当我们在Windows上安装软件的时候,总是会提示需要安装.NET3.X.而大多数人们选择在线安装,这样会很慢,不少人想到了离线安装的方式.其是只要你的电脑是Wi ...

  4. webform repeater

    repeater:由模板构成,解析后模板就不存在了             需要指定数据源进行数据绑定 List<Fruit> list = new FruitDA().Select(); ...

  5. 狗狗40题~ (Volume C)

    A - Triangles 记忆化搜索呗.搜索以某三角形为顶的最大面积,注意边界情况. #include <stdio.h> #include <cstring> #inclu ...

  6. sqlserver常用全局变量

    @@SERVERNAME    : 返回运行SQL Server 2000本地服务器的名称. @@REMSERVER       : 返回登录记录中记载的远程SQL Server服务器的名称. @@C ...

  7. Beforeunload打点丢失原因分析及解决方案

    淘宝的鱼相在 2012 年 8 月份发表了一篇文章,里面讲述了他们通过一个月的数据采集试验,得到的结果是:如果在浏览器的本页面刷新之前发送打点请求,各浏览器都有不同程度的点击丢失情况,具体点击丢失率统 ...

  8. 移动端web页面使用position:fixed问题总结

    近期完成了一个新的项目(搜狐直播),其中又涉及到了 fixed(固定位置定位)的问题,在之前的文章<移动Web产品前端开发口诀——“快”>中已经阐述过我对 iScroll 的态度,所以在这 ...

  9. mysql 整形的长度问题

    tinyint  有符号的范围是-128至127: 无符号的范围是0到255,2的8 次方-1: 存储大小为 1 字节. smallint  有符号的范围是-32768至32767: 无符号的范围是0 ...

  10. python中的列表和字典

    列表和字典的区别: 列表是有序排列的一些物件,而字典是将一些物件(键)对应到另外一些物件(值)的数据结构; 应用场景: 字典 各种需要通过某个值去查看另一个值的场合,也就是一个虚拟的“查询表”,实现方 ...