文章列表取每篇文章最新的3條評論,請問大家怎麼設計?

來源:互聯網
上載者:User
文章列表取每篇文章最新的3條評論,請問大家怎麼設計?

article表{article_id,title,content}comment表{article_id,comment,created(時間戳記)}

回複內容:

文章列表取每篇文章最新的3條評論,請問大家怎麼設計?

article表{article_id,title,content}comment表{article_id,comment,created(時間戳記)}

如果單論資料庫表的設計,你都已經給出來了,這是最直觀的設計!

  • 如果現在的設計能夠很好滿足你的需求,工作的很好,那就沒必要為了所謂的易於擴充、效能等理由去重構。簡單直觀且能滿足當前的需求,就不要盲目的去過度設計,每次顯示評論的時候,就老實地關聯查詢,然後order by created,然後取前3條記錄;
  • 如果無法滿足需求(一般大多是效能需求),那就需要分析效能瓶頸在那裡。個人先猜一下:一般瓶頸也就是在資料量很大時候,最新3條評論的擷取。針對這個效能熱點,簡單給一下個人的看法,歡迎拍磚:
    1、最簡單的做法,加索引(article_id, created),能夠很好增加SQL的查詢效率,基本能夠解決問題;
    2、此外,可以在article表增加一列,儲存最新3條評論的資訊,這個資訊可以根據(comment_id, created)組合,這樣既方便插入新評論時的更新,也可根據主鍵id直接查詢最新3條評論,不過這種方式,增加了插入評論時的開銷,需要權衡;
    3、再者,可以利用緩衝,將最新3條評論放到緩衝中,當然最好是能夠放到記憶體緩衝中,如果資料量大的話,可以考慮類似memcache的分布式緩衝,這樣同樣可以大大減輕資料庫的查詢壓力;
    4、最後,稍發揮一點,直接上nosql資料庫,類似mongodb、redis等nosql資料庫能夠很容易滿足這樣的業務情境,只是這樣帶來了新的學習成本。

上述只是個人的一家之言,對於大多數這樣的業務情境,在資料量不是特別大的時候,類似樓主的表結構,外加有效索引,完全能夠handle。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.