什么是宽表数据库?优劣势有哪些? (数据库 宽表)

宽表数据库是一种用于存储大量数据的数据库,其特点是能够存储非常大的数据表并支持复杂查询。它由列式存储和分布式结构组成,能够存储数以百万计的行数和数以千计的列数。

优势:

1. 支持大规模存储:宽表数据库是针对大规模数据处理而设计的,它的存储能力高达千万甚至亿级别的记录。

2. 处理速度快:宽表数据库使用列存储技术,可以支持高效的数据压缩和归档,加快数据的读取和查询速度。

3. 可扩展性强:宽表数据库具有良好的扩展性,可以实现集群式的存储和负载均衡技术,适应高并发的数据处理环境。

4. 支持复杂查询:宽表数据库可以支持多种复杂的查询方式,包括多层嵌套查询、关联查询、分组查询等。

5. 高可靠性和稳定性:宽表数据库可以实现数据备份和恢复功能,同时支持高可用和容错性能,确保数据的安全和稳定性。

劣势:

1. 技术门槛高:宽表数据库的设计和使用需要较高的技术门槛,需要专业的技术人才进行维护和操作。

2. 成本高昂:宽表数据库需要大量硬件和软件资源来支持其存储和计算需求,成本较高。

3. 使用复杂:宽表数据库需要对数据及其存储方式有深刻的理解,操作复杂,需要较高的使用门槛。

4. 不适合小规模数据存储:相对于小型数据存储来说,使用宽表数据库的成本相对较高,而且如此庞大的数据集可能不适合处理小规模的数据。

5. 不适合实时处理:宽表数据库的处理特点和处理方式适合于大量数据和复杂查询,而不适合要求数据实时处理的场景。

宽表数据库作为一种大规模数据存储和处理方式,具有一定的优势和局限性。在实际使用中需要根据自身的需求进行权衡和选择。对于批量的数据加载、复杂的查询和高容错、高可用性的场景,宽表数据库是一个值得存在的选择。

相关问题拓展阅读:

BI 不是可以拖拉拽取数吗?为什么还要 SQL 取数 ? | 专家视角

36氪企服点评专家团——吕品

————正文————

BI 工具不是可以直接拖拉拽取数吗 ?为什么还要写 SQL 取数 ? 这是很多初次接触商业智能 BI 的朋友会提到的一个问题,因为在他们接触到一些 BI 市场或者产品宣传的时候,很多人就是这么来介绍BI 的。

简单来说,这个问题背后的逻辑等同于:

拿着碗和筷子不是可以直接吃饭吗 ?为什么还要自己动手做饭 ?有没有想过,即使是直接吃饭,饭总是要有人来做的吧,无论这个人是自己还是别人,“做饭”这个过程并不会少帆宏。

所以,从这个问题背后能看出来还是有很多人对于 BI 的理解还是存在一定的误区,我们可以从以下这几个角度来分析讲解一下。

可视化 BI

很多人对于 BI 的印象就停留在数据的可视化图表,但可视化图表只是 BI 的最终呈现,可视化的拖拉拽并不是 BI 的全部。

一个完整的商业智能 BI 解决的应该是端到端( End to End ) 的问题,需要从各个业务系统的数据源取数,通过 ETL ( Extract 抽取、Transformation 转换、Loading 加载 )的过程

将要分析的数据从规范的不可分析的、或不规范不可分析的数据最终变为规范的、可分析的形式

,最终通过 BI 可视化拖拉拽的方式将数据进行有效的、带有逻辑性的组织形成可视化分析报表。

派可数据大屏可视化分析

而大部分的 BI 工具如果重在强调前端可视化的能力,这类 BI 工具的定位就是解决数据可视化分析展现的问题,属于 BI 前端可视化报表工具,但并不能代表 BI 的全部。

如何形象的理解 BI

如果把 BI 可视化实现的过程比作到餐厅出菜的过程,那就是:

数据源环节 vs 菜市场

从各个业务系统取数

—— 按照餐厅营业需求准备所需菜品的原材料,就需要到各个市场买菜。不同的业务系统对应不同的菜市场,不同的菜市场有不同的摊位对应的就是业务系统数据库中不同的数据表。摊位上的菜就可以理解为数据表中的数据,要分析什么就取什么样的基础数据。

