in-database处理与in-memory分析
日常生活变得越好越数字化,这导致了数据的空前增长。这种数据爆炸是由于手机和物联网的广泛使用使用所驱动的。越来越多的设备正连接到Internet中。创业者、风险投资者、计算界的拥护者如CISCO、GooGle和Microsoft等公司越来越多的时间和资源投入到这一领域。
分析
分析工作负载与事务工作负载的对比
事务处理的特征:
此类工作负载的特征包括大量短的、离散的、原子的、简单的事务,对数据的更新十分的频繁,而且数据通常是最新的、详细的、关系型的、响应时间一般在几毫秒的量级。在线事务处理(OLTP)系统的重点是:
- 在多用户环境中维护数据的完整性
- 高吞吐量(每秒事务数)
这些工作负载对应着日常操作、批处理、分析工作负载。
分析处理的特性
分析的特征1是较少的用户(业务分析师,CEO)提交较少的请求,但是这些请求是较长的、复杂的、资源密集型的。响应时间通常在几十到几百秒的量级。分析工作负载的其他主要特征包括高数据量、面向集合的块操作、数据有临时或中间阶段、不经常更新的、历史的/多维的/集成的数据。
论文《OLTP through the Looking Glass, and What We Found There》的论文,揭示了限制传统RDBMS产品的潜在开销。导致处理开销的传统RDBMS产品的特性如下:
- 加锁:为了记录的一致性,会试图给它进行修改的特定事物给它上锁。但是对于一致性不太重要的分析工作负载,会增加一些开销。
- 缓冲管理:在传统RDBMS中,在页面中定位记录以及确定字段边界是开销大的操作。
- 锁存(latching):在多线程的环境中,对共享数据的更新必须非常小心,但是增加了潜在的开销。
- 索引管理:为了增强记录搜索的相对性能,创建了索引。要求大量的CPU和I/O资源。
- 预写式日志:为了维护数据库中的数据的持久性,传统DBMS中所有内容都是写入两次,一次是对数据库写入、一次是对日志的写入。
工作负载的演化
进入商业智能时代,重点是理解重要的商业线性,并且为管理者提供基于事实的理解,以便做出决策。多数的分析是历史数据上完成的,用户可以从慢速的分析中抽离出来,,方法是实现在线分析处理系统(OLAP)。
进入大数据时代,大量的数据无法通过单台服务器存储和分析,因此创建了类似Hadoop、Spark等系统,分布式系统间的并行的快速批处理得到了管理。为了应对新创建的非结构化数据,出现了NoSQL数据库,例如MongoDB、Redis、DynameDB、Raik、Neo4j等。
传统分析平台
在基于关系型数据仓库的传统分析平台2中,数据首先会被复制到分析服务器中,然后会在该服务器上进行模型开发或通过多维数据集的创建来取代数据仓库。这些服务器通常从非关系型数据集市结构来存储数据,而在数据仓库之外的分布式服务上管理。出现的问题
- 从关系型数据仓库中提取数据对提高性能带来了负面的影响
- 从数据仓库和数据集市中复制导数据导致基础设施成本的增加和硬件利用率较低
- 由于有多个不可控的副本,要求安全性更高
- 管理和开发程序提取和执行计算的高级人力资源成本会更高。
in-database分析
in-database处理技术并不是有大数据分分析引入的新的开发技术,而是为了解决市场分析中的很多挑战,Teradata引入的in-database处理的概念。由于大量信息分散在独立的数据集中,分析师需要收集数据并操作和分析它们。
在数据库中,分析通常以用户定义函数、一组数据的库和分析函数的形式提供,以便访问数据库中国的数据,或者来自分布式文件系统例如:Hadoop HDFS的数据,他们直接使用并行处理能力。
in-database技术着重于集成和融合分析系统级数据仓库。传统数据仓库系统需要将信息导入到分析程序中,对数据运行复杂计算。in-database处理则主张将数据处理下推到数据所在位置,而不是复制到中央系统中并行处理。主要的供应商有:Vetica、Teradata、Oracle、ExaSol、Accel等。
in-database技术诞生是为了解决传统分析处理的局限,将数据从企业仓库中加载到分析引擎中(SAS、SPSS等)然后将分析结果发送给可视化工具(Tebleau、MicroStrategy等)供用户使用进行可视化分析。从in-database处理收益的主要处理形式之一就是预测分析,用来使用存储的数据找出模型,或者在预测的特定场景下将来可能会发生的事情。分析计算经常会涉及大量数据记录和多个数据字段,例如关键绩效指标(KPI)计算、数据聚合、模型评分、预测分析、时空分析和其他功能。
Teradata与SAS in-database分析
将SAS作为in-database功能集成到Teradata的最简单的方式就是将SAS操作转换为Teradata SQL。
这些复杂函数的实例之一就是评分算法,这些函数会被转换为优化过的C代码,这些函数会完全并行分布到Teradata RDBMS大规模并行处理架构中。
适合in-databae的分析问题:
- 数据密集型计算:包括简单计算和复杂计算
- 周期性的计算、反复处理相同的数据。小数据反复移动的成本和大数据较低频率移动的成本类似。
- 跨功能分析
架构
构成一个好的分析平台对一些架构选择是:SQL支持、高数据加载吞吐量、低延迟,还包括:
- 集成分析:例如机器学习、数据挖掘、数据评分、优化技术、统计技术等。
- 功能的可扩展性:通过用户定义函数,MapReduce、MS SQL服务器或Oracle服务器中的存储过程进行扩展。
- 扫描友好性和分区
- 通过无共享脚骨提供内存的并行性,利用处理单元中的多个内核,有些供应闪提供使用地址数据传输协议。
- 在处理很多分析工作负载时,列式数据存储是有力的,因为多分析处理仅要求对记录中的某些列进行处理
- 数据压缩能够有效利用存储。
- 一些其他架构的特性包括:查询流水、结果集重用、查询优化、批量写入、只追加更新、无锁并发模型、并行数据加载
目标
- 更少的处理时间
- 高效的资源利用
- 更好的网路负载
- 实时分析
优点和局限
主要的优点就是减少数据访问和数据移动低延迟以及执行时间。潜在的局限是提供的处理能力根据供应商的不同有差别。
代表性的系统
Teradata数据库
Teradata数据库遵从具有大规模并行处理能力(MPP)的无共享架构(每个服务器节点具有内存、处理和网络)。
解析引擎(PE)
这个组件的主要工作是控制用户会话并检查权限,编译并把将要执行的指令发送到AMP
PE跟踪关于表模式,记录数量、AMP活动数的一切。当进行计划时,PE还会检查用户的访问权限。
访问模块处理器(AMP)
访问模块处理器是存储和获取数据的组件。AMP接收来自PE的指令,而且AMP被设计为并行工作。数据被分割到AMP中,使得工作内部进行换分称为可能。每个AMP值负责它自己的数据行,而且不能够相互访问数据行。
消息传递层(BYNET)
它是一种高速、双冗余、多路径通道。BYNET的另一个的能力就是当系统中的节点数量增加时,带宽也随着增加。这是通过使用虚拟电路来实现的,双冗余有助于速度、带宽以及可用性。
MonetDB
MonetDB3是一个开源的、面向列的DBMS。被设计为向大数据库的复杂查询提供高性能。这种数据库支持垂直分片的数据分布,加速查询执行的CPU调校、自动及自适应索引,还可以使用了局部索引和数据排序。这种数据库兼容ACID,使用Binary Association Table来保存数据。
MonetDB以两种方式提供in-database能力:通过C语言预定义函数和通过C语言自定义函数。这些UDF不是运行在沙盒中,而是运行在系统空间里。
Fuzzy Logic的DB Lytix
Fuzzy Logic的DB Lytix是统计和分析函数库,可用于预测分析和各种其他分析中。在一个数据库内核中嵌入的有C/C++函数。
in-memory分析
in-memory系统以随机方式促进了快速数据查询,与基于磁盘的系统不同。那些系统中的即时查询是通过顺序磁盘读取以及DBMS中的一些操纵来模拟的。通过in-memory方式,从多个数据源对详细数据进行加载变成可能。
架构
in-memory OLAP也以类似的方式工作,数据首先加载到内存中,然后根据要求以更快的响应时间进行复杂计算,并且支持假设分析。
in-memory可视化分析集成了高性能可视化和in-memory数据库,为用户提供了快速查询数据和报表可视化的能力,构成交互式分析系统。
分析的目标是:
- 满足实时分析的需求
- 执行更快的分析
优点和局限
优点:
- 计算引擎仅返回数据在共享内存中保存位置,而不是移动数据
- 改进决策并提供易用性,使得业务用户能够不需要技术专长即可生成他们自己的报表
- 消除重复工作、减轻数据库的负担
- 提供更好的性能和准备
代表性的系统
SAP HANA设备
SAP HANA4是一种in-memory数据库。它是同时处理事务型和分析型工作负载的数据库。数据既可以按照列式表、也可以按照行式表来存储,使得它能够高效处理以上两种类型的工作负载。SAP HANA 以压缩格式保存数据,从而增加了数据库能够保存的数据数量。数据加载数据更改时通过增量来完成的。可以对数据进行分区,以增加性能及并行能力。
VoltDB
VoltDB5是一种NewSQL数据库,用于开发数据密集型应用程序,作用于流数据,快速数据和实时分析。能够同我们熟悉的工具一同使用,例如SQL和Json。VoltDB是持久的,可以从硬件和网络故障中透明地恢复。
用于DB2的BLU
具有BLU Accelerationd的IBM DB2利用动态in-memory列式存储技术。BLU主要聚焦于两点,使用动态管理技术确保事务、分析和其他工作负载之间的公平的内存资源。
Kognitio分析平台
Kognitio6是一款in-memory分析平台。具有高性能、可扩展、为分析进行优化等优点。采用了大规模并行处理架构、能够将廉价、商用服务器阵列聚合为一个强大的分析引擎,具有大量处理能力。
分析设备
Oracle Exalytics
Oracle Exalytics来自Oracle 的in-memory分析设备。包含Oracle的TimesTen in-memory数据库以及Oracle Business Intelligence基础套件。这个系统具有数TB的内存以及使用SAN扩展的基于内存的存储。系统可用于Oracle Enterprise Linux和Oracle Solaris上。
IBM Netezza
IBM Netezza7将处理、存储、数据库集成到一个紧凑的系统中,且该系统为分析处理和可扩展性进行优化。Netezza遵从的一些原则包括:将处理带到数据附近、大规模并行架构、灵活配置和可扩展性。Netezza是一个数据仓库设备,利用非对称大规模处理(AMPP)架构。
Netezza四个组件
Netezza Hosts
前端的SMP主机,运行高新更Linux采用active-passive配置以具备高可用性。处于主动状态的主机同外部应用程序和工具连接。例如BI、仪表盘等。主机接收来自客户端的SQL查询,这些查询被编译为可行的代码片段,被称为snippet。
FPGA
FPGA在减少读取数据方面有着重要的作用,他们将数据流水线不希望出现的数据尽可能早地过滤掉。这些FPGA都有嵌入式引擎,用来对数据流数据进行过滤和数据转换功能。这些引擎被称为FAST引擎。这些引擎可以动态配置,使得人们可以通过软件来修改或扩展他们。
snippet Blade(S-Blade)
每个S-Blade是一个独立的服务器接地那,包含数GB的RAM、高性能多核CPU、多引擎FPGA。
磁盘机柜
包含高性能、高密度的磁盘。每个磁盘仅包含数据库表中的一部分。
-
Chaudhuri S, Dayal U. An overview of data warehousing and OLAP technology[J]. international conference on management of data, 1997, 26(1): 65-74. ↩︎
-
Inmon B , Inmon W H , Inmon W H , et al. Building the Data Warehouse[M]. John Wiley & Sons, Inc. 2002. ↩︎
-
https://www.monetdb.org/ ↩︎
-
https://www.sap.com/cmp/dg/crm-ya18-bdm-ddi-buh/index.html ↩︎
-
https://www.voltdb.com/china/ ↩︎
-
https://kognitio.com/ ↩︎
-
https://www.ibm.com/products/software ↩︎