甲骨文NoSQL数据库的第一印象

[摘要]  对NoSQL的先行者而言,甲骨文推出NoSQL数据库可以被解读为:“模仿是最真诚的赞赏”。

 中国软件网讯   对NoSQL的先行者而言,甲骨文推出NoSQL数据库可以被解读为:“模仿是最真诚的赞赏”。

过去几年间,NoSQL数据库领域充满了令人兴奋的新项目、雄心勃勃的声明,当然也有盲目的自信。NoSQL的支持者称,通过抛弃传统的结构和偏执的三次检测,新的NoSQL软件包可以提供大量性能优势。那么可靠性呢?即便是那些并不是为华尔街银行运行重要业务应用,而只是处理人们生活中琐碎而易忘数据的新程序员也认为,NoSQL的可靠性被高估了。表结构呢?它们又过于死板且局限性太大。如果我们忽略这些事情,我们的数据库将更为自由,并且速度更快。

但是在热情消退,人们开始正视现实。NoSQL数据库的无边界实验慢慢的开始回归现实。正在这时,甲骨文这个一贯开发顶级SQL数据库的专家带来了它的NoSQL数据库服务器,而这个新的数据库秉承了甲骨文一贯的坚固、实用,标准的开发风格。尽管狂热的梦想家能够继续创建NoSQL数据仓库,但是务实的人希望能够看一下甲骨文的版本。因为它提供了许多功能,这些功能够让NoSQL非常有趣,同时也符合严格的大型工程的手笔。NoSQL的先锋们希望告诉他们自己,模仿是最真诚的赞赏。

甲骨文NoSQL数据库的出现绝对让NoSQL粉丝感到吃惊,因为他们经常听到资深的数据库工程师在自豪地谈论甲骨文数据库。不过,甲骨文已经悄悄的在NoSQL数据库这条路上走了一段时间了。五年之前,甲骨文收购了开源伯克利数据库(BerkeleyDB)的开发商Sleepycat,为C语言和后来的Java程序员提供了灵活的键值存储。而Berkeley DB的技术据说就是甲骨文NoSQL数据库的核心,虽然看上去像是被完全重写了一遍。

甲骨文NoSQL:实用的ACID

甲骨文NoSQL数据库最有趣的地方就是它的键值结构。你不需要再去定义大纲,或者把自己锁在表结构中。你只需要创建关键字,然后把数据关联给它们就可以了。你可以给关键字连上一个字符串,也可以连上一个图像文件。什么都可以,数据库接受字节码,不去理会内容是什么。

甲骨文把关键字分为主次两个部分,你可以认为主部分是对象的指针,次部分是记录的各种字段。例如,你可以把姓名和社会保障卡号放在主部分里,把住址和邮编等等其他的字符串放在次部分里。这和一些NoSQL数据库工具使用一个对象多个字段的做法不同。

甲骨文NoSQL数据库中重要的地方是针对ACID遵从而做的近似工程,这让甲骨文NoSQL达到了SQL数据库所能够提供的严格标准。ACID的意味着事务所具备的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

不过,目前对于如何解释其具体含义还存在着很大的争议。而大多数的NoSQL系统走的是另一条路:BASE,即基本可用(Basically Available)、软状态(Soft State)和最终一致性(Eventually Consistent)。换句话说,你可能会得到正确的答案,除非你不做。关于甲骨文NoSQL数据库是否真正提供ACID遵从还有不少争论,但甲骨文NoSQL数据库确实可以做出这样的承诺。

最大争论:最终一致性

耶鲁大学计算机科学教授Daniel Abadi在博客提出了自己的质疑。他说,在某些情况下,甲骨文NoSQL数据库向主服务器写入的关键字匹配会丢失。比如在主服务器宕机,同时备份服务器又没有准备好的情况下。

很快,哈佛大学计算机科学教授Margo Seltzer就最初了回应。Seltzer现在是甲骨文的员工,她参与创建了Sleepycat。Seltzer认为这并不是甲骨文NoSQL数据库的问题,如果要达到真正意义上的“最终一致性”,数据中心需要在准备好备份服务器的前提下才开始写入数据。而可以想见的是,要让这一争论有个最终结果是非常困难的。

为了测试甲骨文NoSQL数据库的速度,我们进行了如下测试:在一台低端的Mac计算机上开启了单点NoSQL服务器,然后往里面塞入358400条关键字,都是长度大约30的字符串。在这台老掉牙的Mac电脑上,甲骨文NoSQL数据库共用了119秒的时间。比较而言,把相同的记录插入最新版的Voldermort数据库,在这个LinkedIn症状使用的开源Java NoSQL数据库上,耗时为180秒。

如此看来,甲骨文NoSQL数据库似乎领先不少。创建关键字需要建立字符串数组,而对象的实例化经常成为Java的瓶颈。在这一测试中,甲骨文NoSQL数据库似乎没有碰到这方面的问题。

总体而言,甲骨文NoSQL数据库值得一试。因为它提供了许多严谨的功能,又是来自这样一家严谨的数据库厂商。在许多方面,与简单的NoSQL工具相比,甲骨文NoSQL数据库的设计相当周到并且精巧。此外,当面临节点崩溃,或是面临要速度还是持久性的问题时,你还有许多选择,这些选择都可以增强持久性。文档具有一致性,它们由在企业客户数据存储方面拥有丰富经验的工程师所编写。

甲骨文NoSQL数据库可能不会提供令人兴奋的趣味性,以及许多纯开源NoSQL项目所具有的“随意创建”体验。不过,这并不是它的真正用处。甲骨文从这些团队那里借鉴到了最佳的理念,创建了能够向企业市场最适当的地方提供更佳性能的数据库产品。

原文链接:http://www.cnw.com.cn/software-open-source/htm2011/20111129_238323.shtml




免责声明:

本站系本网编辑转载,会尽可能注明出处,但不排除无法注明来源的情况,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系, 来信: liujun@soft6.com 我们将在收到邮件后第一时间删除内容!

[声明]本站文章版权归原作者所有,内容为作者个人观点,不代表本网站的观点和对其真实性负责,本站拥有对此声明的最终解释权。