本帖最后由 oracle_cj 于 2014-3-10 15:30 编辑
1.请结合NewSQL数据库公司NuoDB成功融资1400万美元的事实,简要分析下NuoDB与其它的关系型数据库的不同点,它有哪些优势? 1) NoSQL数据库由于其良好的可扩展性和灵活性受到众多公司青睐,且其发展势头正,Oracle、微软、IBM和Sybase四家公司占据了全部的市场份额。但随着开源软件、云计算以及现在大数据的发展,数据库技术又迎来了新的契机,其中涌现了大批创业公司,数据库创新的热情也再度被调动起来。最近数据库初创公司NuoDB又获得了1400万美元的融资,发展势头异常迅猛。 2) 与其它的关系型数据库不同,NuoDB可以通过添加更多的服务器来扩展数据库,而无需升级主机,这样的设计对于部署在云中的应用程序非常可靠,最重要的是NuoDB价格比Oracle关系数据库更便宜。”数据库市场近年来群雄并起,像NuoDB等初创公司迅速发展是因为他们与传统的关系型数据库厂商Oracle、IBM和SAP不同。其它一些很有潜力的数据库初创公司还包括MemSQL、 RedisLaps、RethinkDB以及刚被IBM收购的Cloudant。这些公司的专注方向各有不同,NuoDB目标是事务性的,这意味着它可以处理关键任务数据的读写并能够持续保持,而且它支持SQL查询语言——这与时下非常火的NoSQL数据库公司MongoDB不同。很多人将NuoDB视为NewSQL产品,但在Morris看来你很难用SQL来定义NuoDB。他表示,NuoDB并不是技术演变渐进的成果,而是一个具有革命性的产品,是未来数据库的范本。分布式数据库公司VoltDB的首席技术官Michael Stonebraker表示NoSQL数据库可提供良好的扩展性和灵活性,但他们也有自己的不足。由于不使用SQL,NoSQL数据库系统不具备高度结构化查询等特性。NoSQL其它问题还包括不能提供ACID(原子性、一致性、隔离性和耐久性)的操作,另外不同的NoSQL数据库都有自己的查询语言,这使得很难规范应用程序接口。 3) NuoDB重新定义了关系型数据库技术,它是针对弹性云系统而非单机系统设计的,因此可以将其看作是一个多用户、弹性、按需的分布式关系型数据库管理系统。NuoDB的特点包括:拥有任意增减廉价主机的功能,能够实现按需共享资源,提供不同的业务连续性、性能以及配置方法,极大程度地降低数据库运维成本。
2.数据库市场近年来群雄逐鹿,异军突起。有以Oracle、IBM和SAP为代表的传统的关系型数据库厂商在领跑SQL数据库,也有大数据时代下凭借处理非结构化数据红极一时的NoSQL数据比如MongoDB与Redis,还有在SQL 与NoSQL之间游离需求平衡的NewSQL数据库。请结合您的实际体验,谈谈您看好哪种类型的数据库。
NoSQL最初为Not SQL的缩写,如今已经演变为Not Only SQL,因为开发商已经意识到,实际上更喜欢SQL的人以及有大量SQL经验的人比JAVA或其他程序员的雇佣成本更低,而且这样的人更容易被招募到。 事实上,NoSQL不使用SQL是一个错误。不使用SQL不是因为它的性能不好,而是因为关系产品架构不适合某些类型的任务。但在没有这些类型的任务时,又很容易陷入认为SQL等同于关系技术(Relational Technology)的陷阱。关系架构的关键一点是将物理实例从逻辑实现中分离了出来,不过大多数包含关系存储和关系访问层的关系产品也是如此。但该例子无需演示DB2在关系型和基于XML数据存储引擎的不同。 无论如何,NoSQL开发商已经意识到他们的错误并加入了SQL功能。但笔者真正要讨论的是所谓的NewSQL数据库。这些数据库从一开始就设计包含了SQL接口(而不是之后才添加的),而且在下层不需要关系存储引擎。最近出现的NewSQL数据库为VoltDB,为Michael Stonebraker的另一项作品。它是一种标准关系数据库,但是将所有关系发展累积超过四十年的不必要的小组件剔除,使其比传统版本更精简更有效,因此它比商业数据库执行效率更好,并且缩小了它的覆盖面,而所有的NewSQL数据库都是如此。另一种NewSQL数据库是Xeround公司的,该公司是一个基于云服务的数据库公司,提供灵活的scaling和NoSQL roots。像所有其他NewSQL数据库一样,该公司的NewSQL数据库主要侧重于事务处理,除了它固有的能力,Xeround公司数据库的另一个主要不同为,它看起来像MySQL,这使其很容易将现有的MySQL用户迁移到云端。还有两个有意思的NewSQL数据库:NuoDB(前身为NimbusDB)和JustOneDB。目前笔者尚未得到二者的测试程序,因为NuoDB目前处于beta阶段,JustOneDB项目也才刚刚开始。 NuoDB在一个与BitTorrent类似的端到端环境中使用一种分布式对象架构(像许多NoSQL数据库一样)。当更新一条记录时,会将其改变追加到已经存在的数据上,而不是替代它,因此可以看到数据库中的所有历史数据。该架构涉及到事务节点和归档节点的使用,其中前者使用 内存,后者使用键/值存储来保持数据。因多个归档节点可以保持没有请求备份的相同数据,也就不必要为高可用性来复制数据,以及不必要进行分块。这听起来很像标准的NoSQL数据库,但最大的不同是,NuoDB数据库被特别设计来支持SQL,且完全支持ACID(原子性-Atomicity、一致性-Consistency、独立性-Isolation、持久性-Durability)。而JustOneDB又是另外一回事,它也完全支持ACID(像Oracl NoSQL数据库)且被设计支持SQL。它的环境看上去像PostgreSQL,且运行在Heroku的云端。但是它使用完全不同的其公司称之为隧道存储(tunnel storage)的存储架构。笔者无法具体解释隧道存储是什么意思(只能说它既不是基于column的也不是基于键/值的),但我能肯定该技术有一定的效果,它的特性包括完全支持联接,且不需要索引或分块。有趣的是它可能支持查询处理(例如你可能从来不需要对全表进行扫描)以及OLTP,虽然其公司发展的重点为后者。并且,和NuoDB一样,JustOneDB总是追加数据且从不删除它们的源数据。但它与它的竞争对手的不同之处在于,它侧重于scalling up而不是scallingout,至少目前是这样的,也就是说如何在一台 服务器上scale而不是跨 服务器的。该公司的观点(一个并非不合理的观点)认为,在理想情况下人们一般希望越晚scale越好,也就是为什么公司会侧重于scalling up而不是scallingout。TPC-H基准的内部运行说明了与标准PostgreSQL orders(100X+)相比,其性能的巨大提升。
传统的数据库根基深厚,而新生的数据库也是主力军,发展势头迅猛,但是新事物让人,客户接受也是需要一个过程的,需要不断的体验,试用才能慢慢的接受,就传统数据库而言,还是比较看好oracle db,而对于新兴的数据库,大数据,似乎不太好定论。
3.有人说NoSQL之所以发展的如此蓬勃,是因为基于SQL的关系数据库系统显得有些死气沉沉。但有人认为SQL本身并不是导致可扩展性和低性能的根源,这只能算作数据库厂商的错。而完全放弃传统关系数据库并忙于推陈出新的NoSQL真的是一个合理的选择吗?如何寻找NoSQL与SQL的平衡点呢?请结合实际应用场景谈谈您对NoSQL数据库优缺点的认识。
NewSQL是结合NoSql和 传统SQL数据库的结合的综合体,目的是提高更高的性能,同时又是个从旧技术,或者现有的基础上更好的过度。使新旧系统兼容。
NoSQL这两年越来越热,尤其是大型互联网公司非常热衷这门技术,因为互联网公司产生的大量数据需要通过这些技术来进行分析总结,得出他们想要的趋势和关系。但是随着随着云时代的来临,大数据也吸引了越来越多的传统企业IT部门的关注。大数据分析相比于传统的数据仓库应用,具有数据量大、查询分析复杂等特点。随之应运而生的NoSQL数据库技术正好可以满足这些大数据的存储、抽取和分析等技术需求。
虽说也出现了一些挑战关系型数据库的产品,而且有的还在某些领域成功了,但是总体来说,留给架构师的数据存储问题仍然是选择使用哪款关系型数据库的问题。 稳定性在此领域颇受重视。企业的数据比程序存储的时间要长很多(至少大家都是这么说的。当然啦,我们也见过许多非常老的程序)。拥有一个既稳定,又容易理解,而且还能让许多应用程序编程平台访问的数据库,是非常有价值的。不过,关系型数据库现在碰上新对手了,它的名字叫NoSQL。由于我们需要处理的数据量越来越大,必须以商用服务器集群来构建大型硬件平台,因此NoSQL就应运而生了。这也使大家要再次考虑那个存在已久的难题,即代码如何才能同关系型数据库良好地结合起来。
关系型数据库还是一个非常强大的工具,我们希望能长时间使用下去;然而大家也要看到一场深远的变革,那就是:关系型数据库不再是唯一的选择了。我们认为,数据库领域正进入混合持久化(Polyglot Persistence)时代,由企业乃至个人研发的应用程序,可以使用多种技术来管理数据。因此架构师需要熟悉这些技术,并且能根据不同的需求做出适当的选择。若非如此,怎么会得到成为目前主流技术呢。
首先,预想的适用情况NoSQL数据库可用于: 取代关系型数据库的弱势处理(比如大量数据的写入处理等)需要对于NewSQL数据库的模型则还需要细细研究。可以快速把握NewSQL发展,要深入学习的话还得再下功夫。 另外作者所使用的操作系统Linux在国内网络上流行,所以NewSQL例子网友有太多的机会实践。企业级计算领域编程语言、架构、平台、软件开发流程等技术都在改变,然而这期间有一件事却一直没变,那就是:大家依然使用关系型数据库来存储数据和NoSQL数据库相互结合。
4. 有人说NoSQL可能会吓到一部分的DBA,他么担心会失去自己所擅长的领域,因此有人预言未来NoSQL会谢幕,NewSQL将粉墨登场。请结合自己的看法大胆预测下未来数据库的发展趋势。
总体来说,留给架构师的数据存储问题仍然是选择使用哪款关系型数据库的问题。 稳定性在此领域颇受重视。企业的数据比程序存储的时间要长很多(至少大家都是这么说的。当然啦,我们也见过许多非常老的程序)。拥有一个既稳定,又容易理解,而且还能让许多应用程序编程平台访问的数据库,是非常有价值的。不过,关系型数据库现在碰上新对手了,它的名字叫NoSQL。由于我们需要处理的数据量越来越大,必须以商用服务器集群来构建大型硬件平台,因此NoSQL就应运而生了。这也使大家要再次考虑那个存在已久的难题,即代码如何才能同关系型数据库良好地结合起来。如果NewSQL 如果能克服Nosql 不能保证ACID 这个特性的话应该会成为将来的发展趋势, NewSQL不是某个公司的产品,而是一种思想、一种技术思潮或一种架构的代称。
简而言之,NewSQL就是结合了SQL技术的优点以及NoSQL技术的优点的技术的统称。这有点像几年前的AJAX技术一样,它也不是特指任何新技术,而是指JavaScript技术结合异步请求访问技术和XML技术的统称。客观地说,是一种思想。
NoSQL是因为其高性能、高可伸缩性和高可用性而获得广泛地关注,以致于发展迅猛,但它也有很多短板,它在对关系数据库进行革命的同时,也抛弃了关系数据库的很多优点,以至于NoSQL主要在发展较快的互联网企业推广和应用广泛,但是在传统行业就频频遭到抵制。
对于DBA来说,NoSQL意味着要重新学习一门或多门新数据库,以及相关的脚本写法,管理和维护技术,其难度不亚于重头来过,以至于很难接受。
NewSQL技术可以很好地迎合关系数据库DBA的需求,又具备NoSQL的高性能、高可伸缩性和高可用性等技术特性,相信未来的前景极好。
|