質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

Q&A

解決済

2回答

886閲覧

相性検索のDB設計、アルゴリズムについて

maskmelon

総合スコア63

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

0グッド

1クリップ

投稿2020/10/05 09:53

ユーザーが好きな本を本棚に追加していくと、同じ本を読んでいる数が多い他のユーザーが上から順に表示させるような機能を実装したいです。

単純に考えるとユーザーの本棚と他のすべてのユーザーの本棚を比較する必要がありますが、これだと計算量がかなり多くなってしまうのではないかと懸念しています。

『読書ログ』のユーザー検索では同じような機能がありますが、一定時間が経過しないと表示されるユーザーが入れ替わらないようになっています。これも計算量を考慮してのことではないかと推測しています。

このような実装が現実的なのか、またDB設計やアルゴリズムの工夫や、適切なDBの選択(RDBかNoSQL)について知りたく思い質問させていただきました。

抽象的な質問ですがご教授いただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

「上位5つ」など抽出結果が決まっているならそこまで負荷が高いものにはならなそうには思いますが(元のデータの設計やデータ量(増加も含めて)次第ではある)、リアルタイム性を求めないのでしたら集計結果を保存しておくテーブルを用意するのもありです。

投稿2020/10/05 10:05

編集2020/10/05 10:18
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maskmelon

2020/10/08 08:52

参考になりました。回答くださりありがとうございました。
guest

0

m.ts10806の言う通り、リアルタイム性を求めなければ集計結果用のDBを用意しておくのも
一案かと思います。
参照用のDBをNoSQLにすればさらに早くなると思います。

投稿2020/10/05 14:12

Kaiser

総合スコア295

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maskmelon

2020/10/08 08:52

参考になりました。回答くださりありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問