一直以来,我们有一个愿望:

让数据计算变得简单和高效!

  • 可以让你早下班,有时间陪父母、陪孩子、陪女友…;
  • 可以不再费力把计算写成一句以后连自己都看不懂的长SQL;
  • 可以按照自然思维实施算法,分步写出;
  • 可以让算法在一个屏幕之内写出来,而无需上翻下翻。
  • 可以随心所欲设计算法,而不再面对封闭的优化器束手无策;
  • 可以拥有开放的计算能力,不再受限于数据库本身;
  • 可以充分发挥硬件性能,提升资源利用率;
  • 可以随心所欲地扩容;
  • 可以不再为了hadoop而Hadoop。
现在,碰巧我们做了这样一个产品,一起了解一下吧

集算器能带来什么

对于企业

  • 拥有一个高性能计算引擎,可提升报表/BI系统10倍以上查询速度
  • 拥有一个文件系统数据集市,快速建立,节约数据库成本
  • 拥有一个前置计算服务,可辅助快速实现微服务
  • 拥有一个开放灵活的计算体系,可与任意应用结合,易集成,易扩容
  • 拥有一个擅长处理复杂ETL过程的工具,不用再硬编码,省时省力省人工
  • 拥有一个非Hadoop的轻量级大数据平台,缩短建设周期,处理TB级数据分分钟搞定

对于你

  • 拥有一个早下班神器!有时间陪老婆、陪孩子、陪宠物…
  • 获得一项数据分析的新技能。请自行脑补:别人搞不定,你搞的定时,别人的眼神~~
  • 有时间去专注业务,帮助你成为业务和技术双料专家

集算器是什么

SPL

Structured Process Language

面向过程的结构化数据计算语言

DCM

Data Computing Middleware

数据计算中间件

HPC

High Performance Computing

高性能计算

SPL

Structured Process Language

面向过程的结构化数据计算语言

SPL特性

集合化

结构化数据总是批量形式

集合运算库 · lambda语法 · 动态数据结

SQL是集合化的语言

WHERE,ORDER BY,GROUP

INTERSECT,UNION,MINUS

离散性

集合成员可以游离在集合外存在

独立运算或及其它游离成员再组合新集合运算

SQL缺乏离散性

只有单行记录的表,没有游离记录

计算结果总是新产生,和原记录无关

深度集合化

彻底的集合化需要离散性的支持

允许游离成员组成新集合

分组子集 · 非常规聚合 · 主子表

有序性

有序计算是集合化与离散性的结合物

运算不仅与数据本身有关,还和数据所在位置有关

跨行引用 · 有序分组 · 位置利用
SPL举例1(有序分组) 一支股票最长连续上涨了多少天?

SPL代码

  A
1 =股票.sort(交易日).group@i(收盘价<收盘价[-1]).max(~.len())

SQL代码

1 SELECT max(连续日数)-1 FROM
2 (SELECT count(*) 连续日数 FROM
3 (SELECT SUM(涨跌标志) OVER ( ORDER BY 交易日) 不涨日数 FROM
4 ( SELECT 交易日,
5 CASE WHEN 收盘价>LAG(收盘价) OVER( ORDER BY 交易日 THEN 0 ELSE 1 END 涨跌标志
6 FROM 股票 ))
7 GROUP BY 不涨日数)
SPL举例2 找出连续上涨三天的股票

SPL代码

  A
1 =股票.sort(交易日).group(代码)
2 =A1.select((a=0,~.pselect(a=if(收盘价>收盘价[-1],a+1,0):3))>0).(代码)

感受SPL分步骤解题的思路,以及有序运算的效能!

SQL代码

1 WITH A AS
2 (SELECT 代码,交易日, 收盘价-LAG(收盘价) OVER (PARITITION BY 代码 ORDER BY 涨幅) FROM 股票)
3 B AS
4 (SELECT 代码,
5 CASE WHEN 涨幅>0 AND
6 LAG(涨幅) OVER (PARTITION BY 代码 ORDER BY 交易日) >0 AND
7 LAG(涨幅,2) OVER PARTITION BY 代码 ORDER BY 交易日) >0
8 THEN 1 ELSE 0 END 三天连涨标志 FROM A)
9 SELECT distinct 代码 FROM B WHERE 三天连涨标志=1

DCM

Data Computing Middleware

数据计算中间件

DCM的特征和标准

CHEASE
C

兼容性

Compatible
H

热部署

Hot-deploy
E

高性能

Efficient
A

敏捷性

Agile
S

扩展性

Scalable
E

集成性

Embeddable

DCM应用场景

  • 01报表应用数据准备
  • 02BI系统数据引擎
  • 03数据计算前置机
  • 04ETL数据处理
  • 05库外存储过程
  • 06边缘计算服务
  • 07可编程数据网关
  • 08嵌入式数据计算

低耦合

计算逻辑脚本单独维护,方便模块化

集成性

集算器使用JAVA开发,提供标准应用接口可无缝集成到应用中

多样性数据源

直接使用多个数据源混合计算,无需后台先将数据统一(ETL)后再计算

外部数据接口

  • RDB:Oracle,DB2,MS SQL,MySQL,PG,….
  • TXT/CSV,JSON/XML,EXCEL
  • Hadoop:HDFS,HIVE,HBASE
  • MongoDB,REDIS,…
  • HTTP、ALI-OTS
内置接口,即装即用

文件SQL查询

针对MongoDB和文件等使用SQL进行查询

T+0查询

目前T+0在线计算常用方式与存在问题

1) 历史和当期数据同库存储

大量的历史数据会导致高昂的数据库成本(存储成本和性能成本)

2) 历史和当期数据分库存储

需要数据库具有跨库运算能力,但实施复杂度较高,性能较低;当数据库类型不同时难以实现

集算器可以基于多个异构数据库完成报表T+0查询;

还可以将历史数据存放到IO性能更佳的文件系统中采用集群运算获得更高性能和更低成本

数据库解耦

文件系统IO性能高于数据库,还可以使用压缩数据存储、列式存储、内存记录引用,以及分布式集群等获得更高性能,减轻数据库负担

HPC

High Performance Computing

高性能计算

高效算法

软件改变不了硬件的计算性能

但软件可以设计一些高效(低复杂度)算法,降低计算规模,从而提升计算性能

这类方案通常需要定制化,因地制宜,看菜吃饭

集算器使用了诸多高效算法:

  • 分组计算
  • 关联计算
  • 查找定位
  • 遍历技术
  • 游标与管道
  • 并行计算
  • ......

高效算法举例 – 分组计算

了解了计算和数据特征,就可以选用适合的算法,从而获得高性能

集算器性能表现

测试结果(时间单位:秒)
* 数据规模:100亿行;集群数量:4
测试用例 Intel X86芯片 国产飞腾芯片
SPL读文件计算 SPL读数据库计算 数据库中SQL计算 SPL读文件计算 SPL读数据库计算
连接后并集 - 3.8 >1小时 - -
连接后交集 - 3.9 >1小时 - -
多对多连接遍历 69 103 >1小时 93 268
有序分组遍历 100 647 >1小时 102 2037
多步过程计算 272 848 >1小时 377 >1小时
大分组 39 155 2573 56 2493
大表关联分组 111 566 >1小时 178 2106
批量键值查询 15 >1小时 >1小时 15 >1小时

【注】SPL润乾集算器采用的程序设计语言;SQL关系数据库采用的程序设计语言

国产飞腾芯片上运行的润乾集算器可以超越Intel芯片上分布式关系数据库的性能

高性能存储

高性能数据存储

私有数据存储格式,集文件、组表

文件系统存储形式

支持以树状目录方式按业务分类存储数据

集文件

  • 倍增分段方式支持任意数量并行
  • 自有高效压缩编码(减少空间;CPU占用少;安全)
  • 泛型存储,允许集合数据

组表

  • 行列混合存储
  • 有序存储提高压缩率和定位性能
  • 高效智能索引
  • 倍增分段方式支持任意数量并行
  • 主子表合一减少存储与关联
  • 排号键值实现高效定位关联

分布式计算

数据容错和计算容错

提供内外存两种数据容错机制,外存冗余式容错,内存备胎式容错


支持计算容错,节点故障时自动将该节点计算任务迁移掉其他节点继续完成

可控数据分布

用户可根据数据和计算任务的特点灵活定制数据分布及冗余方案,有效减少节点间数据传输量,以获得更高性能

无中心架构,避免单点失效

集群没有永久的中心主控节点,程序员用代码控制参与计算的节点

负载均衡能力

根据每个节点空闲程度(线程数量)决定是否分配任务,实现负担和资源的有效平衡