标签: vldb

每月200亿行 - Hbase/Hive/Greenplum /什么?

我想用你的智慧为数据仓库系统找到合适的解决方案.以下是一些可以更好地理解问题的细节:

数据以星型模式结构组织,具有一个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)

问题:

  1. 执行此类查询的最佳平台是什么
  2. 需要什么样的硬件
  3. 哪里可以托管(EC2?)


    (请忽略此刻的导入和加载问题)

Tnx,
Haggai.

database mapreduce data-warehouse vldb greenplum

31
推荐指数
2
解决办法
2万
查看次数

优化Oracle 11g过程

我有一个程序来查找一个非常大的表中的一系列事务的第一个,最后一个,最大和最小价格,该表按日期,对象名称和代码组织.我还需要交易数量的总和.表中大约有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)

oracle optimization stored-procedures vldb oracle11g

2
推荐指数
1
解决办法
680
查看次数