【发布时间】:2013-09-24 17:17:05
【问题描述】:
全部,
请注意,为简单起见,我在下面创建了以下场景来帮助解决这个问题,这与我遇到的实际问题非常接近。
有一个名为“State”的表,出于所有意图和目的,该表包含一个与另一个名为“Stock”的表相关的值,该表包含有关对象的数据。
例如
+-----+-------+
|TABLE| VALUE |
+-----+-------+
|Stock| Ball |
+-----+-------+
|State|Instock|
+-----+-------+
所以从上面的例子来看,根据 State 表,Stock 表中名为“Ball”的记录是“Instock”。
但是要得出这个结论,我需要分析另一个名为 Items 的表,它是现实世界中该库存中存在多少物理项目的真实值所以如果有项目或没有项目可用,这将影响价值与该 Stock 记录相关的 State 表。
现在要分析并修改状态,我需要从 State 表开始,通过 Stock 表导航到 Items 表,如下所示
State ----> Stock ----> Items
现在这张表中有很多记录,至少每天都需要监控。
我以前从未从事过这样的事情,但是我的直觉告诉我,我可以获取所有表格并将它们作为数据对象加载到我的分析应用程序中,并在内存中虚拟地形成关系。
所以我需要做的就是在开始时执行一个大查询并将所有 SQL 结果加载到内存中。这是可能的还是明智的?
但是我考虑的另一个选项只是像这样遍历每个记录。按顺序执行许多事务。
State record 1 ----> Stock record 1 ----> Analyse Items records --> Update State record 1
State record 2 ----> Stock record 2 ----> Analyse Items records --> Updates State record 2
.......
这两种方法中的任何一种都是不错的选择吗?还是有其他方法可以做到这一点?
约束
- Oracle 11g 数据库
- 无法更改架构或表
- 考虑将 Java 或 Perl 用于此分析应用程序
- 此应用程序将是外部应用程序,并且与 DB 不在同一物理位置
伪代码
Get all state records in State table
Find their related records in Stock table
Find all child records of Stock table in Items table
Modify state of current record
Move onto next record set.
因此,欢迎任何我可以用于解决此问题的指导或特定方法/功能。
请不要给我一个解决方案,我只要求朝正确的方向轻推一下 :)
【问题讨论】:
-
所以澄清一下,你的最终目标是什么?用天气更新状态记录的最终目标是有库存吗?多久运行一次?
-
另外,您能否估计一下每个表中有多少行。
-
在我感兴趣的数据中,我将平均每天处理数百万行数的表中的 30,000 行。
标签: java sql oracle perl data-analysis