NoSQL 广泛使用的四种模型: 键值,文档,列族,图。前三种的共同特征是 面向聚合 。聚合作为交互单元的数据集合,使数据库在集群上管理数据存储更为方便。
图数据库的基本数据结构是: 由边连接而成的若干节点。它不使用关系模型,但是与面向聚合数据库的明显差异在于,它重视数据间的 关系 。使用图数据库时,大部分操作是浏览各种关系。图数据库通常运行在 单一 的服务器上,而不是分布式的集群中。
-
-
数据分布有两种方式:
-
-
将不同数据分片存在多个服务器中,每一个数据子集都由专门一台服务器负责
-
将数据复制到多个服务器上,每份数据都能在多个节点中找到
-
-
数据复制有两种方式:
-
-
主从复制 : 将其中一个节点当作权威数据源,并负责写入操作;其他从节点都要和主节点保持同步,它们可以负责读取操作
-
对等复制 : 任何节点均可写入,节点间互相协调以同步其数据
键值数据库
键值数据库是一张简单的哈希表,主要用在所有数据库访问都通过主键来操作的情况下
Oracle |
Riak |
数据库实例 |
Riak集群 |
表/table |
存储区/bucket |
行/row |
键值对/key-value |
适用于:
-
存放会话信息。网络会话都是唯一的,所以分配的sessionid也是唯一的。全部会话内容都可以用一条PUT请求存放,只需一条GET请求就能获得
-
用户配置信息。
-
购物车数据。电子商务网站的用户都与其购物车绑定。由于购物车的内容要在不同时间,不同浏览器,不同会话中保持一致,所以可以把购物信息放在VALUE属性中,并将其绑定到userid这个键名上。
文档数据库
文档数据库可以存取文档,其格式可以是XML,JSON,BSON
Oracle |
MongoDb |
数据库实例 |
MongoDb 实例 |
模式/schema |
数据库 |
表/table |
集合/collection |
行/row |
文档/document |
rowid |
id |
适用于:
-
事件记录
-
内容管理系统和网站发布程序
-
网站分析和实时分析。由于可以只更新部分文档的内容,所以用它来存储 页面浏览量 , 独立访客数 会非常方便
-
电子商务应用程序。存储产品和订单等
列族数据库
列族数据库可以存储关键字以及其映射的值,并且把值分成多个列族,让每个列族代表一张数据映射表
Oracle |
Cassandra |
数据库实例 |
集群/cluster |
数据库 |
键空间/keyspace |
表/table |
列族/column family |
行/row |
行 |
适用于:
-
合适用来保存应用程序状态或运行中遇到的错误等信息事件
-
可以将博文的tag,category,link 等属性放在不同的列中。博客用户和博文可以存在不同列族中
-
统计某页面的访问人数并分类
-
限期使用。向用户提供适用版,可以通过 带过期时限的列 来实现。这种列过了给定时间后,就会由 Cassandra 自动删除。程序检测到此列不存在,收回用户访问权限
图数据库
图数据库存放实体和实体间的关系,实体也叫节点,节点视为应用程序中某对象的实例,关系又叫边。用图将数据一次性组织好后,稍后便可根据 关系 以不同方式解读
适用于:
-
部署并使用图数据库处理社交网络
-
安排运输路线,分派货物。还可以将书店,餐馆等销售点做成节点,当用户靠近时通知他们,提供基于位置的服务
-
推荐引擎
(责任编辑:IT) |