什么是OLTP和OLAP。它们之间有什么区别?


294

其实这是什么意思?我发现的所有关于它们的文章都没有给我一个主意,或者我的知识不足以理解它。

请问有人能给我一些资源,以便我从头开始学习。


8
请参阅datawarehouse4u.info/OLTP-vs-OLAP.html入门,然后在Google周围搜索有关详细信息和差异的更多链接
隐身2014年

1
好吧,简单的数据库操作在OLTP类别中,复杂的大数据处理在OLAP中,这就是基本概念吧?
Amarnath R Shenoy 2014年

1
@AmarnathRShenoy是的插入,更新,删除将处理OLTP
Nagaraj S 2014年

9
@AmarnathRShenoy您应该在研究主题上投入更多的精力。Nagaraj S的答案提供的两个资源实际上是google返回的前两页。当您让别人替您完成工作时,您就是在愚弄知识。有关编写更好的SO问题的提示,请查阅SO帮助页面:如何提问?
奥斯汀

Answers:


363

在这里,您将找到一个更好的解决方案OLTP与OLAP

  • OLTP(在线事务处理)涉及特定系统的操作。OLTP的特点是大量的短在线事务(INSERT,UPDATE,DELETE)。OLTP系统的主要重点是非常快速的查询处理,在多路访问环境中保持数据完整性,并通过每秒事务数来衡量有效性。在OLTP数据库中,有详细的最新数据,用于存储事务数据库的架构是实体模型(通常为3NF)。它涉及查询访问个人记录,例如更新公司数据库中的电子邮件。

  • OLAP(在线分析处理)处理历史数据或档案数据。OLAP的特点是交易量相对较低。查询通常非常复杂,涉及聚合。对于OLAP系统,响应时间是一种有效性度量。OLAP应用程序已被数据挖掘技术广泛使用。在OLAP数据库中,有聚合的历史数据,存储在多维模式(通常是星型模式)中。有时查询需要访问管理记录中的大量数据,例如贵公司去年的利润。


7
非常清楚的信息。感谢您的分享,这帮助我消除了疑虑。
CapturedTree

“ OL”指的是什么?
扎克·史密斯

如果其他人也需要复习:3NF是一种正常形式,用于规范化数据库设计以减少数据重复并确保引用完整性
Martin Thoma

1
OL表示“在线”,这意味着实时完成数据处理,而不是批处理。
Ganesh Jadhav

229

答案很简短:

不同的数据库有不同的用途。我不是数据库专家。经验法则:

  • 如果您要进行分析(例如汇总历史数据),请使用OLAP
  • 如果您要进行交易(例如在电子商务购物车上添加/删除订单),请使用OLTP

简短答案:

让我们考虑两个示例方案:

方案1:

您正在建立在线商店/网站,并且希望能够:

  • 存储用户数据,密码,以前的交易...
  • 存储实际产品及其相关价格

您希望能够找到特定用户的数据,更改其名称...基本上对用户数据执行INSERT,UPDATE,DELETE操作。与产品等相同

您希望能够进行交易,可能涉及到用户购买产品(这是一种关系)。那么OLTP可能是一个很好的选择。

方案2:

您有一个在线商店/网站,并且想要计算类似

  • “所有用户花费的总金额”
  • “最畅销的产品是什么”

这属于分析/商业智能领域,因此OLAP可能更适合。

如果您以“知道如何/什么/多少”会很高兴……,而这涉及一种或多种类型的所有“对象”(例如,所有用户和大多数产品都知道总支出),则OLAP可能更合适。

更长的答案:

当然事情并不是那么简单。这就是为什么我们必须首先使用像OLTP和这样的短标签的原因OLAP。最后,应独立评估每个数据库。

那么OLAP和OLTP之间的根本区别是什么?

好吧,数据库必须将数据存储在某个地方。大量存储数据的方式反映了所述数据的可能使用也就不足为奇了。数据通常存储在硬盘上。让我们把硬盘视为一张很宽的纸,我们可以在其中读写东西。有两种方法可以组织我们的读写操作,从而使它们高效而快速。

