建模:通过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 ...
随机推荐
- 依赖注入容器之Castle Windsor
一.Windsor的使用 Windsor的作为依赖注入的容器的一种,使用起来比较方便,我们直接在Nuget中添加Castle Windsor,将会自动引入Castle.Core 和 Castle.Wi ...
- cadence xbl封装转AD
下载一个 软件 免费试用 导出到ad,出现一个脚本,脚本工程直接拉到ad里面,然后 有这两个文件,启动是有顺序的,顺序一旦错误就会产生大问题,没有任何反应 设置工程启动顺序,再次启动,出现打开文件窗口 ...
- Codeforces 1096D - Easy Problem - [DP]
题目链接:http://codeforces.com/problemset/problem/1096/D 题意: 给出一个小写字母组成的字符串,如果该字符串的某个子序列为 $hard$,就代表这个字符 ...
- HDU 6228 - Tree - [DFS]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6228 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...
- [No000010B]Git4/9-时光机穿梭
我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed version c ...
- TF模型训练中注意Loss和F1的变化情况
之前训练模型,认为网络图构建完成,Loss肯定是呈现下降的,就没有太留心,知识关注F1的变化情况,找到最优的F1训练就停止了,认为模型就ok. 但实际中发现,我们要时刻关注网络的损失变化情况,batc ...
- MySQL5.6启动报错The server quit without updating PID file
Mysql启动报错如下: [root@db01 opt]# service mysqld start Starting MySQL.... ERROR! The server quit without ...
- A Method for the Construction of Minimum-Redundancy Codes
A Method for the Construction of Minimum-Redundancy Codes http://compression.ru/download/articles/hu ...
- Flink - ShipStrategyType
对于DataStream,可以选择如下的Strategy, /** * Sets the partitioning of the {@link DataStream} so that the ou ...
- 【python基础】常用的内置函数
python基础之内置函数 参考: http://www.runoob.com/python/python-built-in-functions.html -zip() zip函数接受任意多个(包括0 ...