数据存储模型
1、关系模型
主要以表的形式存储数据,表中每一行(row)为一个记录,每列都有名称和类型
2、NoSQL模型:
(1)键值对数据模型
有一个特定的key和一个value指针,指向特定的数据。
适用:通过key对数据进行查询和修改等操作
不适用:侧重于批量查询、更新的海量存储系统,以及复杂逻辑操作
优点:数据模型简单、易于实现
缺点:由HashTable实现,无法进行范围查询;弱化了数据结构,只能在应用层解析结构;模型不提供事务处理机制,只提供get,set操作。
应用:Redis数据库(键值模型的内存数据库,较小数据的高性能操作)、Dynamo(Amazon专用)
(2)列式数据模型
列式存储的形式类似于表,但是围绕"列"存储,一个列的数据尽可能存储在硬盘同一页。
适用:适用于数据分析和数据仓库等,迅速查找数据量大的应用。
不适用:查询涉及的数据量较小或者大部分查询都需要整行的数据。
优点:查找速度快,可扩展性强。
应用:BigTable、Cassandra、HBase
列族:将多个经常一起访问的数据列的各个值存放在一起。类似于键值对key-value模型,value对应一个列族。
(3)文档数据模型
文档存储与键值模型类似,value指向结构化数据。value数据以JSON或类JSON格式存储。与关系模型不同,支持嵌套结构;与键值存储不同,文档存储关心存储的内部结构。
适用:web应用
优点:数据结构要求不严格,不需要预先定义结构
缺点:查询性能一般,缺乏统一的查询语法
应用:MongoDB、CouchDB
(4)图像数据模型
图形存储存储图的节点和边的信息,部分模型支持添加注释。图模型由节点、边、边的属性组成。
适用:图结构
优点:利用图结构相关算法提高性能
缺点:功能相对有限,扩展性差
应用:Neo4J、GraphDB