【发布时间】:2013-03-27 22:56:13
【问题描述】:
我遇到了 Oracle 数据量问题,我认为这是由数据表示问题引起的。我有一个由七个不同列表组成的层次结构,并且需要存储这些元素的所有独特的潜在组合。我需要存储所有可能的组合,因为我需要与它们一起存储附加信息。
从历史上看,我们一直在管理四个列表,其中包含几千种组合。这很好,但是要求已经改变,因为它们是惯常的,现在我们正在运行七个列表。在我的真实环境中,列表存储 20 到 200 个项目。现在,令人难以置信的组合总数约为 3500 亿。
作为我们试图用此表示的示例,您可以选择以下列表:
颜色:红、绿、蓝
形状:圆形、方形、三角形
口味:桃子、香蕉、覆盆子
这些将在 Oracle 中存储为单独的表,如 COLOURS、SHAPES、FLAVOURS 等,我们要做的是将它们全部相乘(通过笛卡尔连接)以获得分解表:这就是我们的目前正在 Oracle 中存储。
COLOUR SHAPE FLAVOUR DATA_1 DATA_2
Red Circle Peach -- these hold additional information
Red Circle Banana
Red Circle Raspberry
Red Square Peach
Red Square Banana
...
等等。
我们发现我们无法在 Oracle 表中存储数十亿条记录,也无法及时对它们执行任何操作。我试图想出不同的方法来存储这些信息,但我的大脑一直在纠结组合的数量。我能做些什么来以不同的方式存储记录吗?请记住,它们都是独特的组合,我们需要将数据与它们一起存储。
感谢您的帮助!
【问题讨论】:
-
您真的需要存储所有可能组合的数据吗?这 3500 亿条信息(或 7000 亿条,如果每个存储两个)来自哪里?如果你不这样做,并且你的大部分数据字段实际上是空的,那么稀疏表示会有多大 - 如果你只根据需要存储记录,当数据存在以附加到组合时?
-
@AlexPoole 我们认为我们不能使用稀疏表示 - 所有数据字段都不会为空,用户可以随意请求有关任何组合的信息
标签: oracle large-data-volumes data-representation large-data