建模:通过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 ...
随机推荐
- day_6.10 tcp三次握手 四次挥手
tcp和udp对比 tcp比udp稳定 断开连接的四次挥手
- ROS中.launch文件的remap标签详解
https://www.cnblogs.com/LiuQiang921202/p/7679943.html
- SQL Server2012远程访问设置
http://jingyan.baidu.com/article/a681b0de3bdb7b3b19434667.html?qq-pf-to=pcqq.group 1.打开SQL server201 ...
- Codeforces 44E - Anfisa the Monkey - [水题]
题目链接:http://codeforces.com/problemset/problem/44/E 题意: 给一个字符串,让你分割成 $k$ 行,每行的字母数在 $[a,b]$ 之间. 题解: 这是 ...
- [No000013D].Net 项目代码风格参考
1. C#代码风格要求 1.1 注释 类型.属性.事件.方法.方法参数,根据需要添加注释. 如果类型.属性.事件.方法.方法参数的名称已经是自解释了,不需要加注释:否则需要添加注释. 当添加注释时,添 ...
- [No000011B]为什么有些程序员悄无声息渡过35岁中年危机?
今天分享是一些已经渡过中年危机的前辈们,看看从他们身上,是如何优雅的过渡的.如果想一直在程序这条路上走下去,建议读完.文章略长. 人物一:陈睿,前百度研发经理,携程定制旅游CTO 从程序员到架构师到管 ...
- MySQL5.6启动报错The server quit without updating PID file
Mysql启动报错如下: [root@db01 opt]# service mysqld start Starting MySQL.... ERROR! The server quit without ...
- angular 使用dialog的经验
利用angular在近期的工作中使用了dialog的方式,总结下经验 由于dialog显示的内容不同,需要用到angular 的ng-include加载不同的文件1 dialog利用指令的方式 app ...
- windows共享文件分析
·小结: 1.win+r,\\ip 弹出登录框,输入Guest,密码空登录:前置检查来宾账户状态: 2.net use 查看当前已经连接到的主机 实践: C:\Users\sas>net u ...
- git bash 命名
git log -p -2 我们常用 -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新. git diff HEAD git clean -df 恢复到最后一次提交的改动: gi ...