• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > NOSQL(二)聚合数据模型,nosql聚合数据模型

NOSQL(二)聚合数据模型,nosql聚合数据模型

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含nosql数据模型,nosql java插入数据,nosql数据,大数据 nosql,nosql数据库有哪些等服务器相关知识,网友希望可以进行参考

NOSQL(二)聚合数据模型,nosql聚合数据模型


《NoSQL精粹》读书笔记,转载请注明出处《jiq?钦's technical Blog》

 

一、NoSQL的数据模型

关系型数据库的数据模型是“关系”和“元组”,一个关系对应一张表,而一个元组对应一行,其中元组由一系列的值组成,不能嵌套。        

NoSQL数据库最大的转变就是抛弃了关系模型。但是每种NoSQL解决方案模型都不同,大体上可以将NoSQL数据模型分为四类:“键值”、“文档”、“列族”、“图”,前三类模型都有一个共同特征,称为“聚合模型”。

 

二、聚合模型

2.1 什么是聚合?

聚合是“领域驱动设计”中的概念,通常我们想把一组相互关联的对象视为一个整体单元来操作,这个单元就是聚合。

举个例子,有个购物网站,需要管理用户信息、商品信息、收货地址信息、订单信息、付款方式等,如果用关系模型来描述,将会被划分为用户表、订单表、商品表、付款方式表等,表与表之间存在某种关系。如果用聚合的思路来做,一种方式是分为两个聚合,一个聚合是用户,由用户基本信息和收货地址信息等组成,一个聚合是订单,由商品列表、付款方式等信息组成;另一种方式还可以将用户下面的所有订单全部都放到用户聚合中。

如何划分聚合并没有标准的答案,这完全取决于你如何操作你的数据。如果想要一次性访问用户的所有订单,就放到一个大的聚合中,如果想要针对专门的一比订单处理,则划分为用户和订单两个聚合比较好。

 

2.2 为什么选用聚合模型?

选用面向聚合的模型决定性因素,在于其非常适合于在集群中运行。

根据场景来设计聚合,可以将采集数据时所需的节点数降至最小。在数据库中明确包含聚合结构,就可以根据这个信息知道哪些数据需要在一起操作了,这些数据就应该放在同一个节点上。总之在集群上运行时聚合是中心环节,因为数据库必须保证将聚合内的数据放在同一个节点上。聚合还是更新操作的最小数据单位,对事物控制来说,以聚合为操作单元正合适。

 

2.3 聚合对事务处理的影响?

关系型数据库有事务的概念,可以将任意表格任意行放在一个ACID事务中操作,具备原子性、一致性、隔离性和持久性,这里面的核心主要是原子性。

而面向聚合的数据库不支持跨越多个聚合的ACID事务,取而代之的是只能在一个聚合结构上执行原子操作,不过实际应用中大多数原子操作都可以局限于聚合结构内部,而且我们在划分聚合时这也是要重点考虑的关键因素之一。

 

三、几种不同风格的面向聚合数据模型

3.1 键值数据模型和文档数据模型

         共同点:都包含大量聚合,每个聚合中都有一个获取数据所用的键或ID。

         区别:键值数据库将聚合看做不透明的整体,是没太多意义的大块信息,只能根据键来查出整个聚合。文档数据库中聚合对数据库透明,可以查询并获取其中的一小部分数据。不透明的优势在于可以存储任意数据,而文档数据库则要限制其中存放的内容,定义了允许的结构和数据类型,这样做好处是可以灵活地访问数据。

         你可能觉得在文档数据库中放置一个ID字段用作“键值式查询”,这样就和键值数据库一样了,但区别在于键值数据库就是通过键来搜索内容,而文档数据库提交的查询关键词往往是基于文档内部结构,可能是键,也可能是其他东西。

 

3.2 列族数据模型

         大多数数据库以行为单位存储数据,尤其是在需要提高写入性能时尤为如此。然而某些场合下写入操作少,但经常需要一次性读取若干行中的很多列,这种情况下将所有行的某一组列作为基本数据存储单位效果最佳。“列存储数据库”由此而来。

         BigTable及其后继者遵循了“以一组列(列族)来存储”的概念。

         理解列族模型最好的方式是将其视为“两级聚合结构”。比如一个以列族模型描述的用户信息结构,每一行代表一个用户,包含了基本信息列族(有姓名、住址、年龄等信息)、订单列族(包含所有订单列表)等,其中第一级聚合就是“行聚合”,是行键到一行数据的映射,包含了一些有用数据块(基本信息、订单信息)的列族。第二级聚合是“列族聚合”,每一个列族都定义了一种记录类型,如客户信息。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • NOSQL(六)集群并发计算模型Map-Reduce,nosqlmap-reduce
  • NOSQL(三)分布式数据模型,nosql模型
  • NOSQL(二)聚合数据模型,nosql聚合数据模型

相关文章

  • Andrew Ng Machine Learning,andrewlearning
  • Build Spark1.3.1 with CDH HADOOP,spark1.3.1cdh
  • centos源码编译docker,centos源码docker
  • Hadoop 使用常见问题,hadoop使用常见问题
  • 豆瓣Redis解决方案Codis源码剖析:Dashboard,rediscodis
  • NOSQL(三)分布式数据模型,nosql模型
  • openstack-glance-api.service start request repeated too quickly, refusing to start,openstackglance
  • Hadoop启动时报错:Incorrect configuration: namenode address dfs.namenode.servicerpc-address or...,hadoopnamenode
  • Hadoop学习总结,hadoop总结
  • Linux下libsvm的安装及简单练习,linuxlibsvm练习

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 使用 ElasticSearch + LogStash + Kibana 来可视化网络流量,kibanaelasticsearch
    • Hadoop学习---第一篇搭建Hadoop集群,---hadoop
    • hadoop1 & hadoop2 fair-schduler 配置和使用,hadoop
    • 在 Mac OS X 系统里使用 Docker,osdocker
    • Scala非值类型,Scala值类型
    • hive之实现列转行,hive列转行
    • openstack:cinder-volume配置lvm/glusterfs/IP-SAN等多种后端,openstacklvm
    • 自定义输出文件名,输出文件名
    • -bash:jps:command not found,-bashjps
    • HBase入门5(集群),hbase入门5集群

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有