我有一个我正在研究的项目,需要以下内容:
-
创建一个规范化的样本rdbms(5个表)
-
使用Java我向每个表输入了100万行数据
-
在规范化表上运行两个OLTP和两个OLAP查询 .
-
非规范化表格 .
-
对它们运行相同的OLTP和OLAP查询并比较时间 .
OLAP查询是什么意思?我搜索过互联网,所有我能找到的是我必须制作一个立方体,并对其进行查询 . 如何在RDBMS上编写OLAP查询?我有一个样本:表格标准化(订单,产品,客户,分支机构,销售)
-
销售: order_id,product_id ,数量
-
产品: product_id ,名称,描述,价格,sales_tax
-
customer: customer_id ,f_name,l_name,tel_no,addr,nic,city
-
branch: branch_id ,name,tel_no,addr,city
-
订单: order_id ,customer_id,order_date,branch_id
我想在上面的表上写一个OLAP查询 . 我正在使用Oracle Express和SQL Developer .
1 回答
有些SQL函数有时称为“分析”,“窗口”或“OLAP”,具体取决于您使用的RDBMS . 在某些情况下,它们可以提供巨大的性能改进,通常是在比较同一组数据中的行,否则需要自联接 .
当您使用Oracle时,我衷心建议您访问asktom.oracle.com并搜索"analytics rock" - 您会发现一些很好的示例,这些示例非常好解释并且比阅读Oracle文档更容易,which is here.
一些注释:它们不是严格的“关系”,因为关系理论没有解决元组的顺序;它们是在查询的其他部分之后执行的 - 即在过滤和聚合之后;一些数据库在较小程度上实现了它们 .
我看到Oracle也有一个单独的OLAP产品用于处理多维数据集,但这是目前企业版的单独许可选项,所以如果您使用的是Express版本,我认为这不是您所指的 .
EDIT
这是一个大致基于您的数据模型的简单示例,它显示了如何使用分析函数来获得运行总计,如果没有它们,这一点并不容易:
这给出了(对于我输入的一些简单数据): -