NoSQL数据库
最近看到Neo4J图形数据库也属于NoSQL,那NoSQL是什么,有几种类型?
NoSQL泛指非关系型的数据库。Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。用于超大规模数据的存储。
优势:
易扩展
大数据量高性能
多样灵活的数据类型
NoSQL数据库主要类型
(1)Key-Value 数据库
使用键值(key-value)存储的数据库,其数据按照键值对的形式进行组织、索引和存储。
数据模型:键/值对
值是一个字符串对象,可以是任意类型的数据
常见的:Redis,Memcached,Cassandra,LevelDB
优点:简单、易部署,大量写操作时性能高,查找速度快,扩展性好,灵活性好
缺点:无法存储结构化信息、条件查询效率较低
应用:
主要用于处理大量数据的高访问负载,如:
频繁读写,拥有简单数据模型的应用
内容缓存(如会话、配置文件、参数、购物车)
存储配置和用户信息的移动应用
(2)文档数据库
面向文档数据库会将数据以文档的形式储存。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型也可以是复杂的类型。
文档数据库通常以 JSON 或 XML 格式存储数据。
数据模型:键/值对
值是版本化的文档
常见的:MongoDb,CouchDB
优点:性能好,灵活性高,复杂性低,数据结构灵活
缺点:无统一的查询语言
应用:
存储、索引并管理面向文档的数据或类似半结构化数据,如:
具有大量读写操作的网站
使用json数据结构的应用
使用嵌套结构等非规范化数据的应用程序
(3)列式数据库
以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和即时查询
数据模型:列族
常见的:HBase,BigTable,Cassandra,HadoopDB
优点:
高效的储存空间利用率
查询效率高(读取多条数据的同一列效率高)
可扩展性强
容易做分布式扩展
缺点:不适合小量数据,功能较少,大都不支持强事务一致性
应用:
分布式的文件系统
拥有潜在大量数据的应用程序
拥有动态字段的应用程序
数据在地理上分布于多个数据中心的应用程序
(4)图形数据库
图数据库允许将数据以图的方式储存。实体会被作为顶点,而实体之间的关系则会被作为边。
常见的:Neo4J, InfoGrid, Infinite Graph
优点:灵活性高,支持复杂的图形算法,可用于构建复杂的关系图谱
缺点:
复杂性高、只能支持一定的数据规模
不好做分布式的集群方案
应用:
用于处理具有高度相互关联关系的数据,如:
社交网络、模式识别、依赖分析、推荐系统、路径寻找等问题