【问题标题】:Oracle representing hierarchy of data combinationsOracle 表示数据组合的层次结构
【发布时间】: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


【解决方案1】:

将数据存储到非关系数据库怎么样?

我会推荐 MongoDB 或 Hypertable。

【讨论】:

  • 我们确实考虑过这一点,但没有看到在 MongoDB 中快速生成列表的笛卡尔积的简单方法——我们不熟悉它。你能在那里提供任何帮助吗?谢谢
  • 如何将列表表保存在 Oracle DB 中,通过应用程序(任何语言的简单代码)选择笛卡尔积并将其存储在 Mongo 中。
【解决方案2】:

最后,我们选择对列表进行透视,这样我们就可以选择包含许多列的表,而不是数百万行。这不是一个理想的方法,但它确实对其他人有一些优势。

【讨论】:

    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2020-04-17
    • 2015-10-15
    相关资源
    最近更新 更多