我知道OLAP和OLTP的含义,以及谁是专门做什么的。目前,我只是从理论上研究数据建模,我不知道这些差异的实用性。
我想要一些能突出区别的例子。所以我做了一个(用ChatGPT),看不出是否真的存在任何差异。
就像我想模拟一个在线订单,所以我有三个实体- Customer, Order, Product。
在transactional database中,我将拥有以下表和列
Customer - {CustomerID, CustomerName}
Order - {CustomerID, OrderID}
Order_Details - {OrderID, ProductID, Location}
Product - {ProductID, Name, Category}在analytical database中,我将拥有以下表和列
Customer - {CustomerID, CustomerName}
Order - {OrderID, CustomerID, ProductID, Location}
Product - {ProductID, Name, Category}我看到的唯一不同是,由于规范化,事务性数据库还有一个表。如果可能的话有人能说出确切的好处是什么吗。或者其他的例子是可能的。
此外,我还想知道两个模型的ER图是否有任何不同(除了一些命名更改,比如实体进入事实和维度),ER中的事情也会发生变化。
发布于 2023-02-23 07:52:40
总之,OLAP和OLTP的主要区别在于它们的重点和目的。OLTP系统是为实时事务处理和管理而设计的,而OLAP系统是为复杂的分析和报告任务设计的。
您不能通过ER图来区分差异。
你不能看着一个图表模型说:“哦,那是一个OLTP数据库.”
编辑:因为你在评论中问了我一个直截了当的问题,我将用一个实际的OLAP和OLTP表的实例来回答你:
这是一个OLAP表:
Customer - {CustomerID, CustomerName}
Order - {CustomerID, OrderID}
Order_Details - {OrderID, ProductID, Location}
Product - {ProductID, Name, Category}这是一个OLTP表:
Customer - {CustomerID, CustomerName}
Order - {CustomerID, OrderID}
Order_Details - {OrderID, ProductID, Location}
Product - {ProductID, Name, Category}你能分辨出不同之处吗?
不,因为他们是一样的。
其中一个用于OLTP,每分钟收到1000次插入。另一个是它的简单副本,在另一个服务器上,立即同步或定期刷新。它不会收到每分钟1000个insert,但是Tableau或Power连接到它来创建仪表板和可视化数据。
就是这样,他们完全一样。
编辑2:在本指南中,您可以看到同一个表是如何用于OLAP和OLTP的:

如果您是为了数据库管理目的而工作,则可以通过SSMS连接到同一数据库。但是,如果您是为了分析目的而工作,也可以通过SSAS连接到相同的数据库。数据库保持不变。
SSAS ( Server分析服务)是为形成OLAP立方体而开发的:

因此,您可以为OLTP和OLAP使用相同的数据库。
您还可以使用不同的表和不同的ER图创建数据的不同表示形式。
但这完全取决于你,没有任何规则。在网上你可以找到最佳做法跟踪。但是随着新技术的使用,OLAP的概念也越来越成熟,人们开始考虑像OLAP一样使用OLTP,这要归功于最新的性能改进。
https://dba.stackexchange.com/questions/323871
复制相似问题