OLAP
Kylin
Apache Kylin™是一个开源的、分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区。它能在亚秒内查询巨大的表。
在OLAP(在线分析处理)和数据仓库的上下文中,星型模型(Star Schema)和雪花模型(Snowflake Schema)是两种常见的数据库模式设计,它们用于组织数据表和对数据进行多维分析。
1. **星型模型(Star Schema)**:
星型模型的名称来源于其最终图形结构,以一张中央的事实表为中心,周围是多个维度表。每个维度表直接与事实表连接。
- **事实表**: 事实表位于模型的中心,包含度量的数据,例如销售金额、交易数量等。这些数据通常是数值型的,并且可以按不同的维度进行聚合。
- **维度表**: 维度表环绕在事实表的四周,存储维度数据,如时间、地点、产品等。维度表包含了辅助事实表度量进行多维分析的属性。
星型模型的特点是查询性能较高,结构简单直观,容易理解和使用,但是由于维度表可能存储大量重复数据,所以数据冗余度较高。
2. **雪花模型(Snowflake Schema)**:
雪花模型是星型模型的变体,其核心结构是基于星型模型的,但维度表根据范式化进行了进一步分解,形成一个类似雪花形状的结构。
- **范式化维度表**: 在雪花模型中,维度表被范式化,相同数据项在数据库中只存一份,减少了数据冗余。
- **复杂关系**: 由于维度表可以有自己的维度表,这做成层级式的关系,这可能增加了模型的复杂度和理解难度,并有可能影响查询性能。
雪花模型由于其范式化的特点,减少了数据存储冗余,但同时增加了查询操作时的复杂性,需要更多的表连接,这在某些情况下可能影响查询性能。
Apache Kylin是一个OLAP引擎,支持星型模型和雪花模型,主要是通过Cube的概念预计算了不同维度的组合,以允许对数据进行快速多维分析查询。在设计Kylin模型时,了解星型模型和雪花模型的特点对于高效进行数据分析至关重要。
Apache kylin不适用矩阵运算
Apache Kylin主要用于基于SQL查询的数据分析,主要处理表格型数据,存储预先聚合的多维分析数据。通常情况下,这意味着基于星型模式或雪花模式的聚合查询,而不是矩阵运算。
对于矩阵运算,通常使用更适合数值计算的工具和库,例如 NumPy、SciPy等Python库,或者Matlab等工具。这些工具专门针对向量和矩阵运算进行了优化,提供了丰富的函数库进行处理,并不止于基本的运算,还包括了更为复杂的线性代数运算、傅立叶变换等。
总的来说,虽然 Kylin 的 Cube 在一定程度上表达了多维数据,具有一定的数组形式,但它适合用来进行多维分析查询,而不适合进行复杂的矩阵运算。如果要进行矩阵计算,应该选择其它更加适合这类计算的工具和库。
Apache Kylin是一个分布式分析引擎,提供了Hadoop之上的SQL查询接口及多维分析(OLAP)能力,它专门设计用于构建大数据量上的Cube以优化查询性能。但是,Kylin并不是为通用数组运算而设计的。
Kylin的Cube是一种特殊的数据结构,是对多维数据的预聚合存储。Cube中的“维度”对应于数据库表中的列,而“度量”则通常是需要汇总的数值数据,例如:销售额、订单数量等。Kylin通过对维度列进行各种组合的预聚合来加速数据查询。
如果你需要在Apache Kylin上构建Cube来支持某种形式的数组计算,则需要理解Kylin Cube的构建是以SQL聚合和组合为基础的,并不是类似NumPy之类的库能够提供的低级、通用的数组操作
StarRocks
StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。StarRocks 既支持从各类实时和离线的数据源高效导入数据,也支持直接分析数据湖上各种格式的数据。StarRocks 兼容 MySQL 协议,可使用 MySQL 客户端和常用 BI 工具对接。同时 StarRocks 具备水平扩展,高可用、高可靠、易运维等特性。广泛应用于实时数仓、OLAP 报表、数据湖分析等场景。
StarRocks 是 Linux 基金会项目,采用 Apache 2.0 许可证,可在 StarRocks GitHub 存储库中找到(请参阅 StarRocks 许可证)。StarRocks(i)链接或调用第三方软件库中的函数,其许可证可在 licenses-binary 文件夹中找到;和(ii)包含第三方软件代码,其许可证可在 licenses 文件夹中找到。
物化视图
物化视图(Materialized View)是数据库中的一种对象,它包含一个查询结果集,这个结果集会在初次创建时被物理地存储在磁盘上,与普通的数据库表类似。
物化视图的主要优点在于它可以对长时间运行的复杂查询进行优化。通过将查询的结果集预先存储下来,当进行相同或相关查询时,就可以直接利用这个已经计算好的结果,而不需要再次执行耗时的计算或大量的数据读取操作。这种情况下,物化视图可以极大地提升查询性能。
同时,物化视图还可以支持数据仓库中常见的预聚合操作,比如根据固定的维度对大数据量进行聚合统计。这样,在需要获取汇总数据时,只需查询已经计算好的物化视图,而不需要去处理庞大的原始数据。
要注意的是,物化视图的数据并不是实时的,它们是在物化视图定义的查询被执行之后生成的,并且会被存储起来直到下一次刷新。因此,物化视图需要定期更新或刷新以保持数据的新鲜度。根据生成和更新物化视图的策略和频率,可能需要在查询速度和数据实时性之间对物化视图进行适当的调优。
在一些数据库产品中,物化视图可能被称为索引视图、快照等。
适用场景
StarRocks 可以满足企业级用户的多种分析需求,包括 OLAP (Online Analytical Processing) 多维分析、定制报表、实时数据分析和 Ad-hoc 数据分析等。
OLAP 多维分析
利用 StarRocks 的 MPP 框架和向量化执行引擎,用户可以灵活的选择雪花模型,星型模型,宽表模型或者预聚合模型。适用于灵活配置的多维分析报表,业务场景包括:
- 用户行为分析
- 用户画像、标签分析、圈人
- 高维业务指标报表
- 自助式报表平台
- 业务问题探查分析
- 跨主题业务分析
- 财务报表
- 系统监控分析
实时数据仓库
StarRocks 设计和实现了主键表,能够实时更新数据并极速查询,可以秒级同步 TP (Transaction Processing) 数据库的变化,构建实时数仓,业务场景包括:
- 电商大促数据分析
- 物流行业的运单分析
- 金融行业绩效分析、指标计算
- 直播质量分析
- 广告投放分析
- 管理驾驶舱
- 探针分析APM(Application Performance Management)
高并发查询
StarRocks 通过良好的数据分布特性,灵活的索引以及物化视图等特性,可以解决面向用户侧的分析场景,业务场景包括:
- 广告主报表分析
- 零售行业渠道人员分析
- SaaS 行业面向用户分析报表
- Dashboard 多页面分析
统一分析
- 通过使用一套系统解决多维分析、高并发查询、预计算、实时分析查询等场景,降低系统复杂度和多技术栈开发与维护成本。
- 使用 StarRocks 统一管理数据湖和数据仓库,将高并发和实时性要求很高的业务放在 StarRocks 中分析,也可以使用 External Catalog 和外部表进行数据湖上的分析。
ClickHouse
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。
Apache Druid
Apache Druid 是一个面向实时分析的数据库,专为在大数据集上进行快速切片和切块分析("OLAP"查询)而设计。通常,Druid 支持那些需要实时数据摄入、高速查询性能和高可用性的用例。
Druid 常作为分析应用程序的图形用户界面的后端数据库使用,或用于需要快速聚合的高并发 API。Druid 最适合处理以事件为导向的数据。
Druid 常见的应用领域包括:
网络流量分析,包括网络和移动分析 网络遥测数据分析,包括网络性能监控 服务器指标存储 供应链分析,包括生产指标 应用性能指标 数字营销/广告分析 商业智能/OLAP
Apache Kylin
1)预计算:Kylin 的核心特性是预计算技术,能够将大数据的 SQL 查询速度从分钟级提升到亚秒级。
2)支持大数据平台:它基于 Hadoop 计算引擎,提供了强大的处理超大数据集的预计算能力。
3)OLAP 模型:提供 OLAP 通用的星型模型和雪花模型等数据建模方式。
4)接口丰富:支持 ODBC、JDBC 或 Restful API 接口,方便与 BI 工具集成。
Apache Druid
1)列式存储:Druid 使用列式存储,优化了数据的读取速度,特别是对于分析型查询。
2)实时分析:支持实时数据摄入和快速查询,适合需要实时数据分析的场景。
3)灵活的数据摄入:支持流式和批量数据摄入,可以轻松与 Kafka、Amazon Kinesis 等数据源集成。
4)高并发处理:Druid 设计用于高并发环境,能够处理大量并发查询。
ClickHouse
1)向量化引擎:ClickHouse 使用向量化引擎,优化了 CPU 的使用,提供了极高的查询性能。
2)实时数据更新:支持实时的数据更新和查询,适合需要快速响应的实时分析场景。
3)压缩和性能:数据压缩减少了存储空间的需求,同时保持了高吞吐量的数据处理。
4)SQL 支持:提供了类 SQL 查询语言,支持多种数据分析场景。
StarRocks
1)高性能:StarRocks 定位为高性能的分析型数据库,适合处理大规模数据分析工作。
2)易用性:StarRocks 提供了简单易用的 SQL 接口,降低了使用门槛。
3)实时分析:同样支持实时数据分析,能够快速响应用户查询。
3)云原生:StarRocks 支持云原生部署,可以很好地与云服务集成。
技术选型建议
预计算与实时分析:如果业务场景需要预计算来加速查询,选择 Kylin;如果需要实时数据摄入和查询,考虑 Druid 或 StarRocks。
数据处理能力:对于需要处理极高并发查询的系统,Druid 是一个好选择;如果对查询性能有极致要求,可以考虑 ClickHouse。
易用性和集成:如果需要与现有的 BI 工具集成,Kylin 和 ClickHouse 提供了丰富的接口。
云环境部署:对于云原生应用,StarRocks 可能提供更好的支持。
StarRocks 是一个开源的 MPP (Massively Parallel Processing) 数据仓库系统,旨在提供高性能的实时分析查询服务。StarRocks 优化了数据存储、查询执行并支持实时摄取,使之适用于快速查询和实时分析。StarRocks 的竞品包括其他能够提供大规模数据分析和存储的系统,常见的有:
- Apache Kylin: 开源的分布式分析引擎,提供 OLAP(Online Analytical Processing)功能,主要优势是其对 Cube 的预计算能力。
- ClickHouse: 开源列式数据库管理系统,适用于在线分析处理查询,以其高性能的实时查询而闻名。
- Snowflake: 是一个云数据仓库解决方案,它提供了强大的数据仓库功能,并支持多个云平台。
- Amazon Redshift: AWS 提供的快速、可扩展的数据仓库服务,可以简化数据的收集、存储和分析。
- Google BigQuery: 是 Google 提供的无服务器数据仓库服务,能够实现大规模数据的快速分析。
- Apache Impala: 是开源的 MPP SQL 查询引擎,用于处理存储在 Hadoop 集群中的大数据。
- Presto / Trino: 分布式 SQL 查询引擎,适合用于执行高效的分析查询操作。
- Greenplum: 是一个开源的 MPP 数据仓库系统,适用于企业级的大规模数据分析。
- Teradata: 企业级 MPP 数据仓库解决方案,提供复杂的数据分析能力和大规模数据仓存储。
DolphinDB优点
1)高性能和高效率:磁盘的列式存储计算模型,大数据量的分析运算速度快、写入速度快。
2)分布式计算:支持横向扩展,可增加硬件节点进行扩展。
3)多类型数据处理:结构化数据,无结构化数据,如文本、语音、视频等,也支持海量的时间序列数据和面板数据分析。
4)内置丰富的函数库:内置大量的高级函数库,支持矩阵运算、统计分析、数据挖掘、机器学习和可视化等功能
5)易用性:SQL支持,也提供了Java,Python, C++, R和MATLAB等接口
6)实时流处理:支持实时流数据处理,杜绝了批处理带来的数据延时。
DolphinDB缺点
DolphinDB
1)功能复杂性:与常规的关系型数据库相比,DolphinDB的操作和配置可能更为复杂,这需要一定时间学习和适应,尤其对于初次接触列式数据库的用户来说。
2)社区规模:DolphinDB的社区规模相比于一些更成熟和流行的数据库(如MySQL、Oracle或PostgreSQL)可能较小,可能会影响到用户在问题解决和资源获取上的便利性。
3)传统数据处理:虽然DolphinDB对于高频、大量的数据处理非常强大,但对于常规的业务数据处理,比如小批量的增删改查操作,可能并不如常规的关系型数据库高效。
4)商业软件:虽然DolphinDB提供了免费的社区版,但一些高级功能需要购买商业版才能使用,这可能会导致某些限制或者增加额外的成本。
5)分布式计算限制:DolphinDB虽然支持横向扩展和分布式计算,但程序设计和资源管理可能相较于其他数据库更为复杂,需要良好的管理和扩展策略。
Ignite优点
1)内存中计算:支持内存中执行SQL和键值查询
2)分布式计算:支持在集群上并行处理计算任务
3)高扩展性: Ignite能够线性扩展以处理更大的数据和计算需求
4)分布式网格存储:支持定义维度分区来存储分布式数据集
5)支持内嵌到Java应用中,并且与传统RDBMS系统结合较好
Ignite缺点
1)复杂性较高:Ignite是个全功能的分布式系统,配置和集成Ignite需要良好的系统理解和深入的技术知识
2)内存资源消耗大:作为内存中计算和数据存储平台,Ignite对内存资源的需求相对较大
3)文档和社区支持不足:虽然Apache Ignite是开源的,并且有一定的社区支持,但与一些更知名的开源项目相比,文档和社区支持依然有些不足
4)提供ACID事务支持但限制较多
Redis优点
1)KV和数据类型支持:支持KV查询,支持多种数据类型,包括字符串、列表、集合、散列、位图和有序集等
2)稳定及成熟:Redis 已广泛使用于生产环境,社区及生态非常活跃;
3)中小规模读写性能极快:通常处理数十万到百万级别的读写操作每秒
4)轻量级: Redis非常轻量级,配置简单,易于维护
Redis缺点
1)无法处理复杂查询:Redis支持简单的键值对查询,但是并不适合执行复杂查询和分析操作。
2)分布式支持不足:Redis提供了一些基本的主从复制和分片机制,但在更复杂的分布式处理方面,
例如数据自动均衡、一致性哈希等特性方面,相对比较弱。
Apache Kylin
1)预计算:Kylin 的核心特性是预计算技术,能够将大数据的 SQL 查询速度从分钟级提升到亚秒级。
2)支持大数据平台:它基于 Hadoop 计算引擎,提供了强大的处理超大数据集的预计算能力。
3)OLAP 模型:提供 OLAP 通用的星型模型和雪花模型等数据建模方式。
4)接口丰富:支持 ODBC、JDBC 或 Restful API 接口,方便与 BI 工具集成。
Apache Druid
1)列式存储:Druid 使用列式存储,优化了数据的读取速度,特别是对于分析型查询。
2)实时分析:支持实时数据摄入和快速查询,适合需要实时数据分析的场景。
3)灵活的数据摄入:支持流式和批量数据摄入,可以轻松与 Kafka、Amazon Kinesis 等数据源集成。
4)高并发处理:Druid 设计用于高并发环境,能够处理大量并发查询。
ClickHouse
1)向量化引擎:ClickHouse 使用向量化引擎,优化了 CPU 的使用,提供了极高的查询性能。
2)实时数据更新:支持实时的数据更新和查询,适合需要快速响应的实时分析场景。
3)压缩和性能:数据压缩减少了存储空间的需求,同时保持了高吞吐量的数据处理。
4)SQL 支持:提供了类 SQL 查询语言,支持多种数据分析场景。
StarRocks
1)高性能:StarRocks 定位为高性能的分析型数据库,适合处理大规模数据分析工作。
2)易用性:StarRocks 提供了简单易用的 SQL 接口,降低了使用门槛。
3)实时分析:同样支持实时数据分析,能够快速响应用户查询。
3)云原生:StarRocks 支持云原生部署,可以很好地与云服务集成。
技术选型建议
预计算与实时分析:如果业务场景需要预计算来加速查询,选择 Kylin;如果需要实时数据摄入和查询,考虑 Druid 或 StarRocks。
数据处理能力:对于需要处理极高并发查询的系统,Druid 是一个好选择;如果对查询性能有极致要求,可以考虑 ClickHouse。DolphinDB在时序数据的读写性能快,并支持实时流数据处理与矩阵运算。
易用性和集成:如果需要与现有的 BI 工具集成,Kylin 和、ClickHouse 、dolphin DB提供了丰富的接口。
云环境部署:对于云原生应用,StarRocks 可能提供更好的支持。
DolphinDB优点
1)高性能和高效率:磁盘的列式存储计算模型,大数据量的分析运算速度快、写入速度快。
2)分布式计算:支持横向扩展,可增加硬件节点进行扩展。
3)多类型数据处理:结构化数据,无结构化数据,如文本、语音、视频等,也支持海量的时间序列数据和面板数据分析。
4)内置丰富的函数库:内置大量的高级函数库,支持矩阵运算、统计分析、数据挖掘、机器学习和可视化等功能
5)易用性:SQL支持,也提供了Java,Python, C++, R和MATLAB等接口
6)实时流处理:支持实时流数据处理,杜绝了批处理带来的数据延时。
名词
Campisi归因模型
一种用于债券投资组合业绩分析的方法,它允许投资者和基金经理对债券投资组合的收益进行详细的分解,以识别不同因素对收益的贡献。这种模型特别适用于纯债型基金的业绩归因分析,因为它基于持仓数据来评估基金经理的投资决策和市场变动对投资组合表现的影响。
时序数据库
Time-Series Database是一种专门用来存储、检索、处理时间序列数据(即每个数据点都带有时间戳的数据)的数据库。最典型的应用场景包括股票价格、气候数据、服务器性能度量等等。
SAAS Software as a Service 软件即服务
PaaS Platform-as-a-Service 平台即服务
IaaS Infrastructure as a Service,基础设施即服务
DAG Directed Acyclic Graph(有向无环图)的简称,是一种由顶点和箭头组成的图形结构。在DAG中,箭头具有方向性,并且不存在任何从一个顶点出发最终又回到这个顶点的路径,即没有环。
Apache Ignite是一种开源的分布式数据库,也是一个分布式计算平台,用于处理大规模数据集的高性能和高吞吐量
Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,它可以用作为数据库、缓存或消息传递系统
DolphinDB是一款专为大数据和高速数据流设计的高性能分布式列式数据库
StarRocks(原名Doris)是一种开源的、可扩展的大规模在线分析型数据仓库产品,也被称为 MPP 数据库
ClickHouse 是一款开源的列式数据库,主要用于在线分析处理(OLAP)
Apache Druid是一个高性能的实时分析型数据库
本文来自博客园,作者:life_start,转载请注明原文链接:https://www.cnblogs.com/yangh2016/p/18165885