2013-05-17 41 views
0

我打算使用JavaDB之外(德比)或PostgreSQL。性能的影響成行

我有以下問題:我需要存儲大量的矢量集。目前所有的載體都含有固定數量的元素。因此,存儲集合的適當方式是每個矢量使用一行,每個元素使用一列。但是,元素的數量可能會隨着時間而改變。另外,就我而言,從軟件工程角度來看,具有固定列數的列反映了有關軟件組件的知識,而通用模型應該不知道。

所以我在想「線性」的佈局,並使用存儲元素,而不是載體一般表。

載體5的第一元件然後可以查詢這樣的:

SELECT value FROM elements where v_id = 5 and e_id = 1;

一般來說,我並不需要完整的表中讀取,並且只有載體的相對小的子集被訪問。

也許精通數據庫的人能判斷對性能的影響將是什麼?

非常感謝提前。

回答

3

這是什麼在一般的數據庫術語Entity-Attribute-Value或EAV設計提及的變體。這是一種關係數據庫設計的反模式,在大多數情況下應該避免。由於需要許多自連接,因此性能往往很差,而查詢最好也是醜陋的。

在PostgreSQL窺視intarray延伸,它應該很理想,如果值是簡單的整數解決您的問題。否則,請考慮PostgreSQL的標準數組類型。他們有自己的問題,但通常比EAV好得多,儘管他們不適合從JDBC工作。

否則,如果所有你正在存儲的是這些載體,也許考慮一個非關係數據庫。

+0

查看hstore,json和xml類型。 –