引用说明:原文来自于http://database.51cto.com/art/200907/135431.htm ,为了方便本人阅读,文本格式略有调整。
一、NoSQL项目提出的背景。
NoSQL的支持者喜欢这个NoSQL项目,主要是看其在性能上的优势。NoSQL支持者称,NoSQL技术可以打破传统关系型数据库的性能瓶颈。如通过NoSQL架构可以省去将Web或者Java 应用和数据转换成SQL友好格式的时间,减少SQL语句解析与优化的时间,让应用程序的速度变得更加快捷。更多关于NoSQL的报道请参考《对SQL说不!NoSQL的数据库技术革命》
确实基于SQL的关系型数据库,在性能上确实存在一些瓶颈。但是这大部分并不是这个门SQL技术所造成的。而是因为在设计数据库的时候,表与表之间的关系、表的索引或者表空间的部署等等没有设计好做造成的。所以关系型数据库性能不理想,并不能全部怪罪到这么技术上。通常情况下,对原有的数据库设计进行优化,往往可以在很大程度上提升数据库的性能。所以说,NoSQL这个项目的背景是站不住脚的。
二、NoSQL革命仍然需等待。
根据目前的情况来看,笔者对于NoSQL项目的前景并不是很看好。或者说,对其前途感到很悲观。NoSQL项目很难跟传统的关系型数据库相抗衡。甚至其想达到MySQL这个开源数据库的高度都很难。
1、 NoSQL很难实现数据的完整性。
当NoSQL这个项目开始以来,笔者也适当的关注过。但是笔者了解了这个项目后,对它的印象并不是很好。因为根据笔者的了解,很多关系型数据库中优秀的、实用的功能,在NoSQL数据库却无法实现。如在任何一个关系型的数据库中,都可以很容易的实现数据的完整性。如在Oracle数据库中,可以轻而易举的实现实体完整性(通过主键或者非空约束来实现)、参照完整性(通过主键、外键来实现)、用户定于完整性(通过约束或者触发器来实现)。通过这些机制,可以实现数据的完整性。如可以设置某表中某一个列的值是唯一的而且不能够为空。或者说在某表中引用外键的话,在另一张表中这个值必须存在。无论在删除或者更新的时候,都必须存在。
NoSQL支持者也承认关系型数据库在数据完整性上的作用是不可替代的。但是他们却反驳说,企业可能用不到这么复杂的功能。对于这一点笔者不敢认同。现在企业的任何一个应用,基本上都需要用到数据完整性。如现在大部分应用至少都需要有一个用户认证的过程。为此在系统实现的过程中,需要在数据库中保存用户名。由于这个用户名涉及到用户的认证问题,为此用户名必须要唯一。此时就需要用到唯一性约束。在关系型数据库中,只需要在表格设计过程中,将用户名设置为唯一即可。而在NoSQL中,还需要通过代码来实现唯一性。本来很容易就可以实现,现在却要绕个弯取实现,这有点不可思议。由于在NoSQL项目中很难实现数据的完整性,而在企业应用中这个数据完整性又是少不了的。为此笔者认为,NoSQL项目很难在企业中普及开来。至少在短时间内,NoSQL革命仍然需等待。
2、 缺乏强有力的技术支持。
到目前为止,NoSQL项目都是开源的。所以说他们缺乏供应商技术人员提供的正式支持。在这一点,NoSQL项目与大多数的开源项目一样,不得不从社区中寻求支持。但是,NoSQL项目比其他的开源项目要难得的多。首先NoSQL项目是一个数据库系统的项目。或者说,是一些网络应用的最基层的设备。如果其出错的话,后果很严重。由于缺乏正式的官方支持,万一数据库运行出现了错误,后果是很严重的。而且到时候用户也是投诉无门的。所以,现在NoSQL项目基本上还是属于研究的阶段,如果要正式投入到企业中使用,被数据库管理员所接受,至少其稳定性上要有所改善。或者说,当问题出现时,数据库管理员要能够及时修复运行故障。由于缺乏强有力的技术支持,数据库管理员担心故障出现时难以迅速解决,所以很多管理员都拒绝使用NoSQL项目,即使其是开源免费的。如NoSQL项目的组织者Oskarsson也坦言,他们自己的公司现在使用的也不是NoSQL数据库,甚至在短期内也没有这个打算。他们现在使用的虽然是开源的数据库系统,但是仍然是基于SQL的关系型数据库。像NoSQL项目的组织者都不敢轻易在企业中部署这个NoSQL数据库,那么其他数据库管理员谁敢做第一个吃螃蟹的英雄吗?这不是拿自己的前途开玩笑。
3、 开源数据库从出现到被用户接受需要一个漫长的过程。
假设这个NoSQL技术能够被企业用户所接受,但是从其出现到被用户最终接受需要一个漫长的过程。如MYSQL这个开源的数据库系统,其从出现到流行也是花了好多年的时间。而且MYSQL数据库是基于比较成熟的关系数据库模型的。其在开发设计的时候,已经有不少完善的产品可以参考。至少SQL语句的语法其可以直接拿来使用,而不用从零开始设计。而现在NoSQL是一个从零开始的产品,所有内容都需要重新设计。在没有供应商技术人员的支持下,这个过程可能是很漫长的。即使退一万步来说,最终其可以向MySQL数据库那样受中小企业的欢迎,但是由于其自身技术的薄弱,在大型的数据库应用中就会显得心有余而力不足。
4、 关系型数据库在设计时更能够体现实际。
其实关系型数据库也是从非关系型数据库升级过来的。之所以现在大部分数据库都是建立在关系型数据库模型之上的,就说明了关系型数据库存在的价值。笔者认为,关系型数据库最大的价值就在于其设计方便。因为其数据库对象之间的关系模型(如三范式等等)对于数据库设计时很有帮助的,其在很大程度上体现了业务的实际情况。如在设计一个ERP系统时,主键与外键的关系可以反映出产品信息表与采购订单之间的关联。这种关系是那么发符合实际。而现在NoSQL项目想把这种关系剥离掉,那么在数据库设计的时候,必然会增加很多的麻烦,会增加数据库的难度。最重要的是,这些数据库对象之间的关系不仅仅是关系而已,其还是一种强有力的准则,对于所有的关系型数据库管理员都会产生约束。这就说明,如果必须强制遵守这些规则。从而让Oracle数据库的管理员经过简短的学习之后,也能够很快的掌握SQLServer数据库的技术。因为其内部的准则是共同的。数据库管理员只要学习其表现形式即可。这就好像学汽车。你只要拿出驾照,那么什么牌子的车都可以开。因为其数据库对象的关系、运行模式等等都是固定的。但是NoSQL项目由于缺乏这种关系,所以基于NoSQL技术的不同产品之间,可能会存在很大的差异。这不仅在数据库设计的时候会增加不少的难度。而且在维护的时候,也需要花费更多的时间与精力。
总之,照目前的情况来看,笔者对NoSQL项目的思路是反对的。至少在近期很难有像样的NoSQL产品面世。NoSQL项目的组织者Oskarsson也承认,NoSQL项目这场数据库革命仍然需要等待。在短时间内,无法跟关系型数据库相互抗衡,也许永远没有这个机会。
分享到:
相关推荐
NoSQL,全称为Not Only SQL,它是一种非关系型数据库技术,主要针对大规模数据处理和多样化数据类型的应用场景。NoSQL数据库的出现是为了应对传统关系型数据库在处理大量非结构化和半结构化数据时面临的挑战,这些...
NoSQL 数据库不存在数据库模式,可以自由灵活定义并存储各种不同类型的数据,而关系数据库需要定义数据库模式,严格遵守数据定义和相关约束条件。 ### 查询效率 NoSQL 数据库可以实现高效的简单查询,但是不具备...
二.NoSQL数据库的产生 关系数据库面临挑战 关系数据库面对超大规模和高并发的SNS类型的web2.0纯动态网站显得力不从心,暴露了很多难以克服的问题 A 大数据发展 大规模数据集合,多重数据带来了许多挑战,尤其是...
NoSQL,全称为Not Only SQL,是非关系型数据库的简称,它是为了应对大数据时代的数据处理需求而出现的。相比于传统的关系型数据库,NoSQL数据库在灵活性、可扩展性和高性能方面有着显著的优势。以下是对四种常见...
【实验四:NoSQL和关系数据库的操作比较】 本实验旨在对比分析四种不同的数据库管理系统:MySQL、HBase、Redis和MongoDB。这些数据库在处理大数据时各有特点,理解它们的概念及不同点是实验的关键。 1. **MySQL**...
通过比较关系数据库的ACID(原子性、一致性、隔离性、持久性)特性与NoSQL数据库的CAP(一致性、可用性、分区容忍性)原则,学生将能更好地适应多样化的数据存储需求。此外,这些练习也将提升学生的实际操作技能,为...
分布式Key-Value键值数据库与关系数据库NoSQL的对比及发展趋势 随着云计算和大数据时代的到来,传统的关系数据库(RDBMS)受到了来自非关系型数据库(NoSQL)的挑战,尤其是分布式Key-Value键值数据库。NoSQL的兴起...
在当今大数据时代,传统的SQL关系型数据库已经无法满足海量数据的存储和处理需求,因此分布式数据库和NoSQL数据库应运而生。本课件将深入探讨分布式数据库的原理以及NoSQL数据库的核心概念,帮助读者理解和掌握这两...
### NoSQL非关系型数据库详解 #### NoSQL简介 NoSQL,意为“不仅仅是SQL”(Not only SQL),而非“不是SQL”(Not SQL)。它代表着一种新兴的数据库技术,旨在解决传统关系型数据库(RDBMS)所面临的挑战。随着...
NoSQL数据库的出现是为了应对传统关系型数据库无法解决的一些问题,特别是在大规模数据处理方面。CAP理论(Consistency,Availability,Partition Tolerance)指出,在分布式系统中,一致性(Consistency)、可用性...
非关系型数据库(NoSQL,Not Only SQL)是一种不同于传统的关系型数据库的数据存储方式,它在互联网大数据时代因其高扩展性、灵活性和高性能而受到广泛关注。NoSQL数据库的设计理念是为了解决大规模数据分布式存储的...
适合了解NOSQL,对nosql感兴趣可下载,入门学习级
aerospike-server, 在内存中,NoSQL 数据库,Aerospike 数据库服务器- Flash 优化, 0.3.5 Aerospike 数据库服务器欢迎使用 Aerospike 数据库服务器源代码树 !Aerospike 是一个分布式的,可以扩展的NoSQL 数据库。 ...
1. **NoSQL简介**:NoSQL(Not Only SQL)是非关系型数据库的统称,它不遵循传统的ACID(原子性、一致性、隔离性和持久性)事务模型,而是提供高可扩展性和高性能的数据存储解决方案。 2. **NoSQL类型**:NoSQL...
非关系型数据库(Nosql)是一种不同于传统的关系型数据库的数据存储解决方案,它的设计目标是处理大规模数据分布式存储、高并发读写以及灵活的数据模型。在众多NoSQL数据库中,Redis是一个非常受欢迎的开源键值存储...
非关系型数据库(NoSQL,Not Only SQL)是近年来逐渐流行的数据库模型,它与传统的关系型数据库不同,不依赖于固定的表结构,而是采用灵活的数据模型,如键值对、文档、列族或图形数据库等形式。NoSQL数据库在大数据...
非关系型数据库(NoSQL,Not Only SQL)是一种不同于传统的关系型数据库的数据存储模型,它在处理大量数据、高并发和分布式系统中表现优异。NoSQL数据库的主要特点包括灵活性、可扩展性和高性能,它们通常不支持SQL...
Nosql非关系型数据库在现代数据存储中扮演着重要的角色,因为它们提供了高可扩展性、灵活性和高性能,尤其适合处理大规模数据。MongoDB是一种流行的Nosql数据库,它使用文档模型来存储数据,支持JSON格式的数据存储...
MongoDB是一种流行的 Nosql 非关系型数据库系统,它以高效、可扩展性和灵活性而闻名,特别适合处理大量非结构化或半结构化的数据。Nosql 数据库与传统的关系型数据库不同,它们不依赖于固定的表结构,而是采用如文档...