• 博客(16)
  • 收藏
  • 关注

原创 数据计算中间件技术综述

传统企业大数据架构的问题  上图是大家都很熟悉的基于 Hadoop 体系的开源大数据架构图。在这个架构中,大致可以分成三层。最下一层是数据采集,通常会采用 kafka 或者 Flume 将 web 日志通过消息队列传送到存储层或者计算层。对于数据存储,目前 Apache 社区提供了多种存储引擎的选择,除了传统的 HDFS 文件和 HBase,还提供了 Kudu、ORC、Parquet 等列...

2018-10-29 15:42:26 206

原创 让Birt报表脚本数据源变得既简单又强大

概述:运行在 JVM 上的 SQL 函数和存储过程总所周知,有些数据库没有强大的分析函数(eg. Mysql), 有些数据库没有存储过程(eg. Vertica),当遇到复杂的数据计算,往往只能通过 Python,R 等外部脚本来实现,但这些脚本语言和主流工程语言(Java)集成性不好,如果直接用工程语言实现类似 SQL 函数和存储过程的功能,经常只是针对某个计算需求编写冗长的代码,代码几乎不...

2018-10-29 15:37:00 632

原创 跨库数据表的运算

1.    简单合并(FROM)       所谓跨库数据表,是指逻辑上同一张数据表被分别存储在不同数据库中。其原因有可能是因为数据量太大,放在一个数据库难以处理,也可能在业务上就需要将生产库和历史库分开。而不同的数据库,可能只是部署在不同的机器上的同种数据库,也可能是连类型都不同的数据库系统。       在面对跨库数据表,特别是数据库类型都不相同的情况时,数据库自带的工具往往就力所不及...

2018-10-29 15:11:41 520

原创 百万级分组大报表开发与呈现

在《秒级展现的百万级大清单报表怎么做》中,我们介绍了无论 RDB 还是非 RDB,润乾报表都能够通过异步线程实现秒级海量大清单报表(以下简称:大报表)。实际业务中,除了查询明细,有时还要展现全量汇总数据,或者查询分组明细和计算分组汇总。本文就将介绍这些带有汇总和分组的大报表的开发方法。 带汇总的大报表       在大报表中计算汇总值与常规报表基于报表内数据进行的汇总不同,大报表由于采...

2018-10-29 15:06:15 202

原创 如何处理报表中的舍位平衡

在报表的数据统计中,常常会根据精度呈现或者单位换算等要求,需要对数据执行四舍五入的操作,这种操作称为舍位处理。简单直接的舍位处理有可能会带来隐患,原本平衡的数据关系可能会被打破。 为了保证报表中数据关系的正确,就需要调整舍位之后的数据,使得数据重新变得平衡,这样的调整就叫做舍位平衡。在这里我们就讨论一下如何利用集算器来处理舍位平衡问题。舍位处理往往会采取四舍五入计算,这时就会产生误差,...

2018-10-29 11:58:00 4310 1

原创 如何协助 MySQL 实现 Oracle 高级分析函数

Oracle 支持一些独特的语法和函数,在移植到 MySQL 上时或多或少给程序员造成了困扰,下面我们针对 Oracle 的一些特殊用法举例并讲解如何用集算器来完成同样功能。这些方法当然也不限于针对 MySQL,对于所有其它数据库也能支持。 1、         递归语句a)     select employee_id,first_name,last_name,manager_id...

2018-10-29 11:49:12 179

原创 多层科目任意组合汇总报表的性能优化 (下)

2.4 有序计算方案在充分利用遍历一次的特点进行优化后,可能我们还会觉得计算性能有点慢,希望有进一步优化的空间。由于每次只需要取出总数据量的很小一部分 (100 个指标涉及的所有科目号大概几百个,即在几百万记录中取几百条),这时我们通常能想到的是:如果能利用数据有序直接进行有序查找(若源数据有序,可以快速定位到这几百条记录,不需要遍历几百万记录甚至更多的数据),将能够获得更好的查询效率。我...

2018-10-29 11:40:15 377

原创 多层科目任意组合汇总报表的性能优化 (上)

一 问题背景我们先来看一张资产负债表:这是一个典型的中国式复杂报表格式,其复杂并不在于布局,而在于其中“期末余额”的每个单元格都是一个需要独立计算的指标,互相之间几乎没有关系,事实上就是一个各种指标的汇总清单,而这些指标往往会有上百个之多。在源数据表结构中,有一个字段称为科目,其长度总是固定的 10 位,如:1234567890,如下图:科目字段的值实际上是一个分层的代码,...

