2013-04-02 61 views
1

我正在開發一個圖像處理項目。我使用PHP的GUI和matlab算法和Mysql作爲我的數據庫。我現在有30,000個圖像存儲在數據庫中。我的matlab程序將爲包含300個元素的每個圖像生成3個數組。所以,我的問題是將巨大的數組存儲在數據庫中

  1. 是否保存由matlab生成的數組爲單個txt文件中的所有圖像或爲每個圖像創建一個txt文件。哪種方法將更容易檢索數據並存儲到數據庫中?
  2. 將數組複製到txt文件並將其保存到數據庫中有多難?有沒有標準的過程呢?
  3. 必須檢索數組的元素以進一步計算。我們可以使用序列化和反序列化來達到這個目的嗎?
  4. 我必須一次比較2個數組元素,並從兩個數組中獲取第三個數組中的最小值。例如A = [1 2 3 4]和B = [6 1 4 2]我必須比較這個數組的每個元素,並生成第三個數組c = [1 1 3 2],它將數組的每個元素與其另一個數組的相應元素並將最小元素存儲在第三個數組中。與1個固定數組相比,這個過程重複數千個數組。有沒有任何PHP功能來做到這一點?

任何建議和幫助將非常可觀。謝謝。

+1

這個網站的工作方式,它會更好地要求單數/原子問題。一個問題,一個最好的答案。如果你想討論,請使用CHAT功能,或者PHPbuilder.com –

+0

1.什麼? 2.很容易。 3.是的,4.易於編寫自己的函數 – shapeshifter

+0

'序列化'是唯一的出路 – Yang

回答

1

這種情況下的最佳解決方案是創建一個單獨的元表,用於存儲與您的圖像相關的數據(數組)。

這裏有一個簡單的例子EER:

Image DB EER

image_id(引用外鍵),array,並且index的結合彌補元表的主鍵。

我假設你可以安全地將數組的鍵值表示爲0索引,並且數組的所有值也都是數字(這就是爲什麼所有字段的類型爲INT,但如果不是,請調整數據類型因此)。

  • image_id代表鏈接image_id。
  • array表示特定的數組(您說最多3個數組,因此此列中的值可能在任何地方從1-3)。
  • index是數組中的數字索引。
  • value是與索引配對的數組中的值。在您的中繼表

實施例的數據可能看起來像:

image_id | array | index | value 
------------------------------------------------------ 
256   | 1  | 0  | 5 
256   | 1  | 1  | 9 
256   | 1  | 2  | 4 
256   | 1  | 3  | 23 
256   | 1  | 4  | 1 
256   | 2  | 0  | 9 
256   | 2  | 1  | 15 
256   | 2  | 2  | 8 
256   | 2  | 3  | 19 
256   | 2  | 4  | 11 

在上述例子中的數據,我們有兩個陣列(每個由12array欄中示出)與每個5個元素(鍵在index列中表示,值在value列中表示

可以存儲任意數量的數組,但需要多個索引

您還可以使用GROUP BY在MySQL中執行所需的數組比較計算。這裏是你如何能找到所有陣列的每個鍵image_id 256最小值(假設有3個陣列):

SELECT index, MIN(value) AS minvalue 
FROM  image_meta 
WHERE image_id = 256 
GROUP BY index 

因爲綜合指數是建立在(image_idarrayindex ),這應該非常快。

此設計還允許您爲每個圖像設置可變數量的索引和數組。

-1

通過您的問題,無論我的評論如何,關係數據庫對您來說都會更好,如果性能不是一個大問題,那麼SQL將成爲解決您的問題的最佳語言,而不是PHP級別。
是的,PHP也有簡單的方法來解決這些問題,儘管不如在SQL中那麼容易。