数据仓库 vs 后厨仓库

数据仓库环节

—— 从各个市场买回来的菜堆在哪里呢?后厨仓库。有的菜是今天要用的,有的菜是明天要用的,所以先买回来堆起来。从各个系统抽取上来的数据也是如此,这些数据有的来源于 Oracle 系统,有的来源于 MySQL 或者 SQL Server,按照分析需求从不同的数据库抽取之后放到自己的数据仓库中集中管理起来。

ETL 过程

—— 厨师做个猪肉炖粉条不可能把整扇猪肉、一颗一颗的大白菜扔到锅里,一定是猪肉切片,大白菜去除坏掉的叶子,菜该切切,态裤册肉该剁剁剁。同时,还会备好一些辅助的佐料等原材料,最后把所有的原材料放到操作台上,这个就是备菜( 择菜、洗菜、切菜 )的过程。

数据也是如此,把数据从各个业务系统先

抽取( Extract )

上来,等同于把放在不同仓库格子的菜拿过来。数据要做

转换( Transformation )

,比如一些脏数据的处理、格式的转换、数据计算口径的统一、指标的计算等等,就如同洗菜、择菜、切菜的过程。最后将处理之后的数据按照一定的模型或者格式

加载( Loading )

到指定的可被前端调用的数据表中,就如同把所有备好的菜放到一起准备下锅。

报表可视化 Reporting vs 上菜

Reporting 报表可视化就是最后的呈现,也通常视为 BI 的前端,所以也叫做 BI 前端可视化。用户需要什么样的可视化报表,就如同用户点菜一样可以高度定制化,前提是基于已有的原材料(数据)。

派可数据大屏可视纯洞化分析

所以,大家可以看到从业务系统数据取数到最后的报表呈现实际上经历了很多的阶段。

在商业智能 BI 开发过程中,80% 的时间在处理底层数据( 跑菜市场、买菜、运菜、择菜、洗菜、切菜到备好菜 ),20% 的时间在做可视化分析报表( 做菜 )。

底层数据的处理重点就是 ETL 过程,而实现 ETL 过程的主要方式就是通过 ETL 工具( 例如:Kettle、Informatica、Pentaho、IBM DataStage、Microsoft SSIS 等 )或其它 ETL 框架结合 SQL 查询语句、Stored Procedure 存储过程等方式来组织和管理数据处理的先后顺序。

特别是企业级 BI 项目建设,不仅仅是简单的 ETL 过程还需要涉及非常专业的数据架构设计、数据仓库建模、分层设计等数据仓库的构建,这里面最常用的开发语言就是 SQL。

BI 直接取数分析并不可行

很多 BI 工具会经常强调直连取数,这样就不需要写 SQL,直接通过表与表之间的关系进行表间建模,形成一个大宽表,文本类型的就是维度 Dimension,数值类型的变成度量 Measure,通过 BI 前端可视化进行拖拉拽操作形成很多 Ad-hoc Report 即席报表。

在实际演示案例的时候也是如此,最常见的就是一个标准的、数据格式极为标准规范的 EXCEL 表上传一下按照上面的方式来一遍;要么就是销售订单表和销售明细表关联一下,算算订单数量、订单金额等等。

其实验证一下 BI 工具的这种直连且拖拉拽的能力到底有多强非常简单,让业务部门提几个实际的分析需求,现场拿 BI 产品从实际的业务系统中取数来验证一下是否那么容易就明白了。

以下面一个小 DEMO 为例,可以使用任意的国内外 BI 可视化分析工具尝试一下当直连到这张表的时候,是不是就可以直接、任意的进行拖拉拽分析。

案例:统计外包业务的人工效率(时长)

背景:某金融公司把一部分贷款业务外包出去给第三方公司,第三方公司业务人员每与客户联系一次,就会根据沟通的状态记录一下,形成了以下的业务数据表 DurationTime,有以下三个核心字段:

ID – 客户的身份证号,唯一标识 ID

Operation – 一个操作记录,重点节点有 0034、0036、0048

Date – 一个操作记录的时间日期(实际上是时间,为了简化用日期表示)

