热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据仓库中的OLTP与OLAP查询是怎样的

小编今天带大家了解数据仓库中的OLTP与OLAP查询是怎样的,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够

小编今天带大家了解数据仓库中的OLTP与OLAP查询是怎样的,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“数据仓库中的OLTP与OLAP查询是怎样的”的知识吧。

在业务数据处理的早期,对数据库的写操作通常对应于正在发生的商业交易-进行销售,与供应商下订单,支付员工的工资等。随着数据库扩展到不涉及的领域  涉及货币易手,但是交易一词仍然存在,是指构成逻辑单元的一组读写操作。 这些类型的查询称为事务处理系统查询(OLTP)。  为这些查询设计的系统通常是面向用户的,这意味着它们可能会看到大量的请求。 为了处理负载,应用程序通常仅在每个查询中触摸少量记录。  该应用程序使用某种密钥来请求记录,而存储引擎使用索引来查找所请求密钥的数据。 磁盘查找时间通常是这里的瓶颈。

但是,数据库也开始越来越多地用于数据分析,而这种数据分析具有非常不同的访问模式。  通常,分析查询需要扫描大量记录,仅读取每条记录的几列,并计算汇总统计信息(例如计数,总和或平均值),而不是将原始数据返回给用户。  例如,如果您的数据是销售交易表,则分析查询可能是:

  • 一月份,我们每家商店的总收入是多少?

  • 在最近的促销活动中,我们售出的iPhone比平时多了多少?

  • 哪个品牌的牛奶最常与家乐氏的玉米片一起购买?

这些查询通常由业务分析人员编写,并馈入有助于公司管理层做出更好决策(业务智能)的报告。  为了将这种使用数据库的模式与事务处理区分开来,它被称为在线分析处理(OLAP)。 它们之所以鲜为人知,是因为它们是由业务分析师而不是最终用户处理的。  与OLTP系统相比,它们处理的查询量要少得多,但每个查询的要求通常很高,需要在短时间内扫描数百万条记录。  磁盘带宽(不是寻道时间)通常是这里的瓶颈,而面向列的存储是此类工作负载越来越流行的解决方案。

OLTP和OLAP之间的区别并不总是很明确,但是下面列出了一些典型特征。

数据仓库中的OLTP与OLAP查询是怎样的

首先,将相同的数据库用于事务处理和分析查询。事实证明,SQL在这方面非常灵活:它对于OLTP类型查询和OLAP类型查询都适用。尽管如此,在1980年代末和1990年代初,公司有一种趋势是停止使用OLTP系统进行分析,而改为在单独的数据库上运行分析。这个独立的数据库称为数据仓库。

企业可能具有数十种不同的交易处理系统:为面向客户的网站提供动力的系统,实体商店中的销售点(结帐)系统,仓库中的库存跟踪,车辆路线规划,供应商管理,员工管理等。这些系统中的一个很复杂,需要一个团队来维护它,因此这些系统最终只能彼此独立地运行。通常期望这些OLTP系统具有高可用性,并以低延迟处理事务,因为它们通常对业务运营至关重要。因此,数据库管理员密切保护其OLTP数据库。他们通常不愿让业务分析人员在OLTP数据库上运行临时分析查询,因为这些查询通常很昂贵,会扫描数据集的大部分,这可能会损害并发执行事务的性能。

数据仓库

数据仓库中的OLTP与OLAP查询是怎样的

相比之下,数据仓库是一个独立的数据库,分析人员可以查询其内心的内容,而不会影响OLTP操作。数据仓库包含公司所有各种OLTP系统中数据的只读副本。从OLTP数据库中提取数据(使用定期数据转储或连续的更新流),将其转换为易于分析的模式,进行清理,然后将其加载到数据仓库中。将数据放入仓库的过程称为"提取-转换-加载(ETL)"。现在,几乎所有大型企业都存在数据仓库,但在小型企业中几乎闻所未闻。这可能是因为大多数小型公司没有太多不同的OLTP系统;而且大多数小型公司的数据量都很小-足够小,可以在常规SQL数据库中查询,甚至可以在电子表格中进行分析。在大型公司中,要做一些在小型公司中简单的事情需要很多繁重的工作。

使用单独的数据仓库而不是直接查询OLTP系统进行分析的一大优势是,可以针对分析访问模式对数据仓库进行优化。 某些数据库(例如Microsoft SQL  Server和SAP HANA)在同一产品中支持事务处理和数据仓库。 但是,它们越来越成为两个独立的存储和查询引擎,它们恰巧可以通过公共SQL接口进行访问。  数据仓库供应商(例如Teradata,Vertica,SAP HANA和ParAccel)通常在昂贵的商业许可下销售其系统。 Amazon  RedShift是ParAccel的托管版本。 最近,出现了许多开源的SQL-onHadoop项目。 他们很年轻,但旨在与商业数据仓库系统竞争。  这些包括Apache hive,Spark SQL,Cloudera Impala,Facebook Presto,Apache Tajo和Apache  Drill。 其中一些是基于Google Dremel的想法。