一种方法是制作一本有点像电话本的书。在本书的每一页上,我们都存储有关特定用户的信息。现在很好,我们可以非常轻松地找到特定用户的信息!只需跳到页面!我们甚至可以在开始时有一个特殊的页面,告诉我们我们想要用户在哪一页。但是,另一方面,如果我们想查找所有用户花费了多少钱,那么我们将不得不阅读每一页,即整本书!那将是基于行的书/数据库(OLTP)。开头的可选页面将是索引。

使用大张纸的另一种方法是制作会计账簿。我不是会计师,但让我们想象一下,我们会有一个“支出”,“购买”页面...太好了,因为现在我们可以非常快速地查询“给我总收入”之类的信息(只需阅读“购买” “页面)。我们还可以要求更多涉及的事情,例如“给我出售的十大产品”,并且仍然具有可接受的性能。但是现在考虑为特定用户查找支出将是多么痛苦。您将必须遍历每个人的支出的整个列表,并过滤该特定用户的支出,然后将其相加。这基本上等于再次“阅读整本书”。那将是一个基于列的数据库(OLAP)。

因此

  • OLTP 数据库旨在用于执行许多小事务,并且通常用作“单一事实来源”。

  • OLAP 另一方面,数据库更适合于分析,数据挖掘,较少的查询,但它们通常更大(它们可处理更多数据)。

它比当然要涉及更多的内容,它是关于数据库如何变化的20000英尺的概述,但它使我不会迷失首字母缩略词。

说起首字母缩写词:

  • OLTP =在线交易处理
  • OLAP =在线分析处理

为了进一步阅读,这里有一些相关链接极大地启发了我的答案:


39
一种很好的方法,它使用了不同级别的解释,易于访问的语言以及具体示例。人们在stackoverflow中回答问题的模型。
ribamar '16

2
真棒,真棒答案!到目前为止,我迄今为止在SO中找到的最好的一个!给这个人一块奖牌!
Pedro Gordo

1
我发现这很容易理解!
在一个

3
“有疑问时,我只使用SQL。” -SQL是一种语言,因此无法回答问题。有各种各样的数据管理系统,它们知道如何解释SQL并进行翻译,以便与幕后的各种数据源一起工作。甚至可以在spark数据帧上进行sql查询。就像说“有疑问时,我只使用html”。好的,这是一个简短的答案,但是很愚蠢
Radu Simionescu

1
是的,您的建议在两个方面都将有所改善。当然,这将不能使这个主题公正,但这是没有意义的。干杯!
Cbhihe

24

区别很简单:

OLTP(在线交易处理)

OLTP是一类信息系统,可促进和管理面向事务的应用程序。OLTP也已用于表示系统立即响应用户请求的处理。在线事务处理应用程序具有高吞吐量,并且在数据库管理中需要大量插入或更新。OLTP系统的一些示例包括订单输入,零售和金融交易系统。

OLAP(在线分析处理)

OLAP是更广泛的商业智能类别的一部分,它还包括关系数据库,报告编写和数据挖掘。OLAP的典型应用包括销售,营销,管理报告,业务流程管理(BPM),预算和预测,财务报告以及类似领域的业务报告。

查看更多详细信息OLTP和OLAP


6

OLTP-:oltp代表在线事务处理,用于管理当前的日常数据信息。OLAP-:olap代表在线分析处理,用于维护数据的过去历史记录,主要用于数据分析,也可以称为仓库。


-6

oltp-主要用于业务交易。用于收集业务数据。在sql中,我们使用insert,update和delete命令来检索较小的数据源。同样,它们也已高度标准化.... OLTP通常用于维护数据完整性。

通常用于报告,数据挖掘和业务分析目的。对于大型或批量数据。故意将其归一化。它存储历史数据。


为什么要对此一票否定,这似乎与其他答案中所说的相同:oltp表示CRUD,olap表示聚合?
ychaouche

1
@ychaouche可能是因为已经有3个以上具有相似含义的答案。到目前为止,这是最新的答案,但它甚至无济于事,也不支持现有的答案。但是,用户还是决定添加自己的答案版本,但这仍然是不完整的,缺乏解释。
Irfandy Jip
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.