トピックをまだ読んでいないユーザー(これは悪い考えです)のためにフォーラムの価値を保存することは、スケーラブルにはなりません。その逆 本当に必要な場合は、データベース内のすべてのトピックにエントリを追加する必要があることに関連する問題も発生するためです。 新規ユーザーのサインアップ時。
リレーショナルテーブルを前述する代わりに、次のようにしてみてください。
Table: topics
+----+-------+------+-----
| id | title | body | ...
+----+-------+------+-----
| 1 | xyz | .... | ...
Table: replies
+----+-------+------+-----
| id | title | body | ...
+----+-------+------+-----
| 3 | xyz | .... | ...
Table: read_topics
+---------+----------+
| user_id | topic_id |
+---------+----------+
| 2 | 1 |
あなたのアプローチは、可能ですが(そして想像しやすいですが)、大量のユーザーがいると崩壊し始めます。スケーラビリティは、コメントでほのめかしたものです。ここでのもう1つの問題は、あなたのアプローチでは、大規模があるということです。 別のトランザクションを実行する前に、データベースからデータをプルして分割し、操作して再結合する必要があるため、パフォーマンスが低下します。また、テーブルが2つのCGIスレッドによって同時に書き込まれるという問題もあります。 。それを楽しんでください...
データの操作、並べ替え、データの関係、保存にツールを使用しているため、情報の投棄場所としてだけでなく、すべてのツールに使用してください。