【发布时间】:2015-05-25 20:57:58
【问题描述】:
我有一种情况,我需要在加载表中收集大量数据(每天 9+ 十亿)数据,该表具有以下字段 -表加载器
first_seen,request,type,response,hits
1232036346,mydomain.com,A,203.11.12.1,200
1332036546,ogm.com,A,103.13.12.1,600
1432039646,mydomain.com,A,203.11.12.1,30
需要拆分成两个表(去重)
-TABLE 最终
request,type,response,hitcount,id
mydomain.com,A,203.11.12.1,230,1
ogm.com,A,103.13.12.1,600,2
和 -TABLE 时间戳
id,times_seen
1,1232036346
2,1432036546
1,1432039646
我可以创建模式并进行选择
select request,type,response,sum(hitcount) from loader group by request,type,response;
将数据放入最终表格。为了获得最佳性能,我想看看是否可以使用“全部插入”将数据从加载器移动到这两个表中,并可能使用数据库中的触发器来尝试实现这一点。有关解决此问题的最佳方法的任何想法和建议?
【问题讨论】:
-
这个问题还没有答案吗?
-
要明确一点:您希望每个不同的 REQUEST 有一条记录,包括要与每个时间戳关联的生成 ID?另外:该表每天都有一组新数据。如果昨天有
mydomain.com的最终记录,mydomain.comtoday 的 ID 应该是什么? -
很抱歉没有提供足够的细节。不同的记录来自“请求、类型、响应”元组。这些在具有唯一 ID 的“最终”表中应该是不同的。如果新记录出现在 mydomain.com 的另一批中,例如“14330000000,mydomain.com,A,203.11.12.1,900”,则“id”=1 的总命中数应该增加,并且在“timestamps”表中添加一个新行时间戳 143300000000 对应。
标签: oracle database-design etl