Oracle NoSQL Database初体验
发布日期:2016-7-27 18:7:21
NoSQL数据库的世界里在过去几年间,不断涌现出各种新项目,我们常听到雄心壮志的吹鼓手们拍着胸脯保证他们的新的NoSQL应用是怎样打破了所有的旧框架,能带来难以想象的性能。实际上呢,有些言过其实,NoSQL依然无法进入华尔街,即使是新潮的开发者们也只敢把它用在那些人们生活中的无关紧要的琐碎数据上。但老式的表式结构确实局限性太大了,若能抛弃掉这些,数据库的速度能得到飞速的提高。 正在这时候,Oracle这个一贯开发顶级的防弹SQL数据库的专家带来了它的NoSQL数据库服务器,坚固、实用,标准的Oracle风格。疯狂的梦想家们会继续编写NoSQL的新项目,但是严肃的人会仔细的关注一下Oracle的产品,由于它不仅带来了NoSQL中那些令人兴奋的功能,同时也符合严格大型工程的大手笔,让人肃然起敬。 Oracle NoSQL Database产品发布的消息可能会让NoSQL的粉丝们有些吃惊,但事实上Oracle已悄悄的在这条路上走了一段时间了。五年前,Oracle买了SleepyCat Software,这家企业就是当初的开源Berkeley DB的初创者,Berkeley DB在当时就以灵活的Key-Value存储模式而出名,而Berkeley DB的技术据说就是Oracle NoSQL Database的核心,尽管看上去是完全重写了一遍。 1、Oracle NoSQL:完全的ACID 在Oracle NoSQL中最有趣的地方就是Key-Value结构。不用再去定义大纲或把自己锁在表格架构里,只需创建关键字,然后把数据关联给它们就行了。你可给关键字连上一个字符串,也可连上一个图像文件,什么都可以,数据库接受字节码,不理会内容是什么。 Oracle把关键字分为主次两个部分,你可认为主部分是对象的指针,次部分是记录的各种字段。比如你可把姓名与社会保障卡号放在主部分里,把住址与邮编等等其他的字符串放在次部分里,这与一些NoSQL工具使用一个对象多个字段的做法不同。 Oracle NoSQL中重要的地方是针对ACID遵从而做的近似工程,这让Oracle NoSQL达到了SQL数据库所能提供的严格标准。ACID的意思是“Atomic,Consistent,Isolated,Durable transactions”,指的是持续、严密、隔离并且耐用的交易处理。大多数的NoSQL系统走的是另一条路:BASE,“Basically Available, Soft State, and Eventually Consistent”,保证基本可用性,柔性事务处理,保证最终结果的一致性。换句话说,强调结果不强调过程。 关于Oracle NoSQL是否真正提供ACID遵从还有不少争论,但是Oracle NoSQL确实可做出这样的承诺。 2、最终结果一致性:争论 这里有个问题可以提一下,耶鲁大学的计算机科学教授Daniel Abadi在博客上质疑说在某些情况下,Oracle的NoSQL向主服务器写入的关键字匹配会丢失,比如若主服务器宕机同时复制服务器又没有准备好。很快哈佛大学的计算机科学教授Margo Seltzer(我们知道她现在是Oracle的员工,她参与创建了Sleepycat)发表了回应,她认为这并不是Oracle NoSQL的问题,若要达到真正意义上的“最终结果一致性”,数据中心需要在准备好复制服务器的前提下才开始写入数据。显然想要这个争论得出结果可能会比一年一度的这两所大学之间的足球赛更难些。 当然这些争论并非我感兴趣的,为测试Oracel NoSQL的速度,我特意找了台低端的Mac配置。开启了单点NoSQL服务器,然后往里面塞入358400条关键字,都是长度大约30的字符串。在这台老掉牙的Mac上,Oracel NoSQL一共用了119秒。 为对比一下,我把相同的记录插入最新版的Voldermort数据库,在这个LinkedIn症状使用的开源Java NoSQL数据库上,用掉的时间是180秒。 我对这个简单的测试结果感到很高兴,似乎Oracel NoSQL领先了不少。创建关键字需要建立字符串数组,而对象的实例化经常成为Java的瓶颈,在这个测试中Oracel NoSQL似乎没有碰到这方面的问题。 总的来说,Oracle NoSQL非常值得你去试一试。由于它提供了这么多严谨的功能,又是来自这样一个严谨的数据管理厂商,而这样的厂商又正是国内所缺乏的,像阿里云这样的更需要学习。 上一条: Amazon高性能计算云的强大武器
|