我想存儲一個大的json散列(或內容,像你想要的那樣稱呼它),而「大」我的意思是1000個以上的鍵值對,我不想要在該json字段上進行任何搜索,我只想從數據庫中檢索它並將其傳遞給javascript來解析它並構建一個可視結果。什麼數據類型選擇json或jsonb或文本
在Postgresql上有json
類型和jsonb
類型(也可以使用text
字段來存儲json)。我只是想爲此做出正確的選擇,所以我希望有經驗的人提供一些建議。
我想存儲一個大的json散列(或內容,像你想要的那樣稱呼它),而「大」我的意思是1000個以上的鍵值對,我不想要在該json字段上進行任何搜索,我只想從數據庫中檢索它並將其傳遞給javascript來解析它並構建一個可視結果。什麼數據類型選擇json或jsonb或文本
在Postgresql上有json
類型和jsonb
類型(也可以使用text
字段來存儲json)。我只是想爲此做出正確的選擇,所以我希望有經驗的人提供一些建議。
假設你正在談論的實際,嚴格JSON(不怪癖如無引號鍵)...
json
是不是從text
太大的不同。除了驗證JSON的之外,它沒有太大的作用。
jsonb
與以下兩者相比,它是一個不同的野獸:它是一個全面的數據結構,它有自己的內部格式,在搜索中有更多的操作。例如json
沒有適用的=
(相等運算符)。 jsonb
有。 (text
也有,即使它在語義上有所不同。)
索引要合理得多,但在讀取和寫入過程中必須來回轉換。
鑑於此,jsonb
在這裏看起來不太合適。
...所以只存在一個決定遺令:
你要確保你的數據庫包含在列中唯一有效的JSON值?在數據庫級別?或者您是否相信該數據庫的每個客戶端(通常是服務器應用程序)只提供有效數據?
json
是一種相對安全的選擇。使用text
理論上可以提高性能的可忽略邊際由於沒有驗證,但你只會得到特定的數字基準。但是它不能保護非JSON值,並且客戶端中的偶然錯誤可能會被忽視。負責任地測試!
你的問題不是你沒有發佈代碼,而是你要求什麼類型是最好的意見。 –
@羅伯特哥倫比亞好笑!尋求建議有什麼問題:) – medBo