InfoQ

新闻

Db4Objects发布Db4o 7.0,支持透明激活

作者 朱永光 发布于 2007年11月26日 上午7时32分

社区
.NET,
Java
主题
开放源代码,
数据访问,
面向对象设计
标签
db4o

最近,Db4Objects公司发布了他们对象数据库产品db4o的7.0版。

db4o被很多著名的企业所使用,如:波音公司、希捷公司、IBM和Intel等。

作为一款成功的对象数据库产品,它具有如下特点: 

  • 开源,基于GPL发布,也可以购买商业版本用于商业开发
  • 多平台支持,既支持Java平台也支持.NET平台,对于.NET CF和Mono也能很好的支持
  • 嵌入式引擎,和应用程序共同分发,也提供了C/S的模式让多个客户端访问同一数据源
  • 轻量级,运行文件只有600K左右
  • 创新的数据查询方式,使用原生查询(Native Query)可以语义化、类型安全的对数据进行查询

国内的db4o爱好者Rosen Jiang张黄瞩Chris在IBM developerWork中国上曾发表过《开源面向对象数据库 db4o 之旅》系列文章,讲述了在Java平台上如何使用db4o。在db4o自带的教程中,可以学习到在.NET上使用db4o也极其简单:

// accessDb4o
IObjectContainer db = Db4oFactory.OpenFile(Util.YapFileName);
try
{
    // do something with db4o
}
finally
{
    db.Close();
}

 // storeFirstPilot
Pilot pilot1 = new Pilot("Michael Schumacher", 100);
db.Set(pilot1);

// retrieveAllPilotQBE
Pilot proto = new Pilot(null, 0);
IObjectSet result = db.Get(proto);

// deleteFirstPilotByName
IObjectSet result = db.Get(new Pilot("Michael Schumacher", 0));
Pilot found = (Pilot)result.Next();
db.Delete(found);

db4o在国内也有一些运用实例。Rosen Jiang的文章《实战 OpenLaszlo 与 db4o》向大家介绍了一个db4o和OpenLaszlo结合实现RIA的案例。在一个名为“敏捷实验室”的开发团队中,他们使用db4o来开发他们内部开发框架中的离线缓存机制和服务端字典缓存机制。通过以上例子,我们可以看到合理运用db4o,确实可以显著简化开发过程,Ted Neward也有同感。目前,db4objects公司和爱好者正在积极推进db4o运用于Google Android平台,以期让db4o成为Android上首选的数据库平台,更多信息可以访问他们的论坛

在最新发布的7.0版本中,带来了如下新特性和加强:

  • 透明激活(Transparent Activation,TA
  • 性能提高
  • 错误处理机制的加强
  • 支持唯一约束
  • 多事务对象容器(Multi-Transactional-ObjectContainer ,MTOC)
  • 提交时回调(Commit-Time Callbacks)
  • 提供了和OSGi框架兼容的接口(OSGi框架是一个Java中间件,能让软件作为动态组件进行结构化)

透明激活(Transparent Activation,TA)是7.0版本中最重要的新特性:

透明激活能自动的检测到那个对象会被应用程序所访问,因此只从磁盘上加载最小内容,这样就能让内存消耗更少,让性能显著提升。
目前,db4o 7.0只发布了Java平台的Beta版本,.NET版本已经被列入了十二月的开发计划,并有望在2008年第一季度发布。你可以通过这里下载所有的版本。
支持主键字段了没? 发表人 超 陆 发表于 2007年11月26日 上午8时59分
Re: 支持主键字段了没? 发表人 Kevin Chu 发表于 2007年11月30日 下午11时53分
Re: 支持主键字段了没? 发表人 Sha Jiang 发表于 2007年12月1日 上午7时35分
  1. 返回顶部

    支持主键字段了没?

    2007年11月26日 上午8时59分 发表人 超 陆

    很多应用里还是必须有主键字段的.虽然唯一约束经过一定的包装也能解决问题,但毕竟还是专门的实现机制性能更高一些.

  2. 返回顶部

    Re: 支持主键字段了没?

    2007年11月30日 下午11时53分 发表人 Kevin Chu

    db4o中每个对象都有一个UUID,不知道这个是否可以用作主键。

  3. 返回顶部

    Re: 支持主键字段了没?

    2007年12月1日 上午7时35分 发表人 Sha Jiang

    > db4o中每个对象都有一个UUID,不知道这个是否可以用作主键。
    从业务的角度来看,UUID没有特别的意义。

    从6.2版开始,db4o已经支持唯一性约束。
    主键?这个特性似乎没有必要。

深度内容

模块化Java:声明式模块化

本文是模块化Java系列文章的第4篇,介绍的是声明式模块化。文中描述了组件如何以声明的方式来定义并组织在一起,而无需让代码依赖于OSGI API。

Ian Robinson和Jim Webber谈论基于Web的整合

本采访是在伦敦举行的QCon2009上记录的,Ian Robinson和Jim Webber探讨了如何将Web作为整合平台以及REST在理论上和实践中的好处。

项目管理修炼之道(精选版)

项目管理对于项目成败至关重要,但实践中每个项目都有自己的独特性,没有现成的解决方案可以套用。书中从应对实际风险的角度出发,讲述了从项目启动、项目规划到项目结束的整个管理流程,展示了作者的思考过程。本迷你书从原书中精选出5个章节。

那是鸟,还是飞机?不,那是超人!

在这个演讲中,Fred将会揭示敏捷的一些外在因素,并会重点关注敏捷获得成功的内在原因。从案例研究和真实的项目经验来看,Fred认为:工具、管理体系都不能让你变得敏捷。敏捷的成功,植根于士气高涨、充分授权的工作者身上,他们能够以不同以往的方式思考问题。

访谈和书摘:Eben Hewitt的新书《Java SOA Cookbook》

Java SOA Cookbook

Eben Hewitt的新书《Java SOA Cookbook》从Java实现的角度讨论了面向服务架构。Eben在书中讨论了SOA基础、工具、最佳实践和SOA治理等主题。

Mark Richard的《Java消息服务》第二版

Mark Richards的新书《Java消息服务》第二版覆盖了JMS的许多主题, 包括发布和订阅模式以及点对点模式,消息过滤和事务等。InfoQ与Mark谈论了跟他的新作。

模块化Java:动态模块化

本文是“模块化Java”系列文章的第三篇,讨论动态模块化,内容涉及如何解析bundle类、bundle如何变化、以及bundle之间如何通信。

让测试也敏捷起来

对于测试组织来说,敏捷方法带来的快速迭代却让测试本身变得困难起来:缺乏“足够详细的文档”,缺乏“仔细设计用例的时间”等等。在本演讲中,段念将与大家探讨如何在敏捷过程中进行测试。