2018-10-29 11:26:00 6329

原创 数据分析用它就够了 | 37 个场景你要用集算器

【报表查询性能】1. 数据量大或并发多导致的查询性能低下,BI 界面拖拽响应很慢通过集算器编写更为简单高效的算法加速计算进程,提升查询性能 采用集算器可控存储和索引机制,为 BI(CUBE)提供高速的数据存储2.T+0 实时全量查询报表涉及数据量大,影响生产系统运行,而分库后又难以实施跨库混合运算将冷热数据分离,仅将当期热数据存放在数据库中,冷数据存储在文件系统或数据库中,通过集算...

2018-10-29 10:56:52 715

原创 多行日志合并处理的内外存方法

上一讲中,我们介绍了如何用SPL将一行日志结构化为一条记录,今天则要说一下多行日志对应一条记录的情况,我们称之为不定行日志。 事实上,集算器自己的输出日志就是这种不定行日志,我们来看一下集算器节点机下的一个日志文件rqlog. log,同样摘录两段日志:[2018-05-14 09:20:20]DEBUG: 临时文件过期时间为:12小时。 [2018-05-14 09:20...

2018-10-15 15:28:36 713

原创 优化Join运算的系列方法(3)

5 综合案例实际业务中,多表关联运算十分常见,外键表、同维表、主子表这几种关联类型可能会混合出现。下面我们来看一个综合案例。5.1 表结构和查询目标某电商平台中和订单编号这个字段相关的有6个表,主要表结构如下: 订单表 订单明细表 订单优惠表 订单发货表 订单支付表 ...

2018-10-15 15:24:00 176

原创 优化 Join 运算的系列方法(2)

3 半内存时的外键表外键指针化的前提是事实表和维表都可以装入内存,但实际业务中涉及的数据量可能很大,那就不能采用这种方法了。3.1 维表内存化如果只是事实表很大,而维表仍然可以全部装入内存,那么仍然可以采用上面的外键指针化方法处理,只要修改一下对事实表的访问,使用游标的方式取从集文件里分批取数进行处理即可。不过因为这种指针是在游标取数时才临时建立的,所以就不象全内存时那样可以复用已经建...

2018-10-15 15:16:54 175

原创 优化 Join 运算的系列方法(1)

JOIN是关系数据库中常用运算,用于把多个表进行关联,关联条件一般是判断某个关联字段的值是否相等。随着关联表的增多或者关联条件越来越复杂,无论理解查询含义、实现查询语句,还是在查询的性能方面,可以说JOIN都是最具挑战的SQL运算,没有之一。 特别是JOIN的性能,一直是个老大难问题。下面我们将基于数据计算中间件(DCM)——集算器,来提供一些提升运算性能的方法。当然,我们不是介绍如何...

2018-10-15 15:14:29 208

原创 10 行代码,集算器实现写诗机器人

集算器不仅有大数据计算,还有诗和远方。最近看到不少写诗机器人的新闻,于是尝试用集算器简单地实现一个。这个实现真的很简单,简单到只有10几行代码,请看实现步骤: 1.下载字典和诗词从网上找一个用于分词的字典文件,里面记录着每个中文词汇的词性。我从GitHub上找了一个,稍微处理之后保存到集文件dict.btx。下载宋词三百首的txt文件,去掉空格和换行,以及其它文字以外的字符,得到一...

2018-10-15 15:12:44 884 1

原创 轻松应对多层JSON数据计算与入库

JSON作为一种轻量级的数据交换格式,因其易于读写和交互的特点,已逐渐成为主流的数据类型之一。常见的编程语言大多都对 JSON 的读取与解析提供了接口,但是接下来如何把多层 JSON 数据经过筛选、计算并展开成二维数据,就需要开发人员去头疼了。本文就为大家分享一下如何利用集算器 SPL(结构化处理语言)轻松解决 JSON 数据解析入库的问题。JSON 数据文件导入与解析根据 JSON 数据...

2018-10-15 15:09:57 1130

原创 超大数据下大批量随机键值的查询优化方案

一、问题描述 键值查询是很常见的查询场景,在数据表上建有索引后,即使表中数据记录数巨大(几亿甚至几十亿行),用键值查询出单条记录也会很快,因为建立索引后的复杂度只有 logN(以 2 为底)次, 10 亿行数据也只要比较 30 次(10 亿约等于 2^30),在现代计算机上也只需要数十毫秒而已。不过,如果需要查询的键值很多,比如多达几千甚至几万的时候,如果每次都独立查找,那读取和比较也...

2018-10-15 15:05:23 697

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除