当前位置: 首页 > news >正文

解决数据架构难点数据分布的六种策略

1.1. 解决数据架构难点数据分布的六种策略

from:PYY

 

数据分布的六种策略

1)       独立Schema(Separate-schema)

2)       集中(Centralized)

3)       分区(Partitioned)

4)       复制(Replicated)

5)       子集(Subset)

6)       重组(Recorganized)

 

 

1.1.1.   独立Schema(Separate-schema)

当一个大系统由相关的多个小系统组成,且不同小系统有不相同的数据库Schema定义,这种情况称为“独立Schema”。 

 

1.1.2.   集中(Centralized)

指一个大系统必须支持来自不同地点的访问,或者该系统由相关的多个小系统组成,而持久集中化数据进行集中化的、统一格式的存储。

  

1.1.3.   分区(Partitioned)

分区方式包括水平分区和垂直分区两种类型,跨“地域”提供“相同的服务”常常采用水平分区,选点“两个相同、两个不同”——相同的应用程序、不同的应用程序部署实例,相同的数据模板,不同的数据值。

 

 

 

在实践中,水平分区的应用非常广泛,而垂直分区应用要小,特点:不同数据节点的Schema会有“部分字段(Field)”的差异,但可以从同一套总的数据Schema中抽取得到。

 

 

1.1.4.   复制(Replicated)两上两个

在整个分布式系统中,数据保存多个副本,并且以某种机制(实时或快照)保持多个数据副本之间的数据一致性。

 

1.1.5.   子集(Subset)

“子集”是“复制”的特殊方式,就是某节点因功能或非功能考虑而保存全体数据的一个相对固定的子集。

 

 总体而言,子集方式和复制方式有关非常类似的优点:

通过数据“本地化”,提升了数据访问性能。

数据的专门副本,利于优化,便于提高可管理性、安全控制。

1.1.6.   重组(Recorganized)

  业务决定功能,功能决定模型。当遇到数据模型不同时,一般都能够从功能差异的角度找到答案。

  重组这种数据分布策略,就是不同数据节点因要运行的功能不同,而以不同的Schema保存数据——但本质上这些数据是同源的。于是,重组策略须要进行数据传递,但不是数据的“原样儿”复制,而是以“重新组织”的格式进行传递或保存。 

 

应用:

  统计性性重组,例如,如果总公司只须要掌握各分公司的财务、生产等概况信息,那么就不须要把下面的数据原样复制到总公司节点,而是通过分公司应用对信息进行统计后上报。这叫“统计性重组”——数据的重新组织较多地借助了抽取、统计等操作,并形成新的数据格式。

  “结构性重组”的例子,最典型的就是BI系统。生产系统的数据被进行整体重组,增加各种利于查询的维度信息,并以新的数据Schema保存供BI应用使用。

 

 

1.1.7.   应用的3条原则

1)       把握系统特点,确定分布策略(合适原则)

2)       不同分布策略,可以综合运用(综合原则)

3)       从“对吗、“好吗”两方面进行评估优化(优化原则)

 

 

1.1.8.   示例

1.1.8.1医疗信息化中心

 

 

1.1.8.2电信系统

    客户申请服务开通业务流程

  

   数据分布策略 

1.1.8.3铃声下载

 

 

  

 

转载于:https://www.cnblogs.com/dayspring/p/6889049.html

相关文章:

  • Linux系统——提高编译速度的方法
  • 视频播放插件Video.js
  • Android Studio安装配置
  • WebApi接口 - 如何在应用中调用webapi接口
  • 管理两个字
  • Linux基础2
  • python 调用 zabbixApi
  • less 转栏
  • 行列式计算的两种方法
  • Android源码解析--超好看的下拉刷新动画
  • ES6核心内容精讲--快速实践ES6(二)
  • C++——编程常见错误
  • linux -硬盘分区
  • [8-27]正则表达式、扩展表达式以及相关实战
  • django 名词解释
  • ----------
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • Django 博客开发教程 16 - 统计文章阅读量
  • ES6之路之模块详解
  • gulp 教程
  • Hexo+码云+git快速搭建免费的静态Blog
  • in typeof instanceof ===这些运算符有什么作用
  • LeetCode18.四数之和 JavaScript
  • Node 版本管理
  • Python 反序列化安全问题(二)
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • vue的全局变量和全局拦截请求器
  • Windows Containers 大冒险: 容器网络
  • windows-nginx-https-本地配置
  • 创建一种深思熟虑的文化
  • 聚簇索引和非聚簇索引
  • 聊聊directory traversal attack
  • 使用权重正则化较少模型过拟合
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 微服务核心架构梳理
  • 详解移动APP与web APP的区别
  • 学习ES6 变量的解构赋值
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • !!java web学习笔记(一到五)
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #DBA杂记1
  • #pragma once与条件编译
  • #Z2294. 打印树的直径
  • (SpringBoot)第二章:Spring创建和使用
  • (zt)最盛行的警世狂言(爆笑)
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • . Flume面试题
  • .gitignore文件---让git自动忽略指定文件
  • .net 4.0发布后不能正常显示图片问题
  • .NET CORE Aws S3 使用
  • .NET NPOI导出Excel详解
  • .NET 分布式技术比较