建模:通过ES平铺关系型数据库多表的数据
问:建模要从一个限界上下文中来建模,是否可以简单的把几张表进行笛卡尔乘积方式的平铺?
答:不能,原因之一,数据量会急剧增长;原因之二,这样的平铺是毫无意义的,必须要定义一个维度,在这个维度上根据需求约定某个粒度,然后从这个维度粒度进行建模。这个模型 中的
其他属性是和这个粒度是一样的(这点非常重要)。当然了这个模型不一定要满足数据库设计的第二范式的,也就说可以冗余一些数据的,但是必须从这个维度引出的属性;
举个例子:两张表A和B,关系是A一对多B,如果根据B的维度粒度来建模,那么这个模型的主键应该是B,另外,这个模型可以冗余A的数据放到这个模型中。
如果根据A的维度来建模,那么B的数据是不能在这个模型中的。因为你是从A这个粒度来看数据的。
通常情况下,一般都是按照最细粒度来建模的;模型是多个最新粒度的多个维度组合而成,这几个维度最后能和主维度相关,最好其他几个维度也相关,否则无关的做笛卡尔乘积,带来了数据量的增长而无意义。
问:ES的上游数据(即聚合所使用的所有表的数据)新增,满足什么条件下才能进入索引库?
答:入索引有个校验,满足数据的完整性(聚合后,是一条合格的记录才进行推送到索引模块,然后执行索引处理);
问:ES的上游数据的某一个表发生变更,采用什么方式进行重建索引?
通过核心领域对象的主表的主键(比如以产品为核心领域对象的product_id)进行全删(这样会存在一个问题,全删的话会影响实际上并未变更的记录的创建时间和修改时间,
这样的话,创建时间和修改时间就不真实了,被污染了;另外,要保证消费消息全局的顺序性,比如先发送删除命令,然后再发送新增消息,而且要先消费删除,执行完成后,再消费新增信息),然后重建索引;
问:ES的上游数据的新增,更新,删除事件的识别问题?即ES的上游数据发生了变化,比如新增、更新、删除,是否都能够识别出来,然后捕获到,并把最新的
信息推送到ES索引库进行重建索引或者删除或者新增操作?
答: 对ES的上游数据的每张表进行分析,并识别和捕获操作事件,然后给索引模块发送消息。
其中,识别是一个非常和业务相关并且非常重要的事情。要识别一个上游数据变更,是否要同步到索引。
问:ES索引库的实时更新和指定时间段的更新操作怎么实现?
答:实时更新在操作时即可捕获操作事件并拼装消息发送给索引模块交由其进行索引处理;
指定时间段的更新,需要上游数据保留更新时间(要求:数据不能做物理删除,还必须要有更新时间)
建模:通过ES平铺关系型数据库多表的数据的更多相关文章
- 关系型数据库与HBase的数据储存方式差别
现在Bigtable型(列族)数据库应用越来越广,功能也非常强大. 可是非常多人还是把它当做关系型数据库在使用,用原来关系型数据库的思维建表.存储.查询. 本文以hbase举例讲述数据模式的变化. 传 ...
- 使用SQL语句清空数据库所有表的数据
使用SQL语句清空数据库所有表的数据 近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的清理,但表非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进 ...
- MySQL的入门与使用,sqlyog对数据库,表和数据的管理
MySQL的入门 1.到mysql官网下载. 2.安装mysql软件(一定要放到英文路径下) 3.使用 验证是否成功 将mySQL的bin路径添加到系统环境变量Path中 打开dos命令窗口 Wind ...
- sqoop将关系型数据库的表导入hive中
1.sqoop 将关系型数据库的数据导入hive的参数说明:
- Kettle 实现mysql数据库不同表之间数据同步——实验过程
下面是试验的主要步骤: 在上一篇文章中LZ已经介绍了,实验的环境和实验目的. 在本篇文章中主要介绍侧重于对Kettle ETL的相应使用方法, 在这里LZ需要说明一下,LZ成为了避免涉及索引和表连接等 ...
- T-SQL - query01_创建数据库|创建表|添加数据|简单查询
时间:2017-09-29 整理:byzqy 本篇以"梁山好汉花名册"为例,记录MS SQLServer T-SQL语句的使用,包含命令: 创建数据库 | 删除数据库 创建表 | ...
- SQL语句基础之 管理数据库,表 和 数据
MySQL中的基本sql语句 MySQL中主要有三个大的对象,第一个是数据库,有了数据库后,我们才能在数据库里面建表,因为Mysql是关系数据库,它的数据都会以记录的形式存到表里,所以第二个是表,然后 ...
- Spark 加载数据库mysql表中数据进行分析
1.工程maven依赖包 <properties> <spark_version>2.3.1</spark_version> <!-- elasticsear ...
- Mysql CURD复习(数据库、表、数据)
###############################数据库的CURD:C: create database if not exists tp5_test default charset ut ...
随机推荐
- 10.9 Xadmin
2018-10-9 13:53:39
- day_4_24 py
''' 函数的嵌套调用应用 ''' # def print_line(): # print("="*50) # def print_5_line(): # i = 0 # whil ...
- day_5.27py
生成器:send() next() send 和next都可以把生成器向下走,但是send可以传入个参数 ''' 周末继续py 下周回学校过郭星辰生日,还得回来再复查一下 2018-5-27 16: ...
- python数据类型之字典(二)
字典的基本操作 键值查找: >>> aInfo = {'Wangdachui':3000,'Niuyun':2000,'Linling':4500,'Tianqi':8000} &g ...
- OOM
在mnist上测试卷积网络时,显存不够导致下面的报错: ResourceExhaustedError (see above for traceback): OOM when allocating te ...
- 大疆OSMO口袋云台相机惊艳上市!友商该如何是好。。。
2018.11.29 晚上更新: 下午看了大疆新出的口袋云台摄像机,感觉棒极了,于是我立刻去了京东下单预订了.目前是可以免息分期6个月就可以搞定了.‘ 大家敬请期待我的评测视频吧. ======== ...
- Ubuntu 16.04 编译OpenCV 问题解决stdlib.h: No such file or directory
https://blog.csdn.net/xinyu391/article/details/72867510 https://ask.csdn.net/questions/365969
- Node的REPL环境
1. Node的REPL环境 什么是REPL REPL全称 Read-eval-print-loop,交互式解析器 REPL可以提供给程序员对Node.js的一些api快速测试 REPL的基本操作 定 ...
- ES6的十大新特性(转)
add by zhj: 该文章是由国外一哥们写的,由腾讯前端团队翻译,图片中的妹子长得挺好看的,很养眼,嘿嘿.我目前在学习ES6,这篇文章把ES6的 几个主要新特性进行了归纳总结,犹如脑图一般,让人看 ...
- python练习题-day7
1.判断一个数是否是水仙花数, 水仙花数是一个三位数, 三位数的每一位的三次方的和还等于这个数. 那这个数就是一个水仙花数, 例如: 153 = 1**3 + 5**3 + 3**3 while T ...