Mysql

網站排名的最佳數據庫設計

  • September 4, 2015

我正在做一個項目,我需要以兩種方式對網站進行排名 - 全球排名和它們在特定國家/地區的排名。計算兩者的基礎有多種因素。大約有 200 個國家需要計算排名。

我正在使用 MySQL

我有兩個問題——

全球排名

每當添加任何新網站時 -

  • 如果我將網站排名儲存在數據庫中,我需要重新計算所有網站的排名。每次添加新網站時都需要進行大量處理。
  • 或者另一種選擇是為每個網站分配一個分數,每當進行查詢時,order by根據分數分配排名,並返回其位置。這似乎不像order by昂貴的操作那樣可擴展。

國家排名數據庫和更新

  • 我應該如何儲存每個網站的每個國家/地區排名?
  • 添加新網站時如何更新所有這些排名?在這裡更新將比全球排名更昂貴。
  • 我應該on-the-fly在查詢時生成它然後記憶體結果嗎?

遊戲商店等網站如何顯示個性化和基於國家/地區的結果?

你會對數十億的網站進行排名嗎?如果是這樣,那麼即時和重新計算都是不可能的。

相反,讓後台任務處理該問題。為了顯示,顯示表格中的資訊,可能會過時一兩天(取決於重新計算需要多長時間)。

將排名放在單獨的表中,只有website_idrank。這將使recalc 原子和快速替換整個表。可能是帶有website_idcountry_code( CHAR(2) CHARACTER SET ascii) 和的第二個表rank

您還沒有解釋如何計算排名,因此我無法為您提供有關如何將其作為後台任務進行的任何見解。

引用自:https://dba.stackexchange.com/questions/114166