业务系统中的原始数据表

计算规则如下:

1) 计算,,的时间间隔。

2) 如0036之前没有0034,不可单独计算的时间间隔。

3) 如0036后跟着多个0048,则取到最晚的一个0048的时间间隔。

4) 如0034后跟着多个0048,则取到最早的一个0048的时间间隔。

5) ….

实际的计算规则多达 20 多种,就以上面 4 条计算规则为例,最后的计算结果是:

Transformation 表

为了得到上面的最终结果,通常往往会创建一些中间转换表,用来记录转换的过程,便于检查和纠正逻辑,这种表我们通常叫做 Transformation 表。

业务系统中的原始数据表的数据规范吗 ?非常规范。但是适合分析吗 ?并不适合。所以在 BI 分析之前要做什么?

那就是写 SQL、ETL 取数,把这种在业务系统中规范的不可分析的、或不规范的不可分析的变成规范的、可分析的数据格式 —— 结果表。

在实际的 BI 项目开发过程中,来自各个业务系统数据源的数据大部分情况下就是一种不可直接分析的状态,与分析思维不同,他们是描述业务过程的。

还会有一种说法是:可以直连业务数据源,通过写 SQL 查询一个数据集再通过前端 BI 可视化分析工具来呈现做可视化分析报表行不行? 我们的建议是,除了以下几种情况,不要这样做:

之一,这类可视化分析报表基本上就是一次性的,一年可能就改不了几回。

第二,本身数据量不大,使用频率也不会非常的高。

原因在于:

没有合理的建模、指标计算复用性太差、影响业务系统性能、无法应对后续日益增长和不断变化的业务分析需求,按照这种方式做的 BI 基本上不会超过两年就会面临推翻重做的风险。

所以,在使用 BI 的时候,不管是直连业务系统数据源的表进行表间关系建模,还是通过写 SQL 查询数据结果集的方式直连业务系统,在大多数情况下都不合理,BI 开发人员应极力避免采用这样的数据操作方式,这些还都是在没有涉及到多异构数据源取数、主数据档案不一致、组织架构缺失补位、缓慢渐变维度等问题的前提下。

BI 直接取数分析什么样的情况下是可行的 ?

也有朋友说到,我们公司就是直连数据库取数做可视化分析的。我们让朋友回去问了一下,原来连接的是企业已经构建好的数据仓库。在这种情况下,底层的数据模型相对比较标准,数据也经过了非常良好的格式转换,可以直接使用一些前端 BI 可视化分析工具进行快速的分析,这样的一种搭配就非常好。

所以,BI 直连数据库不是不可行,但得分清楚直连的是业务系统的数据源数据库,还是直连的是已经通过 SQL 从业务系统的数据源取数和建模处理后的数据仓库、数据集市。

派可数据自助开发平台包括数据仓库与BI可视化分析

IT 和业务的边界就在这里,IT 负责底层数据建模、数据仓库的构建,业务基于已经建好的基础分析模型通过 BI 前端可视化分析工具来进行拖拉拽的可视化分析操作。

倘若是这样,也确实实现了不通过 SQL 取数使用 BI 前端工具就可以做报表的目标。但绝对不能认为,不通过 SQL 取数就可以对接任何业务系统数据源做任何 BI 可视化分析。

所以,当一家企业底层已经有架构非常良好的数据仓库,这个时候使用一个轻量的 BI前端可视化分析工具基本上就够用了。但如果所在企业底层还没有良好的数据仓库系统,只寄希望单纯的使用一个 BI 前端可视化报表工具解决一切分析问题,这个时候就需要认真思考一下是否可行。

www.36dianping.com

原文标题:《BI 不是可以拖拉拽取数吗?为什么还要 SQL 取数 ? | 专家视角》

作者: 吕品

本文来源于36氪企服点评

数据库 宽表的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数据库 宽表,什么是宽表数据库?优劣势有哪些?,BI 不是可以拖拉拽取数吗?为什么还要 SQL 取数 ? | 专家视角的信息别忘了在本站进行查找喔。


数据运维技术 » 什么是宽表数据库?优劣势有哪些? (数据库 宽表)