2013-05-20 25 views
0

我正在開發MySQL數據庫的結構,並且我遇到了一個關於其結構的小決策問題。MySQL中良好的一對多關係練習

我有2個表:

  1. 在網站上發佈的所有消息。
  2. 該網站上發佈的所有評論。

每條消息可以有多個與其關聯的評論。 什麼是更好的方式來連接消息和與其相關的評論?

  1. 有一個註釋字段,其中包含相關消息的ID。
  2. 爲包含json格式的相關注釋的ID數組的消息提供一個字段。

我認爲通常使用第一種方法,然後使用MySQL查詢來查找具有相應消息的message_id的註釋。但是,如果有數十萬條評論,會有多高效?

在這種情況下,解碼json字符串並通過確切的唯一id訪問註釋會更加高效和快速嗎?

我使用python作爲後端,如果重要。

回答

1

第一個選項是要走的路。所以你會有:

comment_id | message_id | comment_text |時間戳等

對於您的MySQL表,您可以指定在前兩列建立索引以獲得良好性能。
10Mio評論應該可以正常工作,但您可以自己事先測試一下測試場景。

如果你想計劃更多,再經過約100,000評論,你可以做到以下幾點:

  • 確定有多少意見也有對每封郵件
  • 平均確定有多少消息將被要求約5mio評論
  • 比方說,它需要50000個消息5mio意見
  • 添加comment_table1 [..] comment_table9到數據庫蟒蛇內
  • 開關:如果MESSAGE_ID> 50000 - >再看看comment_table2等
  • 當然,你必須保存相應的意見

這應該大量條目的是高性能的。

您可以根據您的個人託管(性能)環境調整數字...

+0

謝謝。這是一個好方法。就是這樣,像Facebook,Twitter這樣的巨頭......組織大量的數據?或者是否存在比將信息劃分爲多個表格更好的方法? – BartoNaz

+0

「巨​​人」使用不同的技術。例如,他們使用NoSQL數據庫或數據庫羣集。 Facebook發佈了很多關於他們技術的信息...... – John

0

選項一是最好的方法。您需要在評論表中的message_id列上的索引。這使得MySQL即使在有數十萬條評論的情況下,也能快速有效地提取特定消息的所有評論。