Berkeley DB SQL 5.2新Vacuum功能简介

2011年7月1日 赵汝聪 评论已被关闭

Berkeley DB 5.2版本在六月份顺利发布了。在这一版本中,我负责设计实现了Berkeley DB SQL的新Vacuum功能:增量Vacuum和Fill Percent参数。以下向大家介绍一下这些Vacuum功能的用法。

1. 什么是Vacuum

一个数据库在进行多次写操作(增,删,改)后,就会攒下一些碎片,即填充率非常低的页面(page)或是空白页面。这些页面占用了不少空间,却仅存储了少量数据。Vacuum的作用好比Windows下的磁盘碎片整理,即依次扫描数据库的数据页面,将数据搬移得更加紧凑,腾出空白页并且删除之,缩减数据库大小。Berkeley DB SQL(以下简称DBSQL)支持在线Vacuum(对一个正在运行的数据库进行操作)。你可以把它想像成扫描重排页面数据的写进程,这个进程可以和其它的所有OLDP操作并行执行。

在使用Vacuum时需要清楚以下要点:
- 整理数据碎片,回收文件系统空间,提升查询性能。
- 频繁操作会影响当前主业务性能。因此在DBSQL 5.2版本中,针对这一问题实现了增量Vacuum。用户可手动控制Vacuum操作涉及的数据块大小。
- 如果数据库被压得过紧,空闲空间不足,那么插入新数据时数据库需要频繁分配新页面,影响了操作性能。因此在DBSQL 5.2版本中,针对这一问题引入了Fill Percent参数。用户可手动控制Vacuum时的页面填充率。

以下具体介绍Berkeley DB SQL (以下简称DBSQL) 5.2版本中Vacuum功能的使用方法:
阅读全文…

分类: Berkeley DB, 赵汝聪 标签: ,

OTN论坛翻译:如何在JE中实现分页

2011年6月20日 chaohuang 评论已被关闭

这篇文章翻译了一个在JE OTN论坛关于如何实现分页的讨论。由于时间仓促,采用google翻译的内容可能比较晦涩,请谅解。英文原文见 http://forums.oracle.com/forums/thread.jspa?messageID=3197926.

1楼,用户Shoaib的提问:

有一点我注意到的是,在使用DPL我们无法得到ArrayList的代理实现,像Map和sorteMap。 假设,如果我想从索引第5000条记录位置获取到下50条记录,我会通过EntityCursor迭代器或key的Map遍历获取未来50个记录。

因此,当我们实现分页并一页一页进行页面遍历,这个过程中要消耗大量的CPU周期。 我可以使用EntityCursor跳转到记录号对应位置(而不通过主键)吗? 现在我不看任何这样的选项。 有没有使用DPL我们可以指定记录号而不是主键进行访问?

如果我这样做(如下),它将吃了整个内存,如果有百万条记录的话。

ArrayList list = new ArrayList(dao.getMyEntityByPK().map().values());

这将把所有实体值载入到内存的ArrayList。

阅读全文…

Berkeley DB 5.2 正式发布

2011年6月16日 linchunsun 评论已被关闭

经过9个月的紧张开发,Berkeley DB(下文简称BDB)于2011年6月15日正式发布了最新版本,版本号为Oracle Berkeley DB 11gR2 (11.2.5.2.28)。

从上世纪80年代第一个版本诞生至今,BDB一直扮演着嵌入式数据库领域领头羊的角色。由于具备了强大的性能,极度的易用性和良好的稳定性,BDB成为这个世界上最受欢迎的嵌入式数据库,并被广泛应用于从路由器到浏览器到操作系统等等计算机系统的方方面面之中,为用户带来了巨大的价值。下面,就让我们一起来揭开Berkeley DB 5.2.28(以下简称BDB5.2)的神秘面纱,看看这个最新版本的BDB将为开发者带来了哪些激动人心的新特性。

新的访问方法 (Heap Access Method)】

在保留原有的btree,hash, recno和queue这四种访问方法的基础上,BDB5.2新增了heap 访问方法。Heap 访问方法通过复用删除数据所释放的空间,将数据库的大小控制在一个限定的范围内,有效的提高了空间利用率。它适用于存储容量受限的设备或对数据库文件大小有严格限制的环境,以及插入密集型的应用程序。比如可用来做中间服务器的静态图片缓存。

动态资源管理 (Dynamic Resource Management)】

BDB5.2中,开发者无需再显式指定每种系统资源(如lock,locker等)的上限并在程序开始时一次性分配;BDB5.2将在程序运行过程中动态分配这些资源。资源的分配将根据实际的使用情况动态增长。

