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