图书 •
828 引用 •
203 回帖 •
3 关注
博客
关注
-
[链接] [链接]8.2 时间段预汇总 对于时间段上的统计,使用一些技巧后就可以利用预汇总数据了。 假如原始数据表是按日存储的数据,那么我们可以按月做好预预汇总数据,当需要针对一个时间段统计时 ..
-
[链接] [链接]8.1 部分预汇总 多维分析后台的运算本质上就是个分组汇总,前面讲过的分组方法都可以利用。但当数据量非常大的时候,想做到即时响应也不是很容易的事。 预汇总是个容易想到的方法, ..
-
[链接] [链接]7.4 附表 某个事实表可能随意和多个维表建立外键关联,甚至和同一个维表建立多个外键关联,但基于双方主键建立的同维关联和主子关联就没有这么随意。 同维关联是一种等价关系(A ..
-
[链接] [链接]7.3 关联定位 前两节讨论的都是全表遍历。现实的任务中常常会还会关联表做条件过滤,当然我们可以在关联之后再做过滤,但这样会将所有关联表都遍历一次,表很大时就会耗时很多。有时 ..
-
[链接] [链接]6.9 单边分堆 我们最后来处理维表和事实表都很大的情况,通常事实表会更大。这种情况无论如何都很难高速计算出来,但仍然要想办法尽量做得快。 是否可以把事实表用游标读出来,分批 ..
-
[链接] [链接]6.8 大维表查找 遍历事实表时用外键查找维表记录,每次只取一条记录;而事实表通常不会按外键字段有序(事实表可能有多个外键,对某一个外键有序就不会对另一个有序,大部分情况是对 ..
-
[链接] [链接]6.7 对位序列 对于已经序号化的外键,我们还可以使用对位序列来处理维表上的过滤。 A 1 =file('product.btx').import@b() 2 =file(' ..
-
[链接] [链接]6.6 索引复用 有时候维表会被先过滤再做关联。比如我们只关心某个产地的产品: A 1 =file('product.btx').import@b().keys@i(id) ..
-
[链接] [链接]6.5 内连接语法 我们知道,事实表的外键不一定总有对应的维表记录,有可能存在无效值。一种很常见的动作是:如果发现外键没有对应的维表记录,则删除这条事实表记录;如果有,则做地 ..
-
[链接] [链接]6.3 外键序号化 从事实表的外键关联维表,本质上是一个查找动作。在事实表较大时无法做到预关联了,如果有办法能提高查找速度那也可以获得好的关联性能。 维表上通常已经建立有哈希 ..
-
[链接] [链接]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 ..