SQL与NoSQL对比

自从NoSQL数据库从概念逐渐转化为应用以来,我一直想深度探索一下这两个概念。并且我花了一些时间来搞清楚——是什么实际导致了NoSQL数据库的演化。

SQL or NoSQL

这一切都归结于使用快捷、实时和联机的方式向终端用户提供最佳体验的需求。随着存储技术的急剧变化,数据库开发者正试图做出优化以获得更好的性能。

下面是SQL和NoSQL数据库的一些基础知识:

什么是SQL数据库

谈到SQL数据库,基本的概念是,它是关系型的数据库。是的!SQL数据库是关系型数据库。那么到底什么是关系型数据库呢?关系型数据库严格的使用关系(经常被称为表)来存储数据。一个关系型数据库通过使用数据集中找到的相同特征来匹配数据。而由此产生的群组被称为模式。

关系型数据库中的关系(表)被划分为行和列的集合。元组代表使用查询从数据库表中取出的行。

SQL有什么用?

SQL(结构化查询语言)是一种用来管理关系型数据库中数据的编程语言。Microsoft SQL server是一个很好的例子。Microsoft SQL server是一种关系型数据库,被用于使用应用从相同的计算机或者网络存储、获取数据。

SQL server的基本特征

关系型数据库是一组包含装配在预定义类中数据的表。

每个表包含一个或者多个以列形式存在的数据类别。

每一行包含一个类别由列定义的唯一数据实例。

用户可以在不了解数据库表结构的情况下访问数据库中的数据。

SQL数据库的限制

可扩展性:用户不得不在功能强大,价格昂贵且难以操作的服务器上对关系型数据库加以扩展。扩展关系型数据库时它必须在多台服务器上进行分发。跨服务器操作表可能会引起混乱。

复杂性:在SQL服务器中的数据必须与表相适配。如果你的数据无法与表适配,那你就需要将你的数据库接结构设计的更加复杂,反过来变得更加难以处理。

什么是NoSQL数据库

在过去的几年里,科学界和网络公司开始考虑使用"one size fits all"(放之四海而皆准)的方式存储数据,这已经导致了多种替代数据库的出现。这场运动,及其新的数据存储通常被归纳为NoSQL。

NoSQL的基本性质是,它不需要固定的表模式,通常避免了连接操作,并通常采用横向扩展。学术研究人员通常将这些数据库称为结构化存储,该术语将关系型数据库作为一个子集包含在内。

NoSQL数据库也对"ACID"(原子性,一致性,独立性和持久性)做出了折衷。 NoSQL数据库,在不同程度上,甚至允许数据模式在记录与记录之间存在差异。如果NoSQL中不存在模式或者表,那么你如何看到数据库结构呢?答案在这里

不需要模式:数据可以在没有事先严格定义数据库模式的情况下插入NoSQL数据库中。由此推断,拟插入数据的格式可以随时改变,而不会导致应用的破坏。这提供了很大的应用灵活性,最终提供了业务的灵活性。

自动伸缩:NoSQL会自动地将你的数据散布在多台服务器上,无需应用协助。服务器在应用不停机的情况下从数据层增加或者移除。

集成缓存:为了提升性能,先进的NoSQL技术奖数据缓存至系统内存,与此相对,SQL数据库要达到相同的目的必须使用单独的基础设施。

谈到NoSQL数据存储的架构,流行的NoSQL数据库有3种。

键值存储。顾名思义,键值存储是一种使用键存取数据的系统。这些系统可以处理结构化或者非结构化的数据。

面向列的数据库。不同于关系型数据库那样,将信息集每条记录以统一的字段尺寸存储在高度结构化表的列和行中,面向列的数据库包含存有密切相关数据的可扩展列。

基于文档的存储。这类数据库将数据以文档的形式存储和组织,而不是每条记录都以统一的字段尺寸存储在结构化的表中。使用这类数据库,用户能够向文档中添加任意长度和数目的字段。

下图展示了它们之间的不同之处

NoSQL

NoSQL数据库的优势

NoSQL数据库的数据处理速度通常比关系型数据库快

NoSQL数据库速度更快的原因是其数据模型更加简单

主流的NoSQL系统足够灵活来更好地确保开发者能够以满足他们需求的方式使用应用。

SQL NoSQL的对比和总结

SQL和NoSQL已经成为保证数据存储和检索最优化而流畅的伟大发明。批评任何一方都没有任何意义。最近NoSQL传得很火,但这并不意味着它就是可以满足所有需求的灵丹妙药。这两种技术都有其擅长的领域。这就要靠开发者根据情况和需求更好地对它们加以利用。

原帖链接:Difference between SQL and NoSQL : Comparision

本文链接:http://bookshadow.com/weblog/2014/03/07/sql-nosql/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。

如果您喜欢这篇博文,欢迎您捐赠书影博客: ,查看支付宝二维码