2012-09-12 43 views
2

我很快就需要將測量數據(從MATLAB內部)存儲到數據庫中 - 也許是MySQL。
每個測量將包含一些讓我們說的元數據和4096浮點(雙)條目的測量向量。 我應該用哪種方式將它們存儲到數據庫中?然後轉換爲BLOB或將它們作爲ARRAY類型列?我在JAVA jdbc Docs中發現了那些列類型。
任何提示都是值得歡迎的 - 甚至是不同的解決方案。如何在數據庫中存儲矢量:BLOB還是ARRAY?

+1

請注意,當您選擇引擎時,MySQL不包含數組類型。存儲方法的選擇更多地取決於數據在數據庫中時要處理的數據,而不是您想要存儲數據的方式。 – lanzz

+0

@lanzz Thankyou爲你的筆記。我只需要決定什麼會更好(展望未來):使用斑點 - 你總是需要轉換你的數據。因此,使用雙精度浮點數組(DOUBLE列)可能更容易 - 但實際上最少的dbms支持數組。那麼該怎麼辦?未來會有越來越多的dbms支持數組嗎? –

+1

數組在ANSI/ISO SQL標準中定義,所以很可能更多的DBMS將採用對它們的支持,而不是其他方式。即使在使用數組時,也可能需要_some_轉換,因爲數組結果通常被編碼爲字符串表示形式,需要進行解析,但這對於簡單的一維雙精度數組不應該是一個問題。 – lanzz

回答

1

請注意,當您選擇引擎時,MySQL不包含數組類型。數組是在ANSI/ISO SQL標準中定義的,因此很可能會有更多的DBMS隨着時間的推移採用對它們的支持,而不是相反。

即使使用數組,也可能需要一些轉換,因爲數組結果通常編碼爲字符串表示形式,需要進行解析,但這對於簡單的1維應該不會有問題雙打陣列。存儲方法的選擇更多地取決於數據在數據庫中時要處理的數據,而不是您想要存儲數據的方式。

如果您打算對服務器上的矢量內容進行操作,例如使用數組,則可以使用數組。搜索值(:value = ANY (array_column))。如果你是只有要檢索矢量,而不直接在查詢中檢查它的內容,那麼決定使用什麼存儲並不重要。實際上,您可能受益於blob/text存儲,以避免在DBMS方面進行任何額外的處理(即將數組值作爲結果的字符串表示進行編碼)。

+0

謝謝你的幫助! –

相關問題