- KADB 产品介绍
金仓分析型数据库系统KingbaseAnalyticsDB(以下简称为 KADB)是北京人大金仓信息技术股份有限公司(以下简称为人大金仓)推出的MPP数据库产品。
产品应大数据时代海量数据分析处理的需求,采用shared-nothing分布式架构,具有高性能,高扩展性能力,承载了人大金仓在大规模并行计算和数据库管理领域最新的研发成果,它定位于数据分析类应用市场,可以处理TB-PB级别的数据,并能集成多种异构数据源进行数据挖掘和分析。在处理复杂查询,如:多表连接、聚合等,也体现出了很好的性能。适用于数据仓库、决策支持、高级分析等分析类应用场景。
- 产品架构
KADB的数据库服务器部分采用MPP+无共享式的分布式架构。集群组件包括集群中包括主控(Master)节点以及计算(Segment)节点。
主控(Master)节负责接收应用连接、为应用的请求生成执行计划并将计划分派给计算(Segment)节点执行并将执行结果汇总返回给应用。
计算(Segment)节点是独立的数据存储和查询执行引擎,用户数据以分片的方式存储在计算(Segment)节点上。计算(Segment)节点会执行主控节点分派的计算任务和将本节点的数据分发给需要数据的其他计算节点。
- 产品特点
KADB产品具备以下技术特点:
- LOW TCO
产品使用通用硬件,支持X64、ARM、MIPS等架构的物理机、云设备。无需昂贵的磁盘阵列及高性能服务器。
- 高性能数据加工
基于MPP+shared-nothing的分布式架构,所有数据节点能力完全对等,计算和存储能力随主机扩展线性提升,无共享架构支持可扩展至100台主机以上。支持列式存储、高比例压缩减少I/O开销,压缩等级可达到1:20以上,数据在压缩形态下可支持DML操作。
- 灵活的分布和分区方式
支持多种分布和分区方式,用户可按照自身不同的业务场景,灵活的选择相应的分布方式,数据自动根据相应的分布方式分布,无需人工干预。在处理分区表的查询时,优化器可根据查询的过滤条件,只访问这个表中有限的几个分区,减少磁盘IO,提升查询效率。
- 毫秒级交互式查询
支持行存储,支持流水线式执行器,支持btree、bitmap、gist、gin等高效索引,支持固定热数据在内存中,减少磁盘IO开销。在高并发的情况下,亿级别数据等值检索在毫秒级响应。
- 高可靠性
支持海量数据场景下的集群高可用特性。通过基于日志的数据同步方式,保证主控节点和数据节点主备之间的数据一致。如果相关主节点出现故障,备节点自动接替主节点继续提供服务,无需人工干预。同时,通过接口重试和重连的方式解决在主控节点切换过程中连接丢失的问题,实现业务对集群故障切换无感知的效果,当数据库集群整体不可用时,使用接口本地备份数据的方式保证故障时正在插入的数据不丢。
- 标准符合性
支持SQL-92 ANSI/ISO,SQL-99 ANSI/ISO,SQL 2003 ANSI/ISO标准。支持主流的数据库接口,包括 JDBC、ODBC、C API、PYTHON API、ADO.NET等。
- 数据整合
建设数仓的第一步就是考虑如何从源端将多源多类型的数据进行汇总存储,就是所谓的ETL过程。ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI项目重要的一个环节。 在这个环节中要考虑异构数据的集成、集成的工具、集成的时间等因素。KADB 推荐的ETL 工具包括:kettle 、datax 以及数据文件(txt 、cvs )加载
ETL的设计分三部分:数据抽取、数据的清洗转换、数据的加载。数据的抽取是从各个不同的数据源抽取到ODS(Operational Data Store,操作型数据存储)中,这个过程也可以做一些数据的清洗和转换,在抽取的过程中需要挑选不同的抽取方法,尽可能的提高ETL的运行效率。
ETL的实现。一种是借助ETL工具(如Oracle的OWB、SQL Server 2000的DTS、SQL Server2005的SSIS服务、Informatic、kettle、datax、IBM datastage等)实现,一种是采用源端数据落地为文件,文件加载的方式实现,另外一种是编码,使用消息队列的方式。借助工具可以快速的建立起ETL工程,屏蔽了复杂的编码任务,提高了速度,降低了难度。文件加载的方式过程可控,但需要编码和维护。消息队列和编码一样,需要搭建消息队列组件,例如kafka、MQ等,同样也需要相应的维护工作。对于大型的项目,数据类型复杂,数据来源多样,这部分的开发和维护工作量巨大。
- 数据的抽取(Extract)
这一部分要注意下面的因素的不同处理方式,是否采用统一的处理方式,还是针对不同的数据源使用不同的数据抽取方式及每种方式的效率和维护工作量。
1、对于与存放DW的数据库系统相同的数据源处理方法
2、对于与DW数据库系统不同的数据源的处理方法
3、对于文件类型数据源(.txt,.xls)
4、增量更新的问题
对于数据量大的系统,必须考虑增量抽取。一般情况下,业务系统会记录业务发生的时间,我们可以用来做增量的标志,每次抽取之前首先判断ODS中记录最大的时间,然后根据这个时间去业务系统取大于这个时间所有的记录。
二、数据的清洗转换(Cleaning、Transform)
一般情况下,数据仓库分为ODS、DW两部分。通常的做法是从业务系统到ODS做清洗,将脏数据、不符合数据格式规范的数据和不完整数据过滤掉,在从ODS到DW的过程中转换,进行一些业务规则的计算和聚合。
1、 数据清洗
数据清洗的任务是过滤那些不符合要求的数据。不符合要求的数据包括不完整的数据、错误的数据、重复的数据,例如:null 、时间类型不一致,字段类型不一致(时间用date 类型标识还是字符类型表示),空格的处理、文本字段里面换行的处理。
(1)不完整的数据:是否按照规定的数据进行不全或者填入默认数据
(2)错误的数据:这一类错误产生的原因是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期格式不正确、日期越界等。
(3)重复的数据:决定是否和如何去重,去重的动作也可以在加载后执行
2、 数据转换
数据转换的任务主要进行不一致的数据转换、数据粒度的转换,以及一些商务规则的计算。
(1)不一致数据转换:将不同业务系统的相同类型的数据统一,比如同一个供应商在结算系统的编码是XX0001,而在CRM中编码是YY0001,这样在抽取过来之后统一转换成一个编码。
(2)数据粒度的转换
(3)商务规则的计算:不同的企业有不同的业务规则、不同的数据指标,需要在ETL中将这些数据指标进行计算
3、 数据加载
可以使用工具提供的数据加载方式(要注意支持批量加载,kettle有专门的批量加载组件,datax需要手动加入批量加载组件)或者使用KADB提供的高速并行加载工具gpload进行高速批量加载
在数据整合入库这个阶段需要注意数据的治理,源端业务系统多,各个业务系统对数据的定义不一致,数据格式不一致都会造成数据整合的障碍,即使数据入库了,不同业务系统数据的表示方式不一致也会对数仓中的分析造成困难
- KADB 对 GIS 支持
金仓kadb 内置PostGIS 2.4,提供GIS数据类型及常用GIS函数。通过PostGIS插件支持地理数据的存储和分析。
PostGIS是PostgreSQL对象关系数据库系统的扩展,它允许GIS(地理信息系统)对象存储在数据库中。PostGIS包括对基于GiST的R-Tree空间索引的支持,以及GIS对象的分析与处理。
- 数据类型支持
PostGIS支持的GIS对象是OpenGIS联盟(OGC)定义的"简单特征"标准的超集。PostGIS支持OGC"SQL简单功能"规范(SFS)中指定的所有对象和函数。PostGIS扩展了标准,支持嵌入式SRID信息。
OpenGIS规范定义了两种表示空间对象的标准方式:已知文本(WKT)形式和已知二进制(WKB)形式。WKT和WKB都包含有关对象类型和形成对象的坐标的信息。
支持的地理数据类型包括:
- 点
- LINESTRING
- 多边形
- 多点
- 多线串
- 多多边形
- 几何收集
- 函数支持
空间数据库的存在是为了在数据库内执行查询,这通常需要桌面GIS功能。有效地使用PostGIS需要知道哪些空间函数可用,如何在查询中使用它们,并确保有适当的索引来提供良好的性能。
PostGIS提供了这些函数ST_Contains、ST_Crosses、ST_Discjoint、ST_Equals、ST_Intersects、ST_Doverlaps、ST_Touches、ST_Within。它还定义了非标准关系谓词ST_Covers、ST_CoveredBy和ST_ControlsProperly
- 索引支持
空间谓词通常用作SQL WHERE或JOIN子句中的条件。如果空间索引可用,命名的空间谓词会自动使用空间索引,因此也不需要使用边界框运算符&&。
在使用空间条件构建查询时,重要的是确保使用空间索引。为此,必须在WHERE或ON子句中使用索引感知的空间运算符或函数。空间运算符包括基于边界框的运算符(其中最常用的是&&)和最近邻查询中使用的距离运算符(最常见的是<->)。索引感知函数包括大多数命名的空间谓词(如ST_Intersecs)和大多数距离谓词(如ST/DWithin)
- Dataease 工具支持
DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便地与他人分享。
优势:
开源开放:零门槛,线上快速获取和安装;快速获取用户反馈、按月发布新版本;
简单易用:极易上手,通过鼠标点击和拖拽即可完成分析;
全场景支持:多平台安装和多样化嵌入支持;
安全分享:支持多种数据分享方式,确保数据安全。
功能:
图表展示: 支持 PC 端、移动端及大屏展示;
图表制作: 支持丰富的图表类型、支持拖拉拽方式快速制作仪表板或数据大屏;
数据查询:支持基于 Calcite 的跨源数据查询;
数据连接: 支持关系型数据库、数据文件、数据仓库、API 等各种数据源。
数据源支持:
其中,红圈表示Dataease支持KADB作为数据源,但具体的支持程度,还要实际测试验证。
- Kadb 非结构化数据支持
Kadb是一款基于shard-nothing架构的分析型分布数据库软件,区别于nosql类型的分布式数据库,其自身的架构决定对非结构化数据支持能力不如nosql类型数据库。如果业务需要处理非结构化数据,建议和其他nosql数据库或者分布式文件系统搭配使用,借助KADB的跨引擎访问数据的能力,在KADB中存储处理结构化数据和非结构数据在分布式文件系统的地址,在分布式文件系统中存储非结构化数据,利用两者的优势,达到系统的数据存储和查询的要求。