簡體   English   中英

現有Postgres表與新表中的Json列

[英]Json Column in Existing Postgres Table vs New Table

我有一個要顯示信息的“目錄”。 該信息將從幾個不同的表中提取,用戶將能夠設置首選項以從其“目錄”中的相應表中隱藏記錄。 我正在運行Postgres數據庫

所以,我的問題是:

創建一個新表(table_a_to_catalog)更好(從性能角度來說),它將在其中存儲table_a_id和catalog_a中的table_a記錄,以便用戶為該目錄隱藏該記錄。 然后有另一個表(table_b_to_catalog)保持該連接...依此類推...

要么

將hide偏好作為json值存儲在目錄的記錄中會更好嗎? 就像{“ table_a” => [id1,id2,id3],“ table_b” => [id1,id2,id3]}

這實際上取決於此目錄的用例...如果信息是只讀的,並且您每天運行一次作業來更新所述目錄,那么json會更好。 但是,如果您想實時更新catelog上的信息並允許其可編輯,那么最好有一個單獨的表。

至於個人喜好,我認為將數據保留在表中可以為您將數據用於其他功能提供更大的靈活性。

很大的表會對性能產生負面影響。 在postgres表中保留“隱藏”視圖數據意味着每個目錄中每個隱藏條目都有一個DB條目。 每個客戶端應用程序都需要過濾該表以獲取與其用戶相關的信息,而對於許多用戶而言,這可能會花費大量時間。

如果一個簡單地增加一個字段到用戶表中,含有hstore ,JSON或視圖數據的CSV(例如隱藏偏好),這將略微減少初始加載時間。 如果“隱藏”意味着根本不將其顯示在客戶端,那么JSON更有意義,而如果您不希望將數據發送給客戶端,那么hstore更有意義。

我說一點兒是因為其他許多因素(緩存)對性能的影響遠不止於此。 您可能需要考慮將Redis用於應用程序運行時,並將Postgres用於數據倉庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM