簡體   English   中英

在數據庫中存儲項目的“喜歡”?

[英]Storing “likes” of an item in a database?

我正通過Heroku在Postgres上運行Rails應用程序。

我想在我的網站上實現類似Facebook“喜歡”的各種項目,例如用戶評論。 將這些存儲在我的數據庫中的最有效和快速的最聰明的方法是什么?

顯而易見的是在用戶和項目之間有一個類似的連接表,如下所示:

user_id int
item_id int
item_type string
created_at datettime

但是,當顯示時,這意味着每次我拉一個項目時,我都必須在整個相似的表中拉一個連接,這可能會變得非常大。

對此的明顯反應是在項目中存儲計數器,用於持續計數。 但是,這不起作用,因為誰喜歡一個項目很重要,既可以顯示在項目旁邊,也可以隱藏用戶已經喜歡的東西的類似按鈕。

我的計划是在所有可愛的項目中添加一個文本字段,我將在其中存儲一個序列化數組。 這樣,項目的每一次拉動都會附帶一個喜歡它的完整列表。 有沒有更好的方法來做到這一點,還是這是推薦的方法?

您是否有理由相信您的數據集將會如此之大以至於加入太昂貴了? Postgres雖然沒有最快的RDBMS那么快,但現在相當快。 我曾經運行過一個每天都有數百萬次網頁瀏覽的網站,並且需要一些非常復雜的查詢來生成每個頁面。 通過一些簡單的緩存,我們能夠在非常適度的硬件上運行它。

當你進行非規范化時,你會放棄使用RDBMS的許多好處。 如果我知道必須,我只會這樣做。 如果是這種情況,我會考慮使用其他東西,比如簡單的鍵/值數據庫,用於該數據。 但我認為,這只是可能是你的情況下,如果你有一個可怕的很多數據。

暫無
暫無

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

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