0

私が到着する前の前の開発者は、特定のWebアプリからの検索クエリの履歴リストを保持するデータベーステーブルを作成し、その後、ページのロード時にそのユーザーの最後に保存された検索をロードし直しました。

問題は、この検索関数は大量の使用を認識し、検索が行われるたびに新しい行がテーブルに書き込まれ、事実上無限になります(古い検索もクリーンアップされていないようです)。これまでのところ、このテーブルとカウントには30万を超えるエントリがあります。

私の質問は、これはこれを行うための安全な設計ですか?そして、より良い代替案は何ですか?私は限界、パフォーマンス、そしてこのようなものが存在する必要性について心配しています。

4

1 に答える 1

2

これは安全な設計ですか?

もちろん。テーブルは現在構成されているため、クエリを実行して、過去 6 か月間で最も人気のあった 10 個の検索だけでなく、これまでで最も人気のある 10 個の検索を返すことができます。

そして、より良い代替手段は何ですか?

重複を排除したい場合は、検索クエリ テキストに一意のインデックスを配置できます。

制限、パフォーマンス、およびこのようなものが存在する必要性について懸念しています。

必要性を判断できるのは組織だけです。制限とパフォーマンスに関する限り、私は 1 日に 200 万行を追加するデータ ウェアハウスを使用してきました。どのリレーショナル データベースについて懸念しているのかはわかりませんでしたが、現在存在するほとんどのデータベースは、数兆行のテーブルを処理できます。

「無限に」成長するテーブルでクリーンアップを行わないことが良い設計だと思う理由を説明できますか?

無限に成長するテーブルには組織的な理由があると仮定します。一例を挙げると、私はすべてのクエリ、すべての追加、更新、または削除をログに記録する必要があるシステムで作業しました。そして、このデータ ログをオンラインで永久に保持する必要がありました。法律で義務付けられていました。

履歴ファイルに十分なディスク容量があることを確認しただけです。テーブルが保持できる最大行数について考えたことは一度もありません。リレーショナル データベースは DB2 でした。

于 2013-02-14T18:44:00.907 に答える