2008-09-30 67 views
2

我期待在數據庫中存儲900x100元素的二維數組。有效的召回和陣列比較非常重要。我可以使用像[A,x,y,A(x,y)]這樣的模式的表,這樣一個數組就會損害90,000條記錄。這看起來像是一個表格設計來存儲數組,並且會提供對單個元素的有效回想,但是對整個數組的回憶效率不高,並且會導致非常低效的數組比較。良好的數據庫設計用於召回和比較2D數據數組?

我應該以這種方式離開桌子設計,並在代碼中構建和比較我的數組嗎?還是有更好的方式來構建表,以便我可以使用數據庫操作來進行有效的數組比較?

感謝

+0

這似乎不是一個好計劃 - 數據庫中的大比較不會很好。你能否在這個決定上多加一些背景? – JeffFoster 2008-09-30 06:21:00

+0

這個問題實際上是由我的一位朋友給我提出的,所以我不確定他們爲什麼在數據庫中存儲90,000個元素的數據數組或者他們希望在數組之間做什麼類型的比較。我傾向於如上所述的簡單的數據庫模式,並用代碼來計算比較。 – LokiPatera 2008-09-30 06:25:18

+0

PostgreSQL有陣列支持,如果有真正的原因,他們不會在應用程序代碼中執行它,可能值得探討 – 2008-09-30 06:49:06

回答

2

如果數據的類型允許,將其以連接格式存儲並在內存比較解除連接後進行比較。數據庫操作將更快,並且內存操作也會比數據庫檢索更快。

誰知道,你甚至可以在不去除連接的情況下進行比較。

0

900×100的元素其實是非常小的(即使該元素是龐大的1K的東西,只能將90 MB)。難道你不能在需要時在內存中進行比較並以某種序列化格式存儲在磁盤上嗎?

將二維數組存儲在數據庫中是沒有意義的,特別是如果數據是不可變的數據。

0

當我過去在地震行業工作時,我們只是將我們的數組(通常是幾千個元素的1d)轉儲爲二進制文件。數據庫只會用於基本元數據(位置,索引等)。這將會更快,但它也允許數據在必要時解耦:在生產中,這是通常的,幾千個元素聽起來不太好,但一個典型的數據集可能很容易達到幾百GB - 這是20世紀90年代,所以我們不得不解耦到磁帶上。