-
在结构化数据计算领域,SQL 现在还是应用最广泛的工作语言,不仅被所有关系数据库采用,许多新进的大数据平台也将实现 SQL 作为目标。 对于某种计算技术,人们通常会关心两个效率。一是运算的描述 ..
-
问题描述 在 A 电商公司,漏斗转化率分析是常用且重要的统计需求。 用户使用智能设备购物时,系统会建立连接形成会话 session。每个会话又包含很多个操作事件 event,比如:访问网站,浏 ..
-
碰到过这么一个案例,情况可以简化总结成这样:数据库中有表 T,其中有两个重要的字段 a 和 b,a 是一个时间戳,精确到秒;b 是用户号;其它字段用来表示用户 b 在时刻 a 发生的事件属性。 ..
-
减少外存(硬盘)访问量一直是提高大数据计算性能的永恒话题,我们也讨论过列存、压缩等直接减少访问量甚至存储量的手段。除了这些存储层面的方法外,在算法和计算实现环节,也可以想办法减少外存的访问量。 ..
-
过滤是个很基本的运算,就是从一个集合中找出满足某些条件的成员构成的子集。SQL 中有 WHERE 和 HAVING 来实现过滤运算(严格地说,困为 SQL 缺乏离散性,WHERE 的运算结果是 ..
-
我们讨论过的常规聚合运算如 SUM/COUNT 和非常规聚合运算如 maxp/top,都是事先设计好的聚合函数。但如果我们想实现一个以前没有定义过的运算怎么办?比如想做连乘运算,显然这也算是一 ..
-
标准 SQL 中提供了五种最常用的聚合运算:SUM/COUNT/AVG/MIN/MAX。观察这几个运算,我们发现它们都可以看成是一个以集合为参数返回单值的函数,我们就先把这个共同点理解为聚合运 ..
-
我们在讨论有序分组时只研究了待分组集合的成员次序对分组运算可能的影响,但既然要考虑集合的有序性,那么结果集也是个集合,它的成员次序是不是也有业务意义呢? 确实有意义,不过重要程度不如原集的次序 ..
-
我们知道,SQL 延用了数学上的无序集合概念,所以 SQL 的分组并不关注待分组集合中成员的次序。我们前面讨论等值分组和非等值分组的时候,也都没有关注过这个问题,分组规则都是建立在成员取值本身 ..
-
有过多年应用开发经验的同学大都会体验过数据库 IO 比较慢的情况,但到底会慢到什么程度,特别是和其它读写数据的手段相比的差距,可能很多人还没有感性认识。 Java 是普遍采用的应用开发技术,我 ..
-
我们研究过分组运算的实质,即将一个集合按某种规则拆分成若干子集。不过,讨论重点在于还原分组运算的步骤,并没有讨论拆分规则,例子中都是用某些分组键值来定义拆分规则,也就是 SQL 中使用的方法。 ..
-
分组是数据库中的常见运算,但未必所有人都能深刻地理解它。 分组运算的实质是将一个集合按照某种规则拆分成若干个子集,也就是说,返回值应当是一个由集合构成的集合,但人们一般并不太关心构成这个集合的 ..
-
我们讲过硬盘的性能特征,主要是针对硬件和操作系统层面进行分析的,现在我们来考虑应用软件层面的差异。 理论上讲,软件可以穿过操作系统直接读取磁盘,但实在太过于麻烦且丧失兼容性,所以几乎不会实践机 ..
-
我们继续讨论集合运算中的 Lamba 语法,引入和次序相关的运算能力。 SQL 延用了数学上的无序集合概念,遍历集合时也不关注次序。但计算机只能一步步地执行,循环时总会有个次序,充分利用这个次 ..
-
拥有集合化特性的程序语言能让我们用很少的语句写出针对集合的复杂运算,其中处于核心地位的是 Lambda 语法设计得是否方便,直接决定了程序语言的描述效率。 我们来从简单到复杂考查集合运算的可能 ..
-
列存是常见的数据存储技术,说到列存常常就意味着高性能,现代分析型数据库基本都会把列存作为标配, 列存的基本原理是减少硬盘的读取量。一个数据表有多个列,但运算可能只会用到其中少数几列,采用列存时 ..
-
编程,一度被认为和驾驶一样是一项现代社会的基本技能,非专业人员也该有所掌握,中小学也在教。但实际上,它的普及程度远比驾驶差,掌握这个技能的人很少,在学校学过的知识,因为工作中用不上也都忘掉了。 ..
-
问题描述 发电设备中会放置传感器(DCS)来采集数据以监控设备运转的状况,某集团设计的电力监控统计系统,需要按固定频率实时采集多个传感器(以下称为测点)上测量的数据后保存,然后提供按任意时间区 ..
-
11.1 大数据和游标 1. 用程序生成一份大文件,形如下图。要求order_id有序且唯一,user_id随机且有重复,dt有序,due_amt随机,user_scoer取0-1之间的随机值 ..
-
标题党一下,Python 程序员成千上万,当然有很多人学得会。这里说的“你”,是指职场中的非专业人员。 职场人员一般会用 Excel 处理数据,但也会有很多无助的情况,比如复杂计算、重复计算、 ..
-
esProc 弹性计算是运行在局域网或私有云的企业内通用计算软件,分成三个部分,服务端由 QVA 和 QVM 构成,应用端由应用程序(以下简称 APP)和 QVS 组成,存储端是 NFS、HD ..
-
我们讨论过代码编写的难和繁的原理问题,现在关注性能问题,运行速度当然是非常重要的事情。 我们知道,软件不能改变硬件的性能,CPU 和硬盘该多快就多快。不过,我们可以设计出低复杂度的算法,也就是 ..
-
索引是经常用到的技术,但有些程序员对索引的原理了解不深,发现数据查询性能有问题立刻想起建索引,当然经常也没啥效果,反而消耗资源。那么到底什么时候该用索引以及该怎么用?我们来分析索引清理背后的技 ..
-
[链接]离散性讨论 [链接] [链接] [链接] [链接] [链接] [链接] [链接] [链接] [链接] [链接] [链接] [链接] [链接] 我们讨论了 SQL 对 Java 的优势, ..
-
我们知道内存比硬盘要快得多,大概能快出一两个数量级(当然价钱也贵得多)。不过,硬盘的问题并不只是速度慢。 硬盘的一个基本特征是不适合做频繁小量读取。所谓频繁小量读取,就每次读取的数据量很小,但 ..