ignite affinity key 并置 究竟是个啥?

ignite affinity key 并置 究竟是个啥?先上个pgsql操作的对比,然后引出ignite的并置处理规则 ddl: drop table student;CREATE TABLE student(sid int PRIMARY KEY ,sn

ignite affinity key 并置 究竟是个啥?

先上个pgsql操作的对比,然后引出ignite的并置处理规则

ddl:

drop table student;CREATE TABLE student(sid int PRIMARY KEY ,sname varchar(64), cid int);  
drop table course;CREATE TABLE course(cid int PRIMARY KEY ,cname varchar(64));  
drop table score;CREATE TABLE score(sid int ,cid int,score int,PRIMARY KEY (sid,cid));  

代码100分

dml:

course表:

cid cname
1 yuwen
2 shuxue
3 yingyu

student表:

sid sname cid
1 zhang 1
2 wang 2
3 liu 1
4 li 3
5 chen 3
6 zhao 3

score表:

sid cid score
1 1 99
3 1 99
2 2 50
4 3 79

dql 查询有成绩的学生信息

代码100分SELECT student.* FROM student inner JOIN score ON STUDENT 
.sid=score.sid

pgsql结果

sid sname cid
1 zhang 1
3 liu 1
2 wang 2
4 li 3

ignite结果

SID SNAME CID
1 zhang 1
2 wang 2

显然,ignite结果不正确,似乎是少了部分结果

ignite 并置:

  • ignite的数据是分布式存在的
  • join类计算只会在本地的数据集上执行,不会跨节点
    因此有两种处理方式:
  1. 设计时就把具有E-R关系的数据分布在相同的节点,此种方式最优,在设计分库分表时也需要考虑这一点
  2. 开启并置处理:affinity_key=sid,即是告诉ignite,涉及到这个字段的计算时,需要把数据广播到其他所有节点,由此可见,当表的数据量较大时,性能很差

改写score表的ddl如下:

CREATE TABLE score(sid int(11) ,cid int(11),score int(11),PRIMARY KEY (sid,cid))
WITH "template=partitioned,backups=1,affinity_key=sid" ;

再执行:

代码100分SELECT student.* FROM student inner JOIN score ON STUDENT 
.sid=score.sid

ignite结果

SID SNAME CID
1 zhang 1
2 wang 2
3 liu 3
4 li 3

连序都排好了,你说赞不赞 _

file

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7801.html

(0)
上一篇 2023-03-13
下一篇 2023-03-13

相关推荐

  • Python安装matplotlib教程

    Python安装matplotlib教程a href=”https://beian.miit.gov.cn/”苏ICP备号-1/a Copyright www.python100.com .Some Rights Reserved.

    2024-07-07
    46
  • 从 Exadata 到 TiDB,中通快递 HTAP 实践[通俗易懂]

    从 Exadata 到 TiDB,中通快递 HTAP 实践[通俗易懂]作者介绍:朱志友,中通快递大数据架构师。 中通快递背景介绍 中通快递业务的规模目前是世界第一,是第一个达成年百亿业务量的快递企业,在 2019 年的双十一更是完成了订单量超过 2 亿的佳绩。中通科技…

    2023-03-28
    156
  • 提高Python编程效率的工具

    提高Python编程效率的工具Python已成为最流行的编程语言之一,它在数十年来一直拥有迅速增长的用户,Python能够崛起的重要原因是其扩展库和工具的丰富性。这些工具可以提高Python程序员的效率,使开发更加高效和舒适。在本文中,我们会介绍几个Python编程效率提高的工具,这些工具对于Python工程师在日常工作中非常有用。

    2024-01-23
    101
  • Python Setup.py:构建和分发Python软件的核心工具

    Python Setup.py:构建和分发Python软件的核心工具Python是一种高级编程语言,已经成为了web开发、数据科学、机器学习等领域的主要语言之一。当你开发了一个Python代码库,你希望在其他地方使用它,那么如何分发这个代码库呢?这就需要用到Python Setup.py,一个构建和分发Python软件的核心工具。本文将详细介绍Python Setup.py的使用方法。

    2023-12-06
    111
  • 离线部署calico_k8s自动化部署

    离线部署calico_k8s自动化部署离线CDH集群自动化部署工具 离线CDH集群安装与部署的自动化脚本工具,简单支持「离线一键装机」。 脚本将对系统配置做出一定修改,使用前请务必确认当前服务器无其他人员、任务使用,以免造成不必要的麻烦,

    2023-05-16
    149
  • 使用JS的截取字符串方法创建标题

    使用JS的截取字符串方法创建标题在Web开发中,标题是Web页面中比较重要的一个元素,往往能很好地体现页面的主题和重点。本文将介绍如何使用JS的截取字符串方法创建标题,方便地实现Web页面标题的定制。

    2024-08-17
    30
  • 用Python实现数据爬取

    用Python实现数据爬取在当今互联网时代,数据的产生和传输速度之快已经无法计量。从早期简单的HTML页面到今天各种复杂的多媒体内容,人类对数据的需求在逐年增长。而数据爬取技术由此诞生,随着不断的技术革新和发展,其重要性逐渐凸显。Python语言恰好具备优秀的网络编程库和HTML解析器,成为了数据爬取的有力武器。本文将从多个角度详细讲解用Python实现数据爬取的相关技术。

    2024-08-26
    25
  • 宝塔部署war包项目,出现SQLException: Access denied for user

    宝塔部署war包项目,出现SQLException: Access denied for user新公司使用的是宝塔来部署项目,war包。在部署运行时遇到了SQLException: Access denied for user 'xxx@xxxxx' (using passwor

    2023-02-28
    150

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注