图书 •
783 引用 •
157 回帖 •
3 关注
博客
关注
-
[链接] [链接]3.5 索引预加载 我们知道,大数据的索引经常也很大,需要建立多级索引,每次查找时都要一级一级地读入,才能最终定位到目标值。因为外存访问的复杂度很高,即使有操作系统的缓存能避 ..
-
[链接] [链接]3.4 行存和带值索引 上一章讲过,列式存储是提高性能的常用手段。然而,对于大多数查找任务来讲,列存却会导致更差的性能。 即使已经有序存储了,通常的列存也可以认为就无法执行不 ..
-
[链接] [链接]3.3 排序索引 外存中更常见的是排序索引。 哈希索引只能针对查找值做等值查找,即判断条件是相等,而不能做区间查找,即判断条件是被查找键在一个指定区间。而且,哈希索引在运气不 ..
-
[链接] [链接]3.2 哈希索引 使用二分法去查找时,还是需要多次读取原文件才能定位到目标值,而且过程中还有不少读取是多余的。如果我们有办法高效地获得目标值的物理位置,那就可以直接读出目标值 ..
-
[链接] [链接]3.1 二分法 如果文件中存储的外存数据表中的记录对被查找键有序,只要这种文件格式可以支持较随意的分段,我们就可以实施外存二分法查找,以避免顺序遍历整个文件。 先将文件分成两 ..
-
[链接] [链接]2.6 数据更新及复组表 前面只讨论了外存数据表中如何追加数据,而没有涉及如何修改。 我们一直在努力把数据尽量紧凑且连续存储,目的是为了减少硬盘存储量以减少读取时间。而紧凑存 ..
-
[链接] [链接]2.5 有序及数据追加 即使不减少存储量,有序存储对于查找和遍历也有巨大的意义,我们会后面会逐步讲到如何利用有序提高运算性能。 A 1 =file('data.ctx').c ..
-
[链接] [链接]2.4 组表与列存 文本文件和集文件都是依次存入每条记录,这种方式称为行式存储(简称行存)。 大多数运算都不会使用到数据表的所有字段,由于硬盘必须成块的读取,这导致在行存方式 ..
-
[链接] [链接]2.3 数据类型 使用二进制文件后,我们可以采用更优化的编码方案。 一个整数在计算机可能占 4 字节或 8 字节,原则上存储到文件中也是这个大小。但是,其实有相当一部分整数并 ..
-
[链接] [链接]2.2 集文件及倍增分段 文本文件使用字符来编码数据,通用性虽然比较好,但性能很差。要把字符转换成可以计算的数值,还需要较多的运算量,日期时间类数据还需要很复杂的解析判断过程 ..
-
[链接] [链接]2.1 文本文件分段 性能问题常常都和数据量大相关,而大数据通常不能在内存中放下,我们要考虑外存数据的运算方案。数据库可能是最常见的外存数据存储方案,但我们无法在数据库中实施 ..
-
[链接] [链接]1.5 多层序号定位 前面讲过,不能针对身份证号直接使用序号定位的方法。但在某些特定情况下,还有变通的手段。 我们仍以用身份证号查找人员为例。如果待查找人群具有一些共同的特征 ..
-
[链接] [链接]1.4 哈希索引 哈希索引可以理解为序号定位的延伸。 使用某个函数将被查找键值计算成一个 1…M 之间的自然数,称为该记录的哈希值,此函数称为哈希函数。将序表 T 的记录按哈 ..
-
[链接] [链接]1.3 位置索引 有时候我们希望查找出目标值在序表中的位置,而不是目标值本身。如果序表对被查找键无序时,就无法使用二分法来提高性能了。事先把数据按被查找键排序后可以使用二分法 ..
-
[链接] [链接]1.2 序号定位 有时被查找键的取值正好是目标值在序表中的序号(即位置),或者很容易通过查找值计算出目标值的序号,这时可以使用序号定位方法。 A 1 =10000.new(~ ..
-
[链接] [链接]1.1 二分法 内存中的序表 T 有字段 K,给定查找值k,找出 T 中字段 K 取值为 k 的记录,字段 K 称为被查找键,找到的记录称为目标值或目标记录。 常规的顺序查找 ..
-
[链接]前言 大数据的技术本质就是高性能,有了足够的性能,大数据分析才能实实在在地落地。 性能优化要在确定有限的硬件条件下实施,软件并不能改变硬件的速度,我们能做的是设计更低复杂度的算法,使实 ..
-
[链接]后记 本书用 12 章的篇幅从零基础开始介绍了程序设计的基本概念和逻辑,以及最常用到的结构化数据及其运算,包括大数据处理方法和统计图绘制。这些内容涵盖了常规程序设计的方方面面,用于应对 ..
-
12.4 图例 我们一直没有解释这些柱子和点的颜色是怎么来的。而且成品图中有图例,而自己画的还没有,这东西该怎么画出来? 引入逻辑轴可以实现从业务数据到物理位置的映射,我们可以在 (East, ..
-
12.3 更多坐标系 第一节中我们还看到过饼图,但要在坐标系描述清这些圆和扇形的位置似乎太麻烦了。这是怎么画出来的? 除了直角坐标系,SPL 还提供了极坐标系。 极坐标系也需要两个轴(平面图形 ..
-
12.2 坐标系 要画图,就要先建立坐标系的概念。我们在中学都学过一点平面解析几何和直角坐标系的知识,知道平面上的点就都可以用坐标来表示。计算机绘图也是这样,通常会使用直角坐标系来确定位置。 ..
-
12.1 画布与图元 程序语言不仅能帮我们做数据处理,还能画图。 先看个简单例子 A B 1 [10,20,40,30,50] [East,North,West,South,Center] 2 ..
-
11.1 大游标 我们还不会做大数据的排序。 排序运算很不一样,它的计算结果和源数据一样大,如果源数据在内存中装不下,结果必然也装不下,但它又不像 select、new 这些,可以一边遍历一边 ..
-
11.3 有序游标 我们来看游标上的 group 函数。 前面说过,对于游标,我们不能把 group 后的分组子集都保持在内存中继续计算,而放在外存中又会非常麻烦并严重影响性能,经常得不偿失。 ..
-
[链接]11.2 游标上的函数 仅是数数量,SPL 还有个 skip 函数。 A 1 =file('data.txt').cursor@t() 2 =A1.skip() skip 本意是跳过若 ..