`
xp9802
  • 浏览: 1214348 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

NoSQL 再次败北——我坚持使用 SQL 的原因

 
阅读更多

编者按】NoSQL拥有可扩展性和超高吞吐量的能力,然而这却没有发挥实际的优势,同时它不具备关系数据库所有的智能操作,虽然具有无模式存储的优势,却无形中增加了代码的复杂度。更多的应用证明使用NoSQL如此困难,它仅能成为SQL系统的构件而不是替代品。

这是我第二次为新项目深入调研NoSQL,也是第二次决定放弃NoSQL。跟我上次发表的“为什么选择使用NoSQL如此困难”的结论一样,我们最终决定放弃NoSQL,使用传统关系型数据库。

我从上个帖子的许多评论中得出评估NoSQL的一大问题——其解决方案指向的核心是“取决于你的需求”。但尽管需求明确,仍需要花时间调研并搞清楚 一个特定的NoSQL引擎是否正是你所需。有太多方面,你不可能评估所有的。更糟的是,你得费力的从engine-specific文档中解读出它是否能 够实现你的目标,那些文档大多是类似选择关系型数据或者ACID的解决方案。

相比之下,如果使用关系型SQL数据库,大多数情况下,不管是哪种特定产品,你都能知道它的工作方式,不需要反复比对选择,也比较成熟稳定。选择RDBMS能大大降低做错误决定的风险。

NoSQL的吸引力在于拥有可扩展性和超高吞吐量的能力。就算其扩展性真的优于RDBMS,然而现实世界的事实是,99%的应用程序都不会变更数据 模型。比如Stock Exchange,它是访问量最大的网站之一,它们的商品服务器是运行在MSSQL上的。而且很难想象NoSQL需要多么巨大的存储空间,购买一个60- core、高达6TB内存的服务器基本是不可能的。所以使用NoSQL的实际好处又是什么?

起初我认为无模式存储是NoSQL的一个优势,但我已经改变了我这个观点。至少对于关系型页面应用程序,无模式只不过是在增加代码复杂度。此外,我 喜欢结构,特别是数据结构。在数据归档、文件存储、或事件日志这类数据处理中无模式是很有用的,但是对于非社交类的页面应用程序却没有任何优势。

与关系数据库比起来,文档存储会使程序的每个部分都变得更加复杂。对于那种可以将文件名作为key,文件内容作为value的平行文件存储 (key-value数据库),NoSQL是很有优势的,你可以在这类文件中存储任何所需内容,读取的时候也会很方便,但这种存储很脑残。我的结论 是,NoSQL在管理和优化所存储的文件时是非常复杂的,对于存储的数据内容它一无所知。关系数据库所有的智能操作NoSQL全都没有,你必须用代码来实 现那些SQL自带的功能,这对大多数应用程序来说都是不合理的。

即使是建造NoSQL引擎的人也很难描述自己产品的用例,NoSQL的很多评论都在推销自己的产品,却并没有提供任何特别令人信服的理由。很少有 SaaS应用程序用非关系型数据,现实情况是,RDBMS系统要比NoSQL系统多的多,一旦所有的炒作逐渐停止,NoSQL引擎的数量降到合理的范 围,NoSQL将会成为这些合理应用范围内的有用工具。在未来,我认为NoSQL能够成为SQL系统的构件而不是替代品,现在我依然坚持使用SQL。

原文链接:    NoSQL is a no go once again——Why I'll be sticking with SQL for now

分享到:
评论

相关推荐

    NoSQL介绍PPT

    为什么使用NoSQL? 为什么使用NoSQL? NoSQL的分类 NoSQL有什么特点? NoSQL有什么特点? NoSQL是否完美? NoSQL的一些概念——CAP NoSQL的一些概念——ACID NoSQL的一些概念——BASE NoSQL的一些概念——BASE NoSQL...

    NoSQL开篇——为什么要使用NoSQL

    NoSQL,全称为“Not Only ...在某些场景下,可能需要结合使用SQL和NoSQL数据库,以充分利用两者的优势。总的来说,NoSQL为解决大数据时代的挑战提供了一种有效的途径,但也要求开发者具备更全面的技术理解和实践经验。

    SQL、NoSQL、NewSQL 开发者如何应对

    随着数据量的增长和处理需求的多样化,SQL、NoSQL和NewSQL这三种类型的数据库系统在不同的场景下各显神通。了解它们的特点、优缺点以及适用场景,对于开发者来说至关重要。 首先,SQL(Structured Query Language)...

    藏经阁-第十二届 BigData NoSQL Meetup — 基于hbase的New sql落地实践.pdf

    【描述】:这个描述并未提供具体的信息,但标题表明这是一个关于在BigData环境中,使用NoSQL数据库HBase实现New SQL的实践分享。 【标签】:由于没有给出具体的标签,我们将基于主题推测可能涉及的知识点,如HBase...

    SQL和NOSQL融合

    ### SQL与NoSQL的融合:Megastore案例分析 #### 概述 随着互联网服务的飞速发展,传统的存储系统面临着前所未有的挑战。一方面,为了应对海量数据的处理需求,NoSQL(Not Only SQL)数据库因其高扩展性和灵活性而受...

    Scalable SQL and NoSQL data stores

    可分布的SQL和NoSQL数据存储系统 随着Web2.0应用的兴起,数据量激增,传统的数据库管理系统(DBMS)和数据仓库在面对大规模的简单在线事务处理(OLTP)样式的应用时开始力不从心。因此,新的可水平扩展的数据存储...

    8种Nosql数据库系统对比

    本文将详细介绍八种主流NoSQL数据库系统——Cassandra、MongoDB、CouchDB、Redis、Riak、Membase、Neo4j和HBase,并对其特性进行比较。 #### 1. CouchDB - **语言**:Erlang - **特点**: - 数据一致性 - 易于...

    nosql研发之路

    面对Tokyo Tyrant的稳定性风险和功能限制,开发团队决定自主研发NoSQL存储解决方案——INetDB。INetDB不仅兼容Memcached协议,支持主从复制和ttserver复制协议,还具备更高的性能和可靠性,在大数据量下表现尤为出色...

    最新统计排名前十的SQL和NoSQL数据库排行榜

    【SQL和NoSQL数据库概述】 SQL(Structured Query Language)数据库是一种关系型数据库,它遵循ACID(原子性、一致性、隔离性和持久性)原则,确保数据的可靠性和一致性。SQL数据库通常使用表格形式来存储数据,...

    NoSQL数据库的使用模型及使用场景.xmind

    该脑图是介绍NoSQL数据库的使用模型及使用场景,请贡献给大家下载!

    第5章-NoSQL数据库(详细介绍了SQL语句)

    - **查询语言**:关系型数据库通常使用SQL作为查询语言,而NoSQL数据库则可能提供专门的查询语言或API。 ### NoSQL的四大类型 NoSQL数据库根据其数据模型的不同可以分为以下四类: 1. **文档数据库**(如MongoDB...

    8种主流NoSQL数据库对比

    MongoDB 是一个基于 C++ 语言开发的 NoSQL 数据库,特点是保留了 SQL 一些友好的特性。它使用 AGPL 许可证,支持 Custom, binary (BSON) 协议,具有 Master/slave 复制、内建分片机制、支持javascript 表达式查询等...

    golang&sql&nosql

    SQL(Structured Query Language)是用于管理和处理关系型数据库的标准编程语言,而NoSQL(Not Only SQL)则是一种非关系型数据库,强调水平扩展和大数据处理。本篇文章将深入探讨Golang在配合SQL和NoSQL数据库时的...

    NoSQL数据库技术实战

    涵盖的内容有:NoSQL与大数据简介、NoSQL的数据一致性、NoSQL的水平扩展与其他基础知识、BigTable与Google云计算原理、Google云计算的开源版本——Hadoop、Dynamo:Amazon的高可用键值对存储、LevelDb——出自Google...

    ACCP 6.0 指导学习——我的租房网

    在本课程"ACCP 6.0 指导学习——我的租房网"中,我们将深入探讨如何通过优化数据库设计和SQL查询来提升一个名为"MySchool"的租房网站的性能。这一章节着重于第五章的内容,旨在帮助学员掌握关键的数据库管理和SQL...

    NoSQL数据库PPT.pptx

    NoSQL: 即Not Only SQL 与关系型数据库相对应的,也可理解为 no relational ,即非关系型数据库 。 NoSQL数据库PPT全文共20页,当前为第3页。 二.NoSQL数据库的产生 关系数据库面临挑战 关系数据库面对超大规模和...

Global site tag (gtag.js) - Google Analytics