扩展的高可用性 (SQL support for HA/replication) 】

BDB5.2为SQL接口也增加高可用性支持。开发者可以在多个节点上通过SQL HA来构建一个数据库集群,从而扩展了计算能力。

扩展的Sequence (SQL support for Sequence)】

BDB5.2的SQL 接口引入了Sequence的支持,允许用户使用SQL语句生成序列, 并提供事务保护。

灵活的高可用性管理 (Group Membership) 】

BDB5.2引入了新的组管理机制,允许用户动态地向组(Replication Group)里添加或者删除结点。系统将自动调整和维护组的大小。

新增的db_tuner工具 (db_tuner)】

BDB5.2新增了一个db_tuner工具,可以辅助用户选择合适的page size,提升程序的性能。

除此之外,秉承我们一贯的为用户提供最高性能,最灵活的嵌入式数据库的理念,最新的BDB5.2 还修正了上一个版本中存在的各种问题,并对原有的多项功能进行了增强。更多详情,参见这里

您可以通过 BDB下载页面下载并体验最新的BDB5.2. 如果您有任何问题,欢迎通过我们的博客或者BerkeleyDB的新浪微博留言,也欢迎通过邮件联系我们。

分类: Berkeley DB, Linchun Sun 标签:

bdb开通新浪微博

2011年5月30日 chaohuang 3 条评论

各位BDB中文博客的粉丝们,为了更好的和大家交互并分享BDB的消息,我们刚刚开通的新浪微博。微博地址为:

http://www.weibo.com/bdbchina

欢迎各位朋友添加关注并和我们分享信息。感谢大家的一直以来的支持。

备注: 由于工作比较忙(很少看博客评论),我们推荐大家使用新浪微博和我们互动,从而可以得到更及时、有效的反馈。

Oracle Berkeley DB 中国开发团队

BDB深圳新增两个职位

2011年4月8日 chaohuang 2 条评论

Oracle(深圳)招聘嵌入式数据库研发工程师

Oracle公司 Berkeley DB (简称BDB) 是业界知名的嵌入式数据库,目前拥有开源和商业两种使用许可。BDB被广泛应用于各种场合,从小型的手持设备(如手机)到大型的分布式应用(如云存储)都可以找到BDB的身影。

BDB产品研发团队在全球拥有一批资深工程师,某些工程师有超过20年的数据库开发经验。2007年,BDB在深圳成立了中国研发团队,组内工程师均毕业于国内和香港著名高校。

本次BDB产品研发团队面向社会招聘如下两个职位:
1. 数据库核心开发工程师(1人);
2. 数据同步服务器(Oracle Mobile Server) 开发工程师(1人)。

两个职位的工作地点均在深圳,薪酬优厚。感兴趣的朋友请发简历至:chao.huang[at]oracle.com

职位1:数据库核心开发工程师(1人)

工作职责:
- 负责 Berkeley 数据库的性能优化和新功能开发工作;
- 负责 Berkeley 数据库分布式和云计算架构的设计和开发工作;
- 负责 Berkeley 数据库测试和QA工作;
- 协助销售团队解决客户技术问题。
职位要求:
- 熟悉一项或多项项目开发流程:项目规划和协调,新功能设计和实现,产品测试和QA,产品发布;
- 熟练掌握一种或多种编程语言(C,C++ 或者Java),熟悉一种或多种操作系统:Linux,Windows,Android等;
- 对SQL语言和数据库内核有较深入理解者优先,包括缓存管理,索引,日志,恢复,并发控制等等。

职位2Oracle Mobile Server 开发工程师(1人)

工作职责:
- 参与Oracle Mobile Server的新功能开发、测试与性能优化;
- 协助Oracle Mobile Server软件发布。
- 为客户在使用过程中遇到的问题提供解决方案。
职位要求:
- 精通J2EE,SQL和PL/SQL的开发与测试。
- 熟练掌握一种或多种编程语言(C,C++ 或者Java),熟悉一种或多种操作系统:如Linux,Windows,Android;
- 有系统性能调优,SQL调优,Oracle数据库调优和Web/APP服务器调优经验者优先。

两个职位均要求有较好的英语读写能力,以及具有追求卓越的热情。除了参与产品本身的研发,也将有机会协助销售团队与中国的潜在 客户进行沟 通,解决客户所遇到的技术问题。目前,Berkeley数据库在中国市场(甚至是整个 亚太地区)的需求不断增大。加入我们,您可以通过 您的努力让我们的产品越来 越好,从而占领越来越多的市场。可以说,这是一份具有很大的挑战性,但是又是 充满乐趣的工作岗位!期待您的加入。
阅读全文…

