1

ユーザーが記事を読むことができるウェブサイトを開発しています。ユーザーが記事にアクセスしたときに記事を自動的に既読としてマークする機能を実装したいと考えています。問題は、読んだ記事のデータをdbに格納する方法がわからないことです。数十万の記事と数千のユーザーが存在する可能性があります。各記事/ユーザーの行を「記事を読む」結合テーブルに格納するのは非効率的な方法のようです。他のオプションは何ですか?

4

2 に答える 2

2

数十万の記事と数千のユーザーが存在する可能性があります。各記事/ユーザーの行を「記事を読む」結合テーブルに格納するのは非効率的な方法のようです。

ペアごとに 1 つの行を格納するスキーム{user, article}は正しいです。多くの行があるとこのスキームが非効率になるという含意は正しくありません。最新のデータベースは、多くの行を非常に効率的に処理するように最適化されています。

さらに、「数十万の記事と数千のユーザー」が多数の行に変換されるという含意も同様に正しくありません: すべての記事ではなく、ユーザーが読む記事ごとに行を格納することになるため、取得される行は、最悪の場合の見積もりよりも桁違いに少なくなります。

于 2013-05-12T09:57:20.293 に答える
0

戦略に応じて:

ユーザーごとに固有の記事を保存する場合 (後で読む機能)、記事と共にステータスを保存できます。

任意のユーザーが読むことができる記事のセットがある場合は、読み取りステータスを保存する追加のテーブルを正しく導入します。このアプローチには何も問題はありません。

于 2013-05-12T09:57:23.020 に答える