0

我遇到Oracle数据库问题,我认为这是由数据表示问题导致的。我有一个由七个不同列表组成的层次结构,需要存储这些元素的所有独特潜在组合。我需要存储所有可能的组合,因为我需要将附加信息与它们一起存储。表示数据组合层次结构的Oracle

从历史上看,我们一直在管理四个列表,它来到了几千元的组合。这很好,但需求已经改变,因为他们不愿意这样做,现在我们正在运行七个列表。在我的真实环境中,列表存储20到200个项目。现在令人难以置信的组合总数约为3500亿。

由于我们正在试图与这代表什么的例子有,你可以选择喜欢的列表:

颜色:红,绿,蓝

形状:圆形,方形,三角形

口味:桃子,香蕉,覆盆子

这些将被存储为单独的表在Oracle中一样的颜色,形状,口味等,我们会做的是乘法它们放在一起(通过笛卡儿连接)得到一个爆炸表:Thi这就是我们目前在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表中存储数十亿条记录,并有及时对他们进行任何操作。我试图想出不同的方式来存储这些信息,但我的大脑一直在干扰组合的数量。有什么我可以做不同的存储记录?铭记它们都是独特的组合,我们需要将数据与它们一起存储。

感谢您的帮助!

+1

你真的需要存储关于每种可能组合的数据吗?这些3500亿条信息(或700亿美元,如果你每个存储两条信息)在哪里呢?如果你不这样做,并且大部分数据字段实际上都是空的,那么稀疏表示会有多大 - 如果只根据需要存储记录,当数据存在要附加到组合时? – 2013-04-05 14:00:45

+0

@AlexPoole我们不认为我们可以用一个稀疏表示 - 没有数据字段将是空的,用户可以请求任何随意 – Kieran 2013-04-05 14:28:53

回答

0

最终,我们选择了转动名单,以便有,而不是数百万行的,我们选择的表有许多列。这不是一种理想的方法,但它对其他人有一些好处。

0

有关数据存储到非关系型数据库是什么?

我会推荐MongoDB或Hypertable。

+0

我们没有考虑这个组合的信息,但认为没有简单的方法来生成MongoDB中快速列表表的笛卡尔积 - 我们对它并不熟悉。你能在那里提供任何帮助吗?谢谢 – Kieran 2013-04-05 15:08:48

+0

如何在Oracle DB中保留列表,通过应用程序(任何语言的简单代码)选择笛卡尔产品并将其存储在Mongo中。 – 2013-04-06 13:42:24