我想用你的智慧为数据仓库系统找到合适的解决方案.以下是一些可以更好地理解问题的细节:
数据以星型模式结构组织,具有一个BIG事实和~15个维度.
每月20B个事实行
10个维度有100行(有些层次结构)
5个维度有数千行
2个维度有~200K行
2个大尺寸有50M-100M行
针对此DB运行两个典型查询
dimq的热门成员:
select top X dimq, count(id)
from fact
where dim1 = x and dim2 = y and dim3 = z
group by dimq
order by count(id) desc
Run Code Online (Sandbox Code Playgroud)
针对元组的措施:
select count(distinct dis1), count (distinct dis2), count(dim1), count(dim2),...
from fact
where dim1 = x and dim2 = y and dim3 = z
Run Code Online (Sandbox Code Playgroud)
问题:
哪里可以托管(EC2?)
(请忽略此刻的导入和加载问题)
Tnx,
Haggai.
我有一个程序来查找一个非常大的表中的一系列事务的第一个,最后一个,最大和最小价格,该表按日期,对象名称和代码组织.我还需要交易数量的总和.表中大约有30亿行,此过程需要很多天才能运行.我想尽可能减少时间.我有一个关于trans表中的distinct字段的索引,并查看查询的select部分的解释计划,正在使用索引.我对另一种方法的建议持开放态度.我使用的是Oracle 11g R2.谢谢.
declare
cursor c_iter is select distinct dt, obj, cd from trans;
r_iter c_iter%ROWTYPE;
v_fir number(15,8);
v_las number(15,8);
v_max number(15,8);
v_min number(15,8);
v_tot number;
begin
open c_iter;
loop
fetch c_iter into r_iter;
exit when c_iter%NOTFOUND;
select max(fir), max(las) into v_fir, v_las
from
( select
first_value(prc) over (order by seq) as "FIR",
first_value(prc) over (order by seq desc) as "LAS"
from trans
where dt = r_iter.DT and obj = r_iter.OBJ and cd = r_iter.CD );
select max(prc), min(prc), sum(qty) …
Run Code Online (Sandbox Code Playgroud)