Oracle Berkeley DB Java 版
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 版的更多相关文章
- 了解 Oracle Berkeley DB 可以为您的应用程序带来 NoSQL 优势的原因及方式。
将 Oracle Berkeley DB 用作 NoSQL 数据存储 作者:Shashank Tiwari 2011 年 2 月发布 “NoSQL”是在开发人员.架构师甚至技术经理中新流行的一个词汇. ...
- Berkeley DB Java Edition 简介
一. 简介 Berkeley DB Java Edition (JE)是一个完全用JAVA写的,它适合于管理海量的,简单的数据. l 能够高效率的 ...
- Berkely DB Java Edition学习笔记
Berkely DB对于高并发.要求速度快的应用来说是个不错的选择,mysql就是用BDB实现的(mysql的后台) ,mysql快,BDB比mysql还要快N倍.BDB是一种嵌入式的.非关系数据库, ...
- The Architecture of Open Source Applications: Berkeley DB
最近研究内存关系数据库的设计与实现,下面一篇为berkeley db原始两位作为的Berkeley DB设计回忆录: Conway's Law states that a design reflect ...
- Berkeley DB (VC6.0 编译环境配置)
操作系统:winxp VC环境:VC6.0 必需文件:Berkeley DB安装文件(db-.msi) 下载地址:http://www.oracle.com/technology/software/p ...
- C# 使用Berkeley DB
Berkeley DB是一个开源的文件数据库,介于关系数据库与内存数据库之间.简称BDB Berkeley DB是嵌入式键值数据库库,为应用程序提供可扩展的高性能数据管理服务. Berkeley DB ...
- 免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE)
SQLite数据库是中小站点CMS的最佳选择 SQLite 是一个类似Access的轻量级数据库系统,但是更小.更快.容量更大,并发更高.为什么说 SQLite 最适合做 CMS (内容管理系统)呢? ...
- 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正常.第一次 ...
- 「JAVA」:Berkeley DB的JAVA连接
Berkeley DB是一个嵌入式的数据库,它适合于管理海量的.简单的数据.关键字/数据(key/value)是Berkeley DB用来进行数据管理的基础.每个key/value构成了一条记录,而整 ...
随机推荐
- Genymotion 模拟器 VirtualBox
准备 介绍: 1.Genymotion安卓模拟器其实不是普通的模拟器,严格来说,genymotion是虚拟机,被网传定义为模拟器,加载APP的速度比较快,操作起来也很流畅.2.Genymotion依赖 ...
- css改变滚动条样式
/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ ::-webkit-scrollbar { width: 10px; height: 12px; background-color: #F5 ...
- ajax分页实现,jquery.pagination.js
1.前台使用ajax无刷新分页,主要需要生成分页的工具条,这里使用的是jquery.pagination.js 插件参数可以参考----张龙豪-jquery.pagination.js分页 下面贴出代 ...
- (转)javascript中return的作用
这里面的return含有一些细节知识: 例如:onClick='return add_onclick()'与 onClick='add_onclick()'的区别 JAVASCRIPT在事件中调用函数 ...
- Eclipse 导入项目乱码问题(中文乱码)
1.编码不对 a.对某文件或某工程更改编码: 鼠标移到工程名或文件名,右键->Properties->Resource->Text file enCoding ->更改编码 ...
- JavaScript 客户端JavaScript之样式表操作(DOM API 提供模块之一)
层叠样式 表和动态HTML 层叠样式表(CSS)是指定HTML文档或XML文档的表现的标准. 使用CSS和Javascript,可以创建出各种视觉效果,这些效果可以统称为动态HTML(DH ...
- c#0银行存款计算器
简介: 为银行存款客户提供一个超级计算器,简单直观操作界面,提供一个银行本意到期金额结算查询程序,方便用户选择存款方式. 功能截图: 实验步骤:利用工具栏建造窗体设计如图: 1.建立2个GroupBo ...
- CentOS5.5下安装Ant
从yum源直接下ant: [root@master local]$ yum install ant 运行ant,发现报错: java.lang.NoClassDefFoundError: org/ap ...
- jQuery--jqChart折线图使用eval处理返回数据无效的解决方法
jquery初学者 查了很多帖子,jqchart插件做折线图时,处理返回数据时全都是eval,但我怎么也弄不出来,后来发现: 1.根本不需要eval处理,直接截取字符串即可(返回值要拼接好): 2.处 ...
- 转:窗口启用/禁用功能函数EnableWindow的使用
在非MFC环境中如何使控件或者窗口禁用呢?起初是想通过发送消息来实现,但找来找去都木有找到控件禁用的消息(也是是博主木有找到的缘故),所以只能另辟蹊径,使用 EnableWindow这个函数, 该函数 ...