什么是 OLTP 和 OLAP。它们之间有什么区别?
Posted
技术标签:
【中文标题】什么是 OLTP 和 OLAP。它们之间有什么区别?【英文标题】:What are OLTP and OLAP. What is the difference between them? 【发布时间】:2014-03-20 22:42:31 【问题描述】:实际上它们是什么意思?我找到的所有关于他们的文章都没有给我一个想法,或者我的知识太少,无法理解。
谁能给我一些资源,让我可以从头开始学习。
【问题讨论】:
请参阅datawarehouse4u.info/OLTP-vs-OLAP.html 以开始使用,然后只需在 Google 上搜索有关详细信息和差异的更多链接 好吧,简单的 DB 操作属于 OLTP 范畴,而复杂的大数据处理属于 OLAP,这就是 Base 的概念吧?? @AmarnathRShenoy 是的,插入、更新、删除将处理 OLTP @AmarnathRShenoy 你真的应该把更多的精力放在研究一个主题上。 Nagaraj S 的答案提供的两个资源实际上是谷歌返回的前两个页面。当你让别人为你做这项工作时,你就是在欺骗自己。有关编写更好的 SO 问题的提示,请咨询SO help page: How to Ask?。 【参考方案1】:在这里你会找到更好的解决方案OLTP vs. OLAP
OLTP(在线事务处理)涉及特定系统的操作。 OLTP 的特点是大量的短时间在线事务(INSERT、UPDATE、DELETE)。 OLTP 系统的主要重点是非常快速的查询处理、在多访问环境中保持数据完整性以及通过每秒事务数衡量的有效性。 OLTP 数据库中有详细的当前数据,用于存储事务数据库的模式是实体模型(通常是 3NF)。它涉及访问个人记录的查询,例如在公司数据库中更新您的电子邮件。
OLAP(在线分析处理)处理历史数据或档案数据。 OLAP 的特点是交易量相对较低。查询通常非常复杂并且涉及聚合。对于 OLAP 系统,响应时间是一种有效性度量。 OLAP 应用程序被数据挖掘技术广泛使用。在 OLAP 数据库中有聚合的历史数据,存储在多维模式(通常是星型模式)中。有时查询需要访问管理记录中的大量数据,例如贵公司去年的利润是多少。
【讨论】:
信息很清楚。感谢您分享它帮助我消除了疑虑。 “OL”指的是什么? 如果其他人也需要复习:3NF 是一种范式,用于规范化数据库设计以减少数据重复并确保引用完整性 OL指的是“ONLINE”,意思是实时完成数据处理,而不是批处理。【参考方案2】:区别很简单:
OLTP(在线交易处理)
OLTP 是一类促进和管理面向事务的应用程序的信息系统。 OLTP 也被用来指代系统立即响应用户请求的处理。在线事务处理应用程序在数据库管理中具有高吞吐量和插入或更新密集型。 OLTP 系统的一些示例包括订单输入、零售和金融交易系统。
OLAP(在线分析处理)
OLAP 是更广泛的商业智能类别的一部分,它还包括关系数据库、报告编写和数据挖掘。 OLAP 的典型应用包括销售业务报告、市场营销、管理报告、业务流程管理 (BPM)、预算和预测、财务报告和类似领域。
查看更多详情OLTP and OLAP
【讨论】:
【参考方案3】:OLTP:代表OnLine Transaction Processing,用于管理当前的日常数据信息。 OLAP:全称OnLine Analytical Processing,用于维护数据的过去历史,主要用于数据分析,也可以称为仓库。
【讨论】:
【参考方案4】:非常简短的回答:
不同的数据库有不同的用途。我不是数据库专家。 经验法则:
如果您要进行分析(例如汇总历史数据),请使用 OLAP 如果您正在进行交易(例如在电子商务购物车上添加/删除订单),请使用 OLTP简答:
让我们考虑两个示例场景:
场景 1:
您正在建立一个在线商店/网站,并且您希望能够:
存储用户数据、密码、以前的交易... 存储实际产品及其相关价格您希望能够找到特定用户的数据,更改其名称...基本上对用户数据执行 INSERT、UPDATE、DELETE 操作。与产品等相同。
您希望能够进行交易,可能涉及用户购买产品(这是一种关系)。那么 OLTP 可能是一个不错的选择。
场景 2:
你有一个在线商店/网站,你想计算类似的东西
“所有用户花费的总金额” “什么是最畅销的产品”这属于分析/商业智能领域,因此 OLAP 可能更适合。
如果您从“知道如何/什么/多少”的角度来思考...,这会涉及一种或多种类型的所有“对象”(例如所有用户和大多数产品)要知道总花费)那么 OLAP 可能更适合。
更长的答案:
当然事情没那么简单。这就是为什么我们必须首先使用像OLTP
和OLAP
这样的短标签。每个数据库最终都应独立评估。
那么 OLAP 和 OLTP 之间的根本区别是什么?
嗯,数据库必须将数据存储在某个地方。数据的存储方式很大程度上反映了所述数据的可能用途,这不足为奇。数据通常存储在硬盘上。 让我们把硬盘想象成一张非常宽的纸,我们可以在其中读写东西。有两种方法可以组织我们的读取和写入,以便高效快速。
一种方法是制作一本有点像电话簿的书。在本书的每一页上,我们都存储了有关特定用户的信息。现在很好,我们可以很容易地找到特定用户的信息!直接跳到页面!如果我们愿意,我们甚至可以在开头有一个特殊的页面来告诉我们用户在哪个页面上。 但另一方面,如果我们想找到,比如说,我们所有的用户花了多少钱,那么我们就必须阅读每一页,即整本书! 那将是一个基于行的书籍/数据库(OLTP)。开头的可选页面将是索引。
另一种方式使用我们的大纸是制作一本会计账簿。我不是会计,但让我们想象一下,我们会有一个“支出”、“采购”页面......这很好,因为现在我们可以非常快速地查询“给我总收入”之类的内容(只需阅读“采购” “ 页)。我们还可以要求更多涉及的内容,例如“给我销售的前十名产品”,并且仍然具有可接受的性能。 但是现在考虑为特定用户找到支出是多么痛苦。您必须浏览每个人的支出的整个列表并过滤该特定用户的支出,然后将它们相加。这基本上相当于再次“阅读整本书”。 那将是一个基于列的数据库 (OLAP)。
因此:
OLTP
数据库用于执行许多小型事务,通常用作“单一事实来源”。
另一方面,OLAP
数据库更适合分析、数据挖掘、更少的查询,但它们通常更大(它们对更多数据进行操作)。
当然,它比这更复杂一些,这是对数据库差异的 20000 英尺的概述,但它让我不会迷失在缩写词的海洋中。
说到首字母缩略词:
OLTP = 在线事务处理 OLAP = 在线分析处理为了进一步阅读,这里有一些相关链接极大地激发了我的回答:
http://datawarehouse4u.info/OLTP-vs-OLAP.html http://www.ibmsystemsmag.com/Blogs/You-and-i/Archive/db-102-database-orientation-row-vs-column/ http://martinfowler.com/bliki/DataLake.html【讨论】:
很好的方法,使用不同级别的解释、易于理解的语言和具体示例。人们在 *** 中回答问题的模型。 真棒,真棒答案!迄今为止我在 SO 中找到的最好的一个!给这个人一枚勋章! 我觉得很容易理解! "如有疑问,我只使用 SQL。" - SQL 是一种语言,这并不能回答问题。有各种各样的数据管理系统知道如何解释 SQL 并翻译它以在后台处理各种数据源。甚至可以在 spark 数据帧上进行 sql 查询。这就像说“当有疑问时,我只使用 html”。好的,这是简短的答案,但很愚蠢 是的,你提出的将是一个改进,在这两个方面。当然,这对这个话题是不公平的,但那是无关紧要的。干杯!【参考方案5】:oltp- 主要用于业务交易。用于收集业务数据。在 sql 中,我们使用插入、更新和删除命令来检索少量数据源。同样它们是高度规范化的...... OLTP 主要用于维护数据完整性。
olap- 主要用于报告、数据挖掘和业务分析目的。对于大型或批量数据。故意将其反规范化。它存储历史数据..
【讨论】:
为什么这被否决了,它似乎与其他答案中所说的相同:用于 CRUD 的 oltp,用于聚合的 olap? @ychaouche 可能是因为已经有超过 3 个具有相似含义的答案。到目前为止,这是最新的答案,但它甚至没有帮助也不支持现有的答案。然而,用户决定添加自己的答案版本,仍然不完整且缺乏解释。以上是关于什么是 OLTP 和 OLAP。它们之间有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章