几种数据库存储模型的对比

数据库

    数据库是按照一定数据结构所定义并且用来组织,管理,存储数据的仓库。大家熟悉的MySQL数据库。就是其中的关系型数据库。而像redis这种的又是非关系型数据库,这类技术被称之为NoSQL,还有新出现的一类数据库,NewSQL,NewSQL是不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库对ACID和SQL特性的支持。
数据库行业真可谓百花齐放。

NoSQL是一种新型的技术。可以实现高吞吐量,不支持ACID数据库的设计范式。NoSQL没有统一的查询语言。

数据库中什么是关系型?什么是非关系型数据库呢?
关系型数据库中存储的数据都是有一定的关系的,如一个库,一张表,存储了名字:张三,年龄:20,性别:男。
这三个数据是有关系的,因为他们都是在描述同一个人。但是如果是Redis这种键值式数据库呢,只知道年龄20。至于这个年龄20是在说谁的年龄。Redis并不关心。如果是MongoDB这类的文档式数据库呢。名字,年龄,性别。这三个属性时一个整体,没错。但是,每个人都必须要记录名字,年龄,性别。而第二个人,李四,假如他多了一个属性,爱好,那么整个表都需要加这个属性吗?MongoDB不需要,文档与文档之间没有必然的联系。也就是,第一个人有3个属性,第二个人可以有4个属性。

按照数据库存储模型来说分为以下4类。

列式存储模型
文档数据模型
键值数据模型
图式数据模型



列式存储模型

应用场景:分布式数据存储,在分布式文件系统上支持随机读写的分布式数据存储。
典型的产品:Hadoop/Hbase,Hypertable 
数据模型:以“列”为中心进行存储,将同一列数据存储在一起。
优点:快速查询,高可扩展性,易于实现分布式扩展。


文档数据模型

应用场景:非强事务需求的web应用。
典型的产品:MongoBD,Elasticsearch
数据模型:键值模型,存储为文档模型
优点:数据模型无须事先定义,存储很随意。


键值数据模型

应用场景:内容缓存,用于大量的并行数据访问的高负载场景。
典型的产品:Redis,DynamoDB,LevelDB
数据模型:基于哈希表实现的key-value
有点:查询迅速,写入迅速
缺点:数据没有什么结构

图式数据模型

应用场景:社交网络、推荐系统,关系图谱(如陌陌的附近的人这样的功能)
典型的产品:Neo4J     
数据模型:图式结构
优点:适用于图式计算场景



你可能感兴趣的:(非关系型数据库)