2016-06-21 45 views
0

哪個更好,將配置數據存儲到單個jsonb字段中或爲每個屬性鍵專用一個字段?PostgreSQL jsonb?

例如,該JSON數據:

{ 
    notifications: { 
    check: { 
     enabled: true, 
     In_delimiters: true, 
     Out_delimiters : false 
    }, 
    battery_low: { 
     enabled: true, 
     battery_power: 0.70 
    }, 
    gps_on: { 
     enabled: true 
    }, 
    gps_off: { 
     enabled: true 
    }, 
    speed_exceeded: { 
     enabled: true, 
     speed: 100 
    } 
    } 
} 

如果我有成千上萬的用戶,每一個屬性鍵將每一行中複製,從而使數據庫的大小增長比我的大,如果我奉獻一個字段爲每個屬性並僅存儲價值。

這種情況下的建議是什麼?我可以使用jsonb並使用壓縮嗎?或爲每個財產分配一個存檔?

+0

json適用於非結構化數據。否則,請不要使用它。 –

回答

2

不要首先考慮數據庫大小;這些天儲存相對便宜。

使用jsonjsonb如果

  1. 結構從入門到入門變化,使得它來硬的了關係數據模型
  2. 沒有價值觀的多處理的數據庫中

否則使用關係數據模型,這是關係數據庫最擅長的。

如果您根本不處理數據庫內的數據,並且保存存儲對您很重要,如果行大小超過2KB,則使用json –,它會自動壓縮。 json也是要走的路,如果您有一個對象鍵序,空格或需要保留的重複對象鍵。

如果您必須使用查詢中的數據,請務必使用jsonb。 運算符速度更快,您可以使用索引。

+0

你是什麼意思,當你寫_processing的數據庫內的值_? – dbf

+0

在SQL查詢中使用JSON函數。在JSON列上使用索引。基本上,除了存儲和檢索JSON值之外,不要做任何事情。 –