外部排序pipeline
节点的组装,
传统语言与Go语言 对比
外部排序 Pipeline
节点的组装
节点多输入和多输出
Pipeline
外部排序归并节点
外部排序切分
将数据分为左右两半,分别归并排序,再把两个有序数据归并
如何归并:
[1, 3, 6, 7], [1, 2, 3, 5] → 1
[3, 6, 7],[1, 2, 3, 5] → 1
[3, 6, 7], [2, 3, 5] → 2
[3,6,7],[3, 5] → 3
……
把很大的数据源进行切分,切成多少份,每一份再排序,每一份放入一个节点(单台机器上可以装下这部分数据)。不用把很大的数组同时放在内存里。各个节点排完之后到归并节点,(k路归并),归并节点存储的是k个节点的最小的元素(是用堆的数据结构进行排序)
- 分别做归并排序,就是递归
外部排序Pipeline,需要屏障,等内部排序全部进行完,才能进行归并
节点的组装
pipeline
外部排序2
外部排序1
归并排序回顾
外部排序原理:分块进行内部排序,然后归并排序各块,将结果写入文件。
课程里面外部排序 pipeline 的设计
go 语言与面向对象语言的对比
外部排序Pipeline
结点的组装
归并排序算法
外部陪许Pipeline
上游数据必须排好序才能开始归并
pipeline
外部排序 节点图 大数据拆分
归并排序 基础
最通俗易懂的 Golang 系列教程(译) https://github.com/Tinywan/golang-tutorial