非常简短的回答:
不同的数据库有不同的用途。我不是数据库专家。
经验法则:
- 如果您要进行分析(例如汇总历史数据),请使用 OLAP
- 如果您正在进行交易(例如在电子商务购物车上添加/删除订单),请使用 OLTP
简答:
让我们考虑两个示例场景:
场景 1:
您正在建立一个在线商店/网站,并且您希望能够:
- 存储用户数据、密码、以前的交易...
- 存储实际产品及其相关价格
您希望能够找到特定用户的数据,更改其名称...基本上对用户数据执行 INSERT、UPDATE、DELETE 操作。与产品等相同。
您希望能够进行交易,可能涉及用户购买产品(这是一种关系)。那么 OLTP 可能是一个不错的选择。
场景 2:
你有一个在线商店/网站,你想计算类似的东西
这属于分析/商业智能领域,因此 OLAP 可能更适合。
如果您从“知道如何/什么/多少”的角度来思考...,这会涉及一种或多种类型的所有“对象”(例如所有用户和大多数产品)要知道总花费)那么 OLAP 可能更适合。
更长的答案:
当然事情没那么简单。这就是为什么我们必须首先使用像OLTP和OLAP这样的短标签。每个数据库最终都应独立评估。
那么 OLAP 和 OLTP 之间的根本区别是什么?
嗯,数据库必须将数据存储在某个地方。数据的存储方式很大程度上反映了所述数据的可能用途,这不足为奇。数据通常存储在硬盘上。
让我们把硬盘想象成一张非常宽的纸,我们可以在其中读写东西。有两种方法可以组织我们的读取和写入,以便高效快速。
一种方法是制作一本有点像电话簿的书。在本书的每一页上,我们都存储了有关特定用户的信息。现在很好,我们可以很容易地找到特定用户的信息!直接跳到页面!如果我们愿意,我们甚至可以在开头有一个特殊的页面来告诉我们用户在哪个页面上。
但另一方面,如果我们想找到,比如说,我们所有的用户花了多少钱,那么我们就必须阅读每一页,即整本书!
那将是一个基于行的书籍/数据库(OLTP)。开头的可选页面将是索引。
另一种方式使用我们的大纸是制作一本会计账簿。我不是会计,但让我们想象一下,我们会有一个“支出”、“采购”页面......这很好,因为现在我们可以非常快速地查询“给我总收入”之类的内容(只需阅读“采购” “ 页)。我们还可以要求更多涉及的内容,例如“给我销售的前十名产品”,并且仍然具有可接受的性能。
但是现在考虑为特定用户找到支出是多么痛苦。您必须浏览每个人的支出的整个列表并过滤该特定用户的支出,然后将它们相加。这基本上相当于再次“阅读整本书”。
那将是一个基于列的数据库 (OLAP)。
因此:
当然,它比这更复杂一些,这是对数据库差异的 20000 英尺的概述,但它让我不会迷失在缩写词的海洋中。
说到首字母缩略词:
- OLTP = 在线事务处理
- OLAP = 在线分析处理
为了进一步阅读,这里有一些相关链接极大地激发了我的回答: