问:建模要从一个限界上下文中来建模,是否可以简单的把几张表进行笛卡尔乘积方式的平铺?

答:不能,原因之一,数据量会急剧增长;原因之二,这样的平铺是毫无意义的,必须要定义一个维度,在这个维度上根据需求约定某个粒度,然后从这个维度粒度进行建模。这个模型 中的

其他属性是和这个粒度是一样的(这点非常重要)。当然了这个模型不一定要满足数据库设计的第二范式的,也就说可以冗余一些数据的,但是必须从这个维度引出的属性;

举个例子:两张表A和B,关系是A一对多B,如果根据B的维度粒度来建模,那么这个模型的主键应该是B,另外,这个模型可以冗余A的数据放到这个模型中。

如果根据A的维度来建模,那么B的数据是不能在这个模型中的。因为你是从A这个粒度来看数据的。

通常情况下,一般都是按照最细粒度来建模的;模型是多个最新粒度的多个维度组合而成,这几个维度最后能和主维度相关,最好其他几个维度也相关,否则无关的做笛卡尔乘积,带来了数据量的增长而无意义。

问:ES的上游数据(即聚合所使用的所有表的数据)新增,满足什么条件下才能进入索引库?

答:入索引有个校验,满足数据的完整性(聚合后,是一条合格的记录才进行推送到索引模块,然后执行索引处理);

问:ES的上游数据的某一个表发生变更,采用什么方式进行重建索引?

通过核心领域对象的主表的主键(比如以产品为核心领域对象的product_id)进行全删(这样会存在一个问题,全删的话会影响实际上并未变更的记录的创建时间和修改时间,

这样的话,创建时间和修改时间就不真实了,被污染了;另外,要保证消费消息全局的顺序性,比如先发送删除命令,然后再发送新增消息,而且要先消费删除,执行完成后,再消费新增信息),然后重建索引;

问:ES的上游数据的新增,更新,删除事件的识别问题?即ES的上游数据发生了变化,比如新增、更新、删除,是否都能够识别出来,然后捕获到,并把最新的

信息推送到ES索引库进行重建索引或者删除或者新增操作?

答: 对ES的上游数据的每张表进行分析,并识别和捕获操作事件,然后给索引模块发送消息。

其中,识别是一个非常和业务相关并且非常重要的事情。要识别一个上游数据变更,是否要同步到索引。

问:ES索引库的实时更新和指定时间段的更新操作怎么实现?

答:实时更新在操作时即可捕获操作事件并拼装消息发送给索引模块交由其进行索引处理;

指定时间段的更新,需要上游数据保留更新时间(要求:数据不能做物理删除,还必须要有更新时间)

建模:通过ES平铺关系型数据库多表的数据的更多相关文章

  1. 关系型数据库与HBase的数据储存方式差别

    现在Bigtable型(列族)数据库应用越来越广,功能也非常强大. 可是非常多人还是把它当做关系型数据库在使用,用原来关系型数据库的思维建表.存储.查询. 本文以hbase举例讲述数据模式的变化. 传 ...

  2. 使用SQL语句清空数据库所有表的数据

    使用SQL语句清空数据库所有表的数据 近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的清理,但表非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进 ...

  3. MySQL的入门与使用,sqlyog对数据库,表和数据的管理

    MySQL的入门 1.到mysql官网下载. 2.安装mysql软件(一定要放到英文路径下) 3.使用 验证是否成功 将mySQL的bin路径添加到系统环境变量Path中 打开dos命令窗口 Wind ...

  4. sqoop将关系型数据库的表导入hive中

    1.sqoop 将关系型数据库的数据导入hive的参数说明:

  5. Kettle 实现mysql数据库不同表之间数据同步——实验过程

    下面是试验的主要步骤: 在上一篇文章中LZ已经介绍了,实验的环境和实验目的. 在本篇文章中主要介绍侧重于对Kettle ETL的相应使用方法, 在这里LZ需要说明一下,LZ成为了避免涉及索引和表连接等 ...

  6. T-SQL - query01_创建数据库|创建表|添加数据|简单查询

    时间:2017-09-29  整理:byzqy 本篇以"梁山好汉花名册"为例,记录MS SQLServer T-SQL语句的使用,包含命令: 创建数据库 | 删除数据库 创建表 | ...

  7. SQL语句基础之 管理数据库,表 和 数据

    MySQL中的基本sql语句 MySQL中主要有三个大的对象,第一个是数据库,有了数据库后,我们才能在数据库里面建表,因为Mysql是关系数据库,它的数据都会以记录的形式存到表里,所以第二个是表,然后 ...

  8. Spark 加载数据库mysql表中数据进行分析

    1.工程maven依赖包 <properties> <spark_version>2.3.1</spark_version> <!-- elasticsear ...

  9. Mysql CURD复习(数据库、表、数据)

    ###############################数据库的CURD:C: create database if not exists tp5_test default charset ut ...

随机推荐

  1. C++编程相关工具

    1 文档类  (1) Doxygen  参考站点:http://www.doxygen.org  Doxygen是一种适合C风格语言(如C++.C.IDL.Java甚至包括C#和PHP)的.开放源码的 ...

  2. toggle显示与隐藏切换

    jQuery中显示与隐藏切换toggle方法 show与hide是一对互斥的方法.需要对元素进行显示隐藏的互斥切换,通常情况是需要先判断元素的display状态,然后调用其对应的处理方法.比如显示的元 ...

  3. CSP 通信顺序进程

    communicating sequential processes CSP 通信顺序进程 C.A.R.Hoare 1979 CSP是一种用来描述并行系统交互模式的形式语言,最早由C.A.R.Hoar ...

  4. PHP之类型转化

    类型转化的判别 PHP在变量定义中不需要(或者不支持)明确的类型定义:变量类型是根据使用该变量的上下文所决定的, 也就是说,如果把一个string值付给变量$var,$var就成了一个string,如 ...

  5. 【编译原理】c++实现自上而下语法分析器

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  6. Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases

    INTRODUCTION   In modern distributed cloud services, resilience and scalability are increasingly ach ...

  7. MySQL InnoDB加锁超时回滚机制(转)

    add by zhj: 看来我对MySQL的理解还有待深入,水还是挺深的啊,MySQL给记录加锁时,可以通过innodb_lock_wait_timeout参数设置超时时间, 如果加锁等待超过这个时间 ...

  8. 【Python学习 】Python获取命令行参数的方法

    背景 最近编写一个python程序的时候,需要去获取python命令行的参数,因此这里记录下如何获取命令行参数的方法. 一.sys 模块 在 Python 中,sys 模块是一个非常常用且十分重要的模 ...

  9. linux export source

  10. mysql 数据表操作 目录

    mysql 数据表操作 存储引擎介绍 mysql 使用存储引擎 mysql 数据表的增删改查 mysql 数据类型 mysql 约束条件