分类: Berkeley DB, Chao Huang 标签:

Using Oracle Berkeley DB as a NoSQL Data Store

2011年2月24日 chaohuang 2 条评论

Using Oracle Berkeley DB as a NoSQL Data Store

By Shashank Tiwari

Learn why and how Oracle Berkeley DB can bring NoSQL benefits to your app.

Published February 2011

“NoSQL” is the new popular buzzword among developers, architects and even technology managers. However, despite the term’s newfound popularity, surprisingly there is no universally agreed-upon definition for it.

Generally, any database that isn’t RDBMS, upholds schema-less structures, is generally relaxed on ACID transactions, and promises high availability and support for large data sets in horizontally scaled environments is popularly categorized as a “NoSQL data store”. Given that these common features often seem in direct contrast to those of a good old RDBMS, some people propose non-relational, perhaps shortened as NonRel, as a more appropriate term than NoSQL.

Regardless, while the definitional conflict continues, many have begun to realize the benefits of NoSQL data stores by including them in their application stack. The rest are keeping a close watch and evaluating if NoSQL is right for them.

阅读全文…

BDB JE事务的提交方式概述

2010年12月24日 taozhang 评论已被关闭

这段时间看到有些用户对BDB JE的事务持久性(Durability),主要是JE各种事务提交方式比较感兴趣。以下这篇博客介绍了事务的持久性,并简要描述了JE事务所提供的提交方式。

大家知道,事务具有ACID特性,即:原子性,一致性,隔离性和持久性。事务的持久性意味着当系统或介质发生故障时,确保已提交事务的更新不能丢失,即一旦一个事务提交,数据库保证它对数据库中数据的改变是永久性的,能够承受任何系统故障,持久性通过数据库备份和恢复来保证。

事务的持久性与事务的提交方式有着密切联系,当JE的用户创建一个事务时,用户通过设置TransactionConfig来指定事务的提交方式,分别是:

  1. TransactionConfig.setNoSync(boolean),即txnNoSync
  2. TransactionConfig.setWriteNoSync(boolean),即txnWriteNoSync
  3. TransactionConfig.setSync(boolean),即txnSync。

阅读全文…

分类: Berkeley DB JE 标签:

BDB JE 发布4.1新版本 — 3倍cache性能提升

2010年11月5日 chaohuang 19 条评论

BDB Java Edition 4.1 delivers up to a 3X performance improvement over JE 4.0 in some read-only scenarios where the working set doesn’t fit in the cache. The new release includes multi-threaded cache management and advanced in-memory Internal Node compression.

With Concurrent Eviction, cache management is now multi-threaded, resulting in reduced latency and a smoother performance curve as the application data exceeds the cache space. Internal Node (IN) Compression significantly reduces the in-memory footprint of internal data structures, creating better efficiency.

Tests run by a BDB JE user comparing JE 4.0.103 to JE 4.1 using a read-only workload demonstrate extraordinary improvements. The two versions have equivalent performance when the database fits completely in cache (4 GB of memory), but when the cache size is dropped to .5 GB (only some of the Internal Nodes fit in memory) the throughput and latency of JE 4.1 is 300% better than 4.0.103.  Further, the variation in latency is greatly reduced.

Software Downloads

* Downloads for software and the latest documentation will be available on OTN.
* Downloads available today at http://download.oracle.com/berkeley-db/je-4.1.6.tar.gz (.zip).

分类: Berkeley DB JE, Chao Huang 标签:

Oracle Open World 2010旧金山 — BDB 演讲系列 (II)

2010年11月4日 chaohuang 评论已被关闭

这次为大家带了的是Berkeley DB与移动数据同步的演讲。具体解决了当今从移动的终端向数据中心的Oracle数据库进行数据同步、设备管理、应用管理等场合的需求。转载请注明出处。 阅读全文…

分类: Berkeley DB, Chao Huang 标签: , , ,

OOW2010 BDB客户案例 — Thomson Reuters使用BDB构建智能信息库

2010年11月4日 chaohuang 评论已被关闭

Thomson Reuters (汤姆逊路透社)大家都知道是全球的新闻及媒体方面的领军。最近在2010年9月的Oracle Open World上,Thomson Reuters和我们分享了如何使用BDB来管理公司的全球信息库。本文抽取部分章节,供广大读者参考。转载请注明出处,谢谢。 阅读全文…

分类: Berkeley DB, Chao Huang 标签:
Դ