建模:通过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.10xadmin
2018-10-10 15:11:55 这几天讲的是xadmin插件 就是把表单,数据内容封装到类里面,简化的增删改查步骤! 放上源代码: app01/xadim.py from django.con ...
- lamp环境配置
一.配置虚拟域名 1.为了模拟DNS,在本地hosts文件中设置一下 2.模拟三个项目 3.在apache中配置虚拟主机 去到apache的sites-available目录里复制三次def ...
- Flask web开发之路六
紧接着上篇文档,写模板继承和block,URL链接和加载静态文件 模板继承和block 项目结构 主app文件代码: from flask import Flask,render_template a ...
- python数据类型之pandas—DataFrame
DataFrame定义: DataFrame是pandas的两个主要数据结构之一,另一个是Series —一个表格型的数据结构 —含有一组有序的列 —大致可看成共享同一个index的Series集合 ...
- /usr/bin/ld: 找不到 -lmsc----解决方案
系统的默认搜索依赖库路径为,/usr/local/lib 在camkelists.txt文件中对可执行文件链接libmsc.so add_executable(iat_publish src/iat_ ...
- [No000018C]Vim清除上次的搜索高亮结果-Vim使用技巧(1)
在打开文件中使用Vim搜索功能并开启高亮显示后怎么取消当前高亮显示的目标词? 最简单的方法是再使用Vim搜索一串文档中不存在的目标词来覆盖当前高亮的搜索结果. 其实,可以在Vim尾行模式下使用 :no ...
- [No0000175]maven常用命令集合(收藏大全)
抽了点时间,整理了一些maven常用命令参数,以便参考:参考了maven官网和网上其他一些maven追随者的文件,不在此一一列举,但表示感谢! mvn命令参数 mvn -v, --version 显示 ...
- [No0000165]SQL 优化
SELECT 标识选择哪些列FROM 标示从哪个表中选择WHERE 过滤条件GROUP BY 按字段数据分组HAVING 字句过滤分组结果集ORDER BY 序按字段排序 ASC( 默认) 序升序 D ...
- mysql 超时时间
小结: 1.mysql服务端主动关闭链接的秒数: MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables https: ...
- C++生成静态库
//StaticMath.h #include <iostream> class StaticMath { public: //StaticMath(void); //~StaticMat ...