Will NoSQL Databases Live Up to Their Promise

来源:互联网 发布:伟大复兴 知乎 编辑:程序博客网 时间:2024/05/29 14:53
Nosql是否能实现它的承诺
        一些收集大量非结构化数据的组织正投身于非结构化数据库,通常被称作Nosql数据库。
一些组织大量收集顾客、科学、销售以及其他数据为了以后的分析。通常,大部分组织将结构化                                            数据存储在关系数据库中以便下一步的访问和分析。
        然而,越来越多的开发者和用户开始使用不同类型的非关系数据库——通常称作Nosql数据库。
        非关系数据库——包括分层、图形和面向对象数据库——自从1960s已经出现,然而,新的Nosql数据库有所发展,而且他们的市场牵引力在增加。
        不同的Nosql数据库使用不同的处理方式,他们的共同点就是他们不是关系的。和关系数据库不同,他们的主要优点是能够高效的处理非结构化数据,像单词处理文件、email、多媒体、社会媒体。
        对于不熟悉结构化查询语言的开发者也很容易使用。Sql是一种用来查询和更新关系数据库的编程语言。
        一些Nosql数据库能够处理结构化数据集,用户可以通过增加便宜的机器来扩展数据库,而不必部署在一个更高性能更贵的机器上。
        而且,支持者认为,Nosql数据库能够有更好的性能,对那些大数据量的应用尤为重要。
        很多公司和组织已经开发了Nosql数据库。
        这种方式的最大的用户来自那些拥有大数据量且不断增加的web2.0公司,像Amazon和Google,他们分别开发了Big Table和Dynamo Nosql数据库,这也激励了很多今天的Nosql应用。
        不管他的承诺,这个方法在广泛成功之前必须清除一些技术和市场障碍。
        Edgar Codd,前IBM会员,在1970s创造了关系数据库模型。
        关系数据库是一个包含适合预定义种类的数据集合。每个数据库的一列有一个或多个数据种类,每行含有一个单独的数据实例为每一个列属性,用户可以用不同的方式访问和重新组织数据而不用重新组织数据库表。
        关系数据库对结构化数据表现最好,比如一个销售数字集合,很容易适合良好组织的表。在非结构化数据下就不同了,比如单词处理文档和图像。
        关系数据库的局限:
        关系数据库的数据结构是通过表布局和固定名字和列类型预定义的。
        扩展性:用户可以扩展一个关系数据库通过把他运行在一个更高性能也更贵的电脑。在不止一点上可扩展,然而必须分布在不同的服务器上。
        关系数据库在分布式方式下不容易工作,因为分布式系统间的join操作是困难的。Jeremy Zawodny说过。
        关系数据库并不是设计来处理数据分块,所以分布他们的功能很麻烦,Stephen O'Grady说过。
        复杂性:在关系数据库中,用户必须把所有的数据转化成表格,当数据不容易转化时数据库的结构会很复杂、困难、处理缓慢。
        SQL:对结构化数据使用SQL很方便,然而在其他数据类型中很困难,因为他是针对有组织数据设计的,Stefan Edich解释说。
        SQL使用大量复杂代码但是在当前敏捷开发中表现并不好。
        大特征集合:关系数据库提供一个很大的特征集合和数据完整性。但是Nosql支持者认为用户通常并不需要所有的特征,相对于他们的复杂性带来的代价。
        Nosql数据库内部:
        关系数据库的局限性被了解,更多的提供商和用户转向Nosql数据库。
        这个转变的一个重要时刻是在2007年,Amazon发布了一篇介绍他内部使用的Nosql数据库——Dynamo。Amazon是首批将重要商业数据存放在非关系数据库的公司。
        关键技术:
        Nosql数据库有三种流行类型。
        Key—Value 存储。顾名思义,一个Key—value存储是一个系统,通过keys获取存储的values。这种系统可以hold住结构化和非结构化的数据。
        Amazon的SimpleDB是一个web服务,他提供核心的在云中进行数据索引和查询的数据库功能,他为存储和访问提供一个简单的API,用户按使用为服务付费。
        乌普萨拉大学的阿摩司II是一个研究原型,他能够作为一个单独数据库或其他应用的前端工作。
        Scalaris,一个可以提供web2.0服务的可扩展分布式数据库。
        面向列数据库。在关系数据库中,信息集合存储在一个结果化的行列表中,对每个记录有统一的域,与此不同,面向列数据库包含一个可扩展的紧密关系数据列。
        脸谱网创建了一个高性能的Cassandra来处理它的网址。
        Apache开发了Hbase,他是一个分布式的、开源的数据库,模拟Google的Big Table。
        面向文件存储。这类数据库存储和组织数据使用文件集合,而不是为每个记录使用同一字段的结构化表。在这些数据库中,用户可以再一个文档里添加任意长度的任意字段。
        Apache开发了CouchDB作为一个开源可扩展数据库,用Erlang写的,可以被任意浏览器访问。
        10gen商业上支持和赞助MongoDB的开发,一个开源的文档数据库,可扩展、易用。
        Riak是一个分布式的可扩展的分散化的开源数据库,使用于基于web的应用。
        开源:大多数的Nosql数据库是开源的,在软件市场中反映出开发过程。
        Nosql数据库通常在开源环境下表现更好,让用户做技术评估,代价很小。
        Nosql的优缺点
        Nosql数据库有很多的优缺点。
        优点:Nosql数据库通常比关系数据库访问数据更快。
        关系数据库经常被用在商业应用,用在需要高精确的食物中。他们让数据满足ACID限制。
        原子性的意思是,一个更新完全完成或者一点也不运行,一致性意味着一个事务的任意部分都不允许打破数据库规则。独立性的意思是每个应用独立运行事务在其他事务操作的同时。持久性的意思是,完成的事务会被持久化。
        每片数据都要满足这些限制使得关系数据库更慢。
        开发者通常不让他们的数据库满足ACID,为了提高性能,但是当应用需要高精确时会带来问题。
        Nosql数据库更快还因为他的数据模型简单,速度和模型之间要做出权衡,通常要折中。
        因为他们没有全部拥有关系数据库的技术需求,支持者认为,大部分Nosql系统足够灵活,使开发者按照他们的需求使用应用。
        担忧和疑惑
        Nosql数据库面临一些挑战。
        过载和复杂性。因为Nosql数据库不用SQL,他们需要手工的查询编程,这对于简单任务是快速的,但是其他的会很耗时。
        而且,数据库的复杂查询编程很困难。
        可靠性。关系数据库天然的支持ACID,而Nosql数据库不能天然的提供ACID提供的可靠性,如果用户想让Nosql数据库使用ACID限制,他们必须额外编程。
        一致性。因为Nosql不能天然地支持ACID事务,他们通常折中一致性,除非提供手工的支持。不提供一致性可以提供更好的性能和可扩展性,但是对于特定类型的问题和事务会有问题,比如那些涉及到银行业的。
        技术的不熟悉。大多数组织对Nosql的不熟悉使得他们不会足够明智地选择一个,甚至判断这种方式会对他们实现目标更好。
        有限的生态结构。不像商业的关系数据库,许多开源的Nosql应用还没有用户支持和管理工具。
        在未来的五年,Nosql的支持者会把精力放在开发更好的应用兼容性和管理工具上。
        Nosql数据库将被用在非结构化又需要可扩展性的数据。
        Nosql会是小规模的,因为关系数据库更成熟,而且代表了商家和用户的大量投资。
        在这一两年里,Nosql数据库主要会被一些特定项目接受,比如那些包含大量数据、分布式的、必须可扩展的。之后,会被广泛接受。
        Nosql数据库不会取代关系数据库,但是对于一些项目,会是一个更好的选择。
        人们会学习根据他们的数据需要选择数据库。
        关系数据库是一个很好的工具,但是其他工具有他们自己的位置。
原创粉丝点击