按照数据结构来组织,存储和管理数据的仓库。redis
是一个长期存储在计算机内的,有组织的,可共享的,统一管理的大量数据的集合。算法
采用了二维表格关系模型来组成数据的数据库,一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织sql
关系型数据库管理系统 RDBMS数据库
MySQL Oracle msSQL缓存
优势:服务器
<1,二维表结构,容易理解网络
<2,通用SQL语言,使用方便数据结构
<3,支持ACID(原子性,一致性,隔离性,持久性),能够维护数据一致性架构
<4,数据稳定,数据持久化到硬盘,支持海量数据存储并发
<5,服务器性能卓越,服务稳定
缺点:
>1,高并发下IO压力大
数据按行存储,即便只针对其中某一列进行运算,也会将整行数据从存储设备中读入内存,致使IO较高
>2,为维护索引付出的代价大
数据的新增,更新必然伴随着全部二级索引的新增,更新。从而下降关系型数据库的读写能力,索引越多读写能力越差
>3,为维护数据一致性付出的代价大
关系型数据库在高并发下的能力是有瓶颈的,尤为是写入/更新频繁的状况下,出现瓶颈的结果就是数据库CPU高,sql执行慢,客户端报数据库链接池不够等错误
非关系型的,分布式,且通常不保证遵循ACID原则的数据存储系统
NoSql(Not Only SQL)是对关系型数据库的一种补充,两者各有优点,取长补短
优势:
易扩展
NoSQL数据库种类繁多,可是一个共同的特色都是去掉关系数据库的关系型特性。数据之间无关系,这样就很是容易扩展。无形之间,在架构的层面上带来了可扩展的能力。
大数据量,高性能
NoSQL数据库都具备很是高的读写性能,尤为在大数据量下,一样表现优秀。这得益于它的无关系性,数据库的结构简单。通常MySQL使用Query Cache。NoSQL的Cache是记录级的,是一种细粒度的Cache,因此NoSQL在这个层面上来讲性能就要高不少。
灵活的数据模型
NoSQL无须事先为要存储的数据创建字段,随时能够存储自定义的数据格式。而在关系数据库里,增删字段是一件很是麻烦的事情。若是是很是大数据量的表,增长字段简直就是——个噩梦。这点在大数据量的Web 2.0时代尤为明显。
高可用
NoSQL在不太影响性能的状况,就能够方便地实现高可用的架构。好比Cassandra、HBase模型,经过复制模型也能实现高可用。
KV型NoSql ---- Redis,MemCache
以键值对形式存储
• 数据基于内存,读写效率高
• KV型数据,时间复杂度为o(1),查询速度快
• 查询方式单一
• 没法支持海量数据存储
• 存储是基于内存的,会丢失数据
• 读远大于写,读取能力强
搜索型NoSql ---- ElasticSearch
其诞生就是为了解决关系型数据库全文搜索能力较弱的问题 ,全文搜索的原理是倒排索引
列式NoSql ---- Hbase
大数据时代最具表明性技术之一 以Hbase为表明
文档型NoSql ---- MongoDB
分类
|
Examples举例
|
典型应用场景
|
数据模型
|
优势
|
缺点
|
---|---|---|---|---|---|
键值(key-value)
|
Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB
|
内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。
|
Key 指向 Value 的键值对,一般用hash table来实现
|
查找速度快
|
数据无结构化,一般只被看成字符串或者二进制数据
|
列存储数据库
|
Cassandra, HBase, Riak
|
分布式的文件系统
|
以列簇式存储,将同一列数据存在一块儿
|
查找速度快,可扩展性强,更容易进行分布式扩展
|
功能相对局限
|
文档型数据库
|
CouchDB, MongoDb
|
Web应用(与Key-Value相似,Value是结构化的,不一样的是数据库可以了解Value的内容)
|
Key-Value对应的键值对,Value为结构化数据
|
数据结构要求不严格,表结构可变,不须要像关系型数据库同样须要预先定义表结构
|
查询性能不高,并且缺少统一的查询语法。
|
图形(Graph)数据库
|
Neo4J, InfoGrid, Infinite Graph
|
社交网络,推荐系统等。专一于构建关系图谱
|
图结构
|
利用图结构相关算法。好比最短路径寻址,N度关系查找等
|
不少时候须要对整个图作计算才能得出须要的信息,并且这种结构不太好作分布式的集群方案。
|