图书 •
867 引用 •
254 回帖 •
4 关注
博客
关注
-
[链接] [链接]6.2 临时地址化 地址是个内存概念,外键地址化只能在全内存时实施,但大数据常常需要外存计算。 我们先来考虑事实表大而维表仍然较小的情况,这也是现实中比较常见的情况。事实表用 ..
-
[链接] [链接]6.1 外键地址化 我们简单回顾一下外键关联的概念:数据表 T 中字段 F 和数据表 D 的主键 K 关联时,D 称为 T 的外键表,又称维表,T 称为事实表,字段 F 称为 ..
-
[链接] [链接]5.8 索引排序 我们知道索引的本质就是排序,如果我们想把数据表按被查找键排序,是不是可以利用已经建好的索引呢? 很遗憾,大部分情况没有效果。 如果原始数据表并没有按被查找键 ..
-
[链接] [链接]5.7 序号分组与可控分段 SPL 有个内存的序号分组汇总函数 groups@n,对于外存游标也有同样的函数。 如果能够把分组键值简单地计算成序号,那么分组时就不必再计算哈希 ..
-
[链接] [链接]5.6 后半序分组 我们处理了“前半有序”的情况,那么“后半有序”是不是也会可利用的地方? 还是这个帐户交易表,在每个帐户下的数据是按日期排序的,现在我们想统计所有日期下的交 ..
-
[链接] [链接]5.5 前半序分组 还是以帐户、日期的帐户交易表,现在我们想把它换一种次序,将帐户内的交易记录改成按发生日的星期几排序,即把所有周日的交易都排到一起、然后再排周一的、周二、… ..
-
[链接] [链接]5.4 程序游标 继续帐户交易表,现在我们希望找出每月内连续 n 天都有交易的那些交易记录,然后按发生日期的星期几统计交易额度。 后半任务很简单,就是个普通的分组汇总。但找出 ..
-
[链接] [链接]5.3 有序分组子集 数据表对分组键有序时,可以依次将分组子集用游标方式读出,利用这一点,我们可以做一些复杂的运算。 比如一年的帐户交易表,我们想统计有多少帐户在连续 n 天 ..
-
[链接] [链接]5.1 有序分组汇总 如果数据表对分组键有序,可以实施有序分组算法。 有序分组的过程很简单,遍历时只要将当前记录和最后一个分组子集对比键值,如果相同,则将这条记录继续分到这个 ..
-
[链接] [链接]4.8 冗余分组键 有时为了方便处理,数据表中会有些冗余的字段。比如订单表里可能有客户编号同时也有客户名称,而客户名称完全可以由客户编号确定,客户名称就是冗余的信息。这种数据 ..
-
[链接] [链接]4.5 多路游标 使用 fork 可以灵活地实现并行计算,但代码仍然略显繁琐,特别是对于很常见的单数据表的统计,而且还要注意再次汇总线程返回结果时可能要改变函数(从 coun ..
-
[链接] [链接]4.4 数据库并行加载 有时我们需要从数据库中读出数据进行复杂运算,常常会发现数据库负载并不重的时候,读出数据的时间却很长。这主要是由于数据库的访问接口性能较差导致的,使用并 ..
-
[链接] [链接]4.2 遍历复用 我们知道,外存数据表的遍历运算中读取时间占比非常大,但读取又不可以避免,所以我们会希望一次读取能做尽量多的事情,也就是尽量做到能复用遍历过程中读出来的数据。 ..
-
[链接] [链接]4.1 游标过滤 使用索引或利用有序可以高速查找记录,但建立和维护索引以及保持数据有序的成本并不低,我们不可能预先为所有查询条件建立索引,必须时还要使用顺序查找,也就是遍历。 ..
-
http://c.raqsoft.com.cn/article/1615504551386 3.9 全文检索 在结构化数据查询时常常会查找某字符串字段是否含有某确定子串的记录。如果是形如 li ..
-
[链接] [链接]3.8 多索引归并 我们在前几节解释过多个索引不能同时使用,对两个字段分别建立索引后,在针对这两上字段的联合条件查询也只能使用其中一个索引,而另一个字段的条件仍然要遍历。 其 ..
-
[链接] [链接]3.7 返回集合的查找 有时需要针对一个查找值可能查找多个目标值,比如通过用户 ID 查找出该用户的交易记录。 在用户 ID 上建立索引可以避免全遍历而提高查找性能,但仍然不 ..
-
http://c.raqsoft.com.cn/article/1615244188566 3.6 批量查找 前面讨论的查找主要是单个查找值,如果同时有多个查找值,是否只要简单重复多次就可以了 ..
-
[链接] [链接]3.5 索引预加载 我们知道,大数据的索引经常也很大,需要建立多级索引,每次查找时都要一级一级地读入,才能最终定位到目标值。因为外存访问的复杂度很高,即使有操作系统的缓存能避 ..
-
[链接] [链接]3.4 行存和带值索引 上一章讲过,列式存储是提高性能的常用手段。然而,对于大多数查找任务来讲,列存却会导致更差的性能。 即使已经有序存储了,通常的列存也可以认为就无法执行不 ..
-
[链接] [链接]3.3 排序索引 外存中更常见的是排序索引。 哈希索引只能针对查找值做等值查找,即判断条件是相等,而不能做区间查找,即判断条件是被查找键在一个指定区间。而且,哈希索引在运气不 ..
-
[链接] [链接]3.2 哈希索引 使用二分法去查找时,还是需要多次读取原文件才能定位到目标值,而且过程中还有不少读取是多余的。如果我们有办法高效地获得目标值的物理位置,那就可以直接读出目标值 ..
-
[链接] [链接]2.4 组表与列存 文本文件和集文件都是依次存入每条记录,这种方式称为行式存储(简称行存)。 大多数运算都不会使用到数据表的所有字段,由于硬盘必须成块的读取,这导致在行存方式 ..
-
[链接] [链接]2.3 数据类型 使用二进制文件后,我们可以采用更优化的编码方案。 一个整数在计算机可能占 4 字节或 8 字节,原则上存储到文件中也是这个大小。但是,其实有相当一部分整数并 ..
-
[链接] [链接]2.1 文本文件分段 性能问题常常都和数据量大相关,而大数据通常不能在内存中放下,我们要考虑外存数据的运算方案。数据库可能是最常见的外存数据存储方案,但我们无法在数据库中实施 ..