Nosql(not only sql) 不是用于关系型数据库管理系统(RDBMS)。接下来我们讨论一下NoSql
DataBase和关系型DataBase的区别,还有一些关于为什么不在传统的关系型数据库(RDBMS)上使用NoSql的数据库模型。
如今,互联网已经拥有百亿到万亿级别的用户,甚至更多。大数据、大用户和云计算是目前每个主流app所面临、使用或者将要面临使用的,因为互联网的用户是在夜以继日地逐渐成长和变化的,数据也是在逐渐增长和变得复杂、非固定结构化的。这些所有的变化都是很难在原有的关系型数据库中管理的。但是,NoSql数据库在这一系列问题上,都有很从容的处理方式。NoSql被设计的初衷就是处理这些大量的、非固定结构化的数据以及云计算等。NoSql数据库可以精确地处理所有种类的非结构化数据、杂乱无章的结构数据以及不确定结构的数据。NoSql数据库的出现,简直引发了我们对数据库概念新一轮的思考。不是吗?
NoSql数据库和关系型数据库之间的不同
关系型数据库存在很多相关联的表中存取数据,而且这些表会被很多行、列所分割。表之间会通过以列存储的外键,来相互关联。当查询数据的时候,如果数据级别比较大,可能一条企望的数据会涉及到数十张表(甚至上百张)也不为怪,我们会将它们通过各种条件相关联;当写数据的时候也是一样。不是吗?
但是,NoSql数据库则不然。它们有一个非常不同的存储模型。
比如说,一个面向文档存储的NoSql数据库(如:MongoDB),它会将你想要存储的数据以类JSON形式存储、聚合到文档里持久化到硬盘,每个文档可以被看做一个Object来提供给你的程序代码使用。而这一个JSON文档格式的Object可能涵盖你使用关系型数据库的数十个表的数据,无论读还是写。这不是很高效、便捷吗?
另一个主要的不同是,关系型数据库都需要一些模式(schema),但是NoSql数据库不需要。
在往数据库写入数据之前,关系型数据库要求用户首先定义一个模式;但是一旦模式定义好且插入数据后,再修改模式是一件非常麻烦、极具破坏性的事,所以这种情况需要避免发生。这种局限性,在大数据时代是不被看好的,应用程序开发人员希望不断、快速地修改、合并数据以丰富他们的应用程序。相比之下,NoSql数据库则能满足这一点,比如面向文档的database允许用户自由的添加字段到JSON文档中而不需要事先定义一些结构;被插入数据库的数据格式也可以随时更改,而不会给应用程序带来破坏性。
不过大部分NoSql数据库是不提供关系型数据库所有的ACID(atomicity, consistency, isolation,
durability)事物保证的,但是它们有独到的容错机制。NoSql Database 种类
NoSql如今已经支持key-value存储,document存储,BigTable和graph存储等;如今流行的软件有MongoDB,Cassandra,CouchDB,HBase等,都是Nosql类数据库。
1.Key-value 存储是最简单的Nosql数据库存储形式。在数据库中每个独立的条目都是一对key和value的组合,此类库有Riak
和Voldemort;像Redis这类数据库,还支持不同数据类型的value,比如 2.Document database
也可看着key-"value"存储,只不过这个value被称为文档(document)。此文档可以是复杂的数据结构:可以包含很多key-value对,或者很多key-array对,抑或是嵌套的文档结构。
3.Graph 存储主要关于网络相关的信息,比如社交关系等。相关数据库有:Neo4J和HyperGraphDB。4.Wide-column
存储是针对大数据进行优化的存储方式,而且是以列存储代替了传统的行存储,例如:Cassandra和HBase。为什么使用 NoSQL 数据库?
1.NoSql能够灵活的捕获非结构、半结构化的数据的大数据
数据变得越来越容易通过第三方应用来捕获,比如Facebook和D&B等其他应用。个人用户信息,地理位置数据,社交图表,用户所属的内容,设备使用日志以及传感器等生成的数据等都是能不断被捕获的结构不固定的数据集。而开发人员可以使用这些数据来丰富现有的应用或者开发新的应用也并不奇怪。所以这些数据的使用正在迅速的改变通信、购物、广告、娱乐以及关系管理原有的样子。然而,不能充分利用这些数据的App将会逐渐被淘汰。
开发人员需要一个非常灵活、高效的数据库,可以轻松适应新的数据类型并且不会受到来自第三方数据提供者内容结构更改的影响,因为这些数据大部分数据都是非结构化、半结构化的。不幸的是,关系型数据库都有固定的schema以及一些固定的表结构,很难适应各种变化的海量数据模型。但是NoSql提供了可以更好的映射这些需求的数据模型。
很多应用程序都可能从这种非结构化数据模型中获益:诸如CRM,ERP,BPM等工具可以使用这种灵活性来存储他们的数据,而无需在表中执行更改或在数据库中创建通用列。这些数据库也适用于创建原型或快速应用程序,因为它们本身的这种灵活性便非常适合、容易开发新功能。
2.NoSql非常容易扩展
如果数百万用户频繁且并发使用您的应用,则需要考虑可扩展的数据库技术,而不是传统的RDBMS。在保证用户使用性能需求的其他下,应用程序开发人员发现,使用关系型技术,要获得动态可伸缩性和他们所需的扩展级别是很困难的,甚至是不可能的。所以,需要切换NoSql数据库来应对这些变化。
对于云应用程序,关系数据库最初是最受欢迎的选择。然而,它们的使用越来越成问题,因为它们是一种集中式的、分享一切的技术,可以扩大而不是放大。这使他们不适合需要简单和动态可扩展性的应用程序。NoSQL数据库已经从头建立起来,成为分布式,横向扩展技术,因此更适合三层Internet体系结构的高度分布式特性。

Copyright © 2018 Ansel. All rights reserved.