Analytics的存储架构

根据应用程序的需求,在事务处理领域中会使用各种不同的数据模型。 另一方面,在分析中,数据模型的多样性要少得多。  许多数据仓库都以相当公式化的方式使用,称为星型模式(也称为维建模)。 通常,将事实捕获为单个事件,因为这样可以在以后最大程度地进行分析。  但是,这意味着事实表可能会变得非常大。

星星和雪花:

数据仓库中的OLTP与OLAP查询是怎样的

"星型模式"的名称来自以下事实:当可视化表关系时,事实表位于中间,并被其维度表包围; 这些桌子的连接就像星星的光芒。  此模板的一种变体称为雪花模式,其中尺寸进一步细分为多个子维度。  像Apple,Walmart或eBay这样的大企业,其数据仓库中可能有数十PB的事务历史记录,其中大多数实际上是表。

列式存储:

数据仓库中的OLTP与OLAP查询是怎样的

尽管事实表通常超过100列,但是典型的数据仓库查询一次只能访问其中的4或5。  在大多数OLTP数据库中,存储以面向行的方式进行布局:表的一行中的所有值都彼此相邻存储。  为了处理诸如"查找某项X在12月的平均销售额"之类的分析查询,面向行的存储引擎仍然需要将所有这些行(每个行包含100多个属性)从磁盘加载到内存中  ,解析它们并过滤掉不符合要求的条件,这可能会花费很长时间。 面向列的存储背后的想法很简单:不要将一行中的所有值都存储在一起,而是将每一列中的所有值存储在一起。  如果每列存储在单独的文件中,则查询仅需要读取和解析该查询中使用的那些列,这可以节省大量工作。

列压缩:

数据仓库中的OLTP与OLAP查询是怎样的

通常,一列中不同值的数量与行数相比很小(例如,零售商可能进行数十亿次销售交易,但只有100,000种不同产品)。  根据列中的数据,可以使用不同的压缩技术-在数据仓库中特别有效的一种技术是位图编码。

现在,我们可以将一列包含n个不同的值,并将其转换为n个单独的位图-每个不同的值一个位图,每行一个位。 如果行具有该值,则该位为1,否则为0。  如果n很小(例如,一个国家/地区列可能具有大约200个不同的值),则这些位图可以每行一位存储。

感谢大家的阅读,以上就是“数据仓库中的OLTP与OLAP查询是怎样的”的全部内容了,学会的朋友赶紧操作起来吧。相信编程笔记小编一定会给大家带来更优质的文章。谢谢大家对编程笔记网站的支持!


推荐阅读
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 本文深入解析了通过JDBC实现ActiveMQ消息持久化的机制。JDBC能够将消息可靠地存储在多种关系型数据库中,如MySQL、SQL Server、Oracle和DB2等。采用JDBC持久化方式时,数据库会自动生成三个关键表:`activemq_msgs`、`activemq_lock`和`activemq_ACKS`,分别用于存储消息数据、锁定信息和确认状态。这种机制不仅提高了消息的可靠性,还增强了系统的可扩展性和容错能力。 ... [详细]
  • 在当今的软件开发领域,分布式技术已成为程序员不可或缺的核心技能之一,尤其在面试中更是考察的重点。无论是小微企业还是大型企业,掌握分布式技术对于提升工作效率和解决实际问题都至关重要。本周的Java架构师实战训练营中,我们深入探讨了Kafka这一高效的分布式消息系统,它不仅支持发布订阅模式,还能在高并发场景下保持高性能和高可靠性。通过实际案例和代码演练,学员们对Kafka的应用有了更加深刻的理解。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
  • 亚马逊老板杰夫·贝佐斯
    本文主要介绍关于的知识点,对【亚马逊创始人或成地球首位万亿富豪,起底贝佐斯创业之路】和【亚马逊老板杰夫·贝佐斯】有兴趣的朋友可以看下由【CSDN资讯】投稿的技术文章,希望该技术和经验能帮到你解决你所遇 ... [详细]
  • 算法和数据结构是计算机科学中最基础和最重要的两个主题,在软件开发中无处不在。我坚信,对这两个主题的充分了解对于成为一名更好的程序员也很关键, ... [详细]
  • 开发笔记:Linux 系统安装下安装 mysql5.7(glibc版)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Linux系统安装下安装mysql5.7(glibc版)相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 是的,可以在RDSMySqlEngine中进行Master-Master复制。但它需要一些操作与实例。先决条件:1)为启用二进制日志记录创建两个实例的只 ... [详细]
  • 大数据的明天将驶向何方?
    http:www.infoq.comcnarticleswhere-will-big-data--tomorrow-sail-to大数据的明天将驶向何方?作者 36Kr 发布于20 ... [详细]
author-avatar
WINNIE双双围脖_370
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有