db4o 近来获得了快速的发展,Db4Object 最近发布了他们的旗舰产品 db4o——嵌入式 ODBMS 的 7.0 版本,并宣布他们的开源 ODBMS 已有超过 30000 个布署。这是否意味着 ODMBS 的市场格局正在发生着改变?
InfoQ 采访了 db4objects(db4o)的 Nik Wekwerth,以了解他对 ODBMS 形势的看法和最近发布的 db4o 的新特性。讨论是从列举一些开发者社区表面上看越来越受欢迎的面向对象数据库后面的一些驱动开始的。在他看来,ODBMS 又回来了,并且还吸收了三个让它成长得很快的因素:
- 更易于 Java 和.NET 原生操作
- 适用于特定问题域
- 开放源代码
对这三个因素,他逐个地进行了仔细说明:
…开发者用不着去学习新的语言,对于 db4o 而言,他们只需要加入一个最终发行的 jar 或 dll 文件,然后就可以上线、运行… 简单的用法及全面与编程语言的集成、原生方式是面向对象数据库获得全面成功的关键…Java 和.NET 的原生查询让开发工具获益非浅,如类型安全编码、消除对像关系映射中复杂构造的浅显错误、也省去了学习另一门语言繁杂之处的代价。 …应用程序的需求应该确定开发者究竟是该使用 RDBMS,还是 ODBMS。许多应用领域都能很好地适应面向对象的结构和持久化,诸如复杂的配置、安全性数据、可搜索的多媒体或是空间数据,以及一个数据域内非常复杂的关系。另一个决定性的因素是持久化是否能全面“嵌入”到应用中去,例如,同样是在对最终用户不可见的情况下,相比一个应用将对象映射后存储到表中而言,使用一个对像化数据库则会显得更加简洁和并易于维护。
…开源是最近大量应用对象数据库的巨大推动力,开发者们实际也一直喜欢 ODBMS 开源的理念,而购买像 Oracle 这样的 RDBMS 的决定,往往不是 DBA 做出的,更多的是管理者来决定的,他们有时是因为数据抽象这样的需求而做出正确的决定,或由于某些原因做出错误决定(如在打高尔夫球的时候签下了合同)。开源已经让开发者们重新获得了有利的地位。他们现在可以“在雷达式管理之下”依然能自主地决定该如何设计,并证明对象数据库帮助他们节约了时间,他们创建了许多令人信服的架构,并最终为他们的客户节省了大笔的资金。
db4o 被应用得最多的场景是被嵌入到应用中,而不是以最终用户或开发者可见的独立布署的数据库。Nik 将之称为一个通过对象数据库简化了的 API 提供的零管理环境,消除了所有运行时的管理需求,开源的特性让它非常适合嵌入到不仅限于像机器人、汽车和手机这样的设备,也可用于打包分发的软件中,如 SCADA 系统(译者注:Supervisory Control And Data Acquisition,即数据采集与监视控制系统)和无处不在的网络缓存应用,Nik 还提到 Ricoh(理光)正在他们的打印和复印机中使用它。
谈到企业级的应用时,Nik 列举了 ow 金融协会利用 db4o 的优势,将其作为智能数据缓存来缓存中央数据库的数据,以加快事务处理。他还特别说明,对象数据库能很好地与关系数据库协同工作,就 db4o 而言,它允许向关系数据库中复制数据。
后来话题转移到 7.0 版的 db4o 中的新特性上:
最大的亮点就是透明激活(Transparent Activation,简称 TA),TA 通过自动化的对象激活方法简化了对象的获取。使用 TA,可用对象只有在当它们被请求时才会被激活,其中的关键就在于开发人员不再需要手工定义激活的深度,正是这一点简化了编码工作。另一个好处就是对内存消耗的优化,对象只有在被请求时才会被加载到内存中。 有了透明激活,开发人员无须再担心该在什么时候、又该以怎样的方式去加载对象。db4o 在运行时比开发时为开发人员提供了更多的信息,因此,db4o 能更巧妙地完成的工作,只有当真正需要对象时才装载它们。
专为商业版提供的产品中包括另外两个重要特性:
- ObjectManager Enterprise——一个 Visual Studio 插件,允许在 IDE 中浏览和查询数据数据库;
- XtremeConnect——一种虚拟的结对技术,可以通过 Skype 和 TightVNC 进行远程结对编程。
db4o 也正准备着一款即将发布的、针对.NET 平台的产品。Nik 还描述了 Java 与.NET 版本之间的相似点与不同之处:
我们的 Java 和.NET 版本都是源自于同一个共享代码库,所有的发行版本都是通过持续构建、在平台间进行代码转换后自动生成的,在某些地方,我们会针对平台分别进行一些调整,以符合标准惯例……只有极少数不同的地方:现在的 db4o 复制系统(db4o Replication System,简称 dRS)是基于 Hibernate 构建的,所以与.NET 相比,它在 Java 平台上更完善一些。在.NET 上,我们正在为短期内提供 LINQ 接口而努力。
最后,Nik 说到,“数据库文件的格式是相同的,你可以用.NET 来打开 Java 生成的数据库,反过来也是可以的;你还可以使用 Java 客户端来连接.NET 服务器,反之亦然。”
在此次访问中,对于 Google 的 Android 平台给他们的产品所带来的机会,Nik 还分享了他的看法,db4o 是允许独立软件供应商们用它来为 Adroid 开发软件的:
…客户端应用能适应自动超时,因为 db4o 能检测、并在 schema 变化时进行调整;还能在不同的应用间协作和共享数据。db4o 能承担各种不同方面的数据管理工作,例如,当你使用无线方式更新软件的一个新的数据模型时,db4o 就能很好地适应和管理。 db4o 还直接与开放手机联盟(Open Handset Alliance)的一些成员一起为克服 Android 数据库的缺点而努力,它还提供了强大的跨应用持久化增强,最终我们将看到,手机将会提供更多以用户生成数据(UGD,即 User generated data)为中心的新型服务,例如全面备份所有应用数据的功能,假如你不幸丢失了手机,你可以买到一个新的手机,而你所有的个人数据都会是预装好的;另一种应用的场合就是 P2P 的数据共享和 P2P 的社交网络。
对于 db4o,你有什么意见?是否正在你的应用中使用 ODBMS?你认为在什么样的场合中,ODBMS 会比传统的 RDBMS 方式工作得更好?
评论