Reddit の共同創設者は、何百万ものユーザーにスケーリングする際に抱えていた問題についてプレゼンテーションを行いました。概要はこちらから入手できます。
私が驚いたのはポイント3です。
代わりに、Thing Table と Data Table を保持します。ユーザー、リンク、コメント、サブレディット、賞など、Reddit のすべてが Thing です。Thing は、賛成/反対の投票、タイプ、作成日などの共通の属性を保持します。Data テーブルには、Thing id、key、value の 3 つの列があります。属性ごとに行があります。タイトル、URL、作成者、スパム投票などの行があります。新しい機能を追加するとき、データベースについて心配する必要はもうありませんでした。新しいもののために新しいテーブルを追加したり、アップグレードについて心配したりする必要はありませんでした。
これは私にはひどいアイデアのように思えますが、Reddit ではうまくいったようです。しかし、それは一般的に良い考えですか?それとも、たまたまうまくいったのは Reddit の特性ですか?