NoSQL和SQL区别

一、NoSQL数据库的四大种类

一)分类
在这里插入图片描述
图 1 NoSQL 数据库分类

二)不同分类特点对比

分类例子应用场景数据模型优点缺点
键值数据库Redis,Oracle BDB内容缓存,主要处理大量数据的高访问负载,也有一些日志系统等Key 指向 Value 的键值对,通常用hash table来实现查找速度快数据无结构化,通常只被当作字符串或者二进制数据
列存储数据库Cassandra, HBase分布式的文件系统以列簇式存储,将同一列数据存在一起查找速度快,可扩展性强,更容易进行分布式扩展功能相对局限
文档型数据库CouchDB, MongoDBWeb应用Key-Value对应的键值对,Value为结构化数据数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构查询性能不高,而且缺乏统一的查询语法
图形数据库Neo4J, InfoGrid社交网络,推荐系统等。专注于构建关系图谱图结构利用图结构相关算法。比如最短路径寻址,N度关系查找等很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。

三)补充
1、KV键值对

  • 新浪:Redis
  • 美团:Redis + Tair
  • 阿里、百度:Redis + Memcached
  • Redis

Redis 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

  • Tair

Tair是一种分布式结构数据存储系统,由一个中心控制节点和一系列的服务节点组成。
Tair是一个Key/Value结构数据的解决方案,它默认支持基于内存和文件的两种存储方式,分别与缓存和持久化存储对应。
Tair的功能是get、put、delete以及批量接口。

在这里插入图片描述 图2 Tair总体架构图

  • Memcached

Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。

Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。

Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。 本质上,它是一个简洁的key-value存储系统。

一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

2、文档型数据库

  • BSON格式

Bson格式是类似json的一种二进制格式,主要被用作MongoDB数据库中的数据存储和网络传输,专门为MongoDB而开发的。

这种格式不一定比json存储的文件小,其优点是解释快。

  • MongoDB

MongoDB是一个基于分布式文件存储的数据库,C++编写,主要用来处理大量的文档。
MongoDB是一个介于关系型数据库和非关系型数据库中间的产品,是非关系型数据库中功能最丰富,最像关系型数据库的。

  • ConthDB

二、NoSQL和SQL的区别

一)概念

SQL:是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。是用于所有数据库的基本语言,不同数据库之间存在较小的语法改,但基本的SQL语法基本保持不变。
SQL数据库:指关系型数据库,有:SQL Server、Oracle、MySQL(开源)…
NoSQL数据库:泛指非关系型数据库或分布式数据库,有:Redis、MongoDB、ConthDB…

二)区别

在这里插入图片描述
图3 SQL数据库和NoSQL数据库对比

1、语言

SQL数据库是基于表的,它的定义和操作是基于数据的结构化查询语言(SQL)。这种语言非常强大,适用于复杂的查询,但要求所有数据都必须遵循相同的结构。这可能需要大量的前期准备,意味着结构的变化容易对整个系统造成破坏。

NoSQL数据库具有非结构化数据的动态模式,没有固定查询语言,是通过API、SDK来实现。数据以多种方式存储,有面向文档,面向列,基于图形或组织为KeyValue存储。可以在没有首先定义结构的情况下创建文档,语法因数据库而异,可以随时添加字段。

2、可伸缩性

SQL数据库都是可垂直扩展的。
NoSQL数据库可以横向扩展,更适用大数据存储。

3、遵循的属性

SQL数据库遵循ACID属性(atomicity原子性, consistency一致性, isolation隔离性和durability持久性)
NoSQL数据库遵循Brewers CAP定理(Consistency一致性,Availability可用性和Partitiontolerance分区容差)

4、适用场景

目前许多大型互联网项目都会选用MySQL(或任何关系型数据库) + NoSQL的组合方案。

  • 适合使用 SQL 开发的项目:

适合存储结构化数据,如用户的帐号、地址:
1)数据库模式,结构可以预先规定的,或者可以相对固定的项目
2) 要求数据事务性、一致性
3) 这些数据的规模、增长的速度通常是可以预期的

  • 适合使用 NoSQL 开发的项目:

适合存储非结构化数据,如文章、评论:
1)不相关,不确定和逐步发展的数据需求
2) 速度和可扩展性至关重要的
3)这些数据通常用于模糊处理,如全文搜索、机器学习

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值