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

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

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

1回答

1613閲覧

注目検索ワード(ニコニコ動画等にありがちな)を実装するにあたってどのようなテーブル構成にすべきなのかご教授願いたいです。

kento2543

総合スコア163

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

Redis

Redisは、オープンソースのkey-valueデータストアで、NoSQLに分類されます。すべてのデータをメモリ上に保存するため、処理が極めて高速です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

1クリップ

投稿2015/10/24 02:26

編集2015/10/24 02:27
  • ニコニコ動画
  • クックパッド

などでよく注目検索ワード(ユーザーがよく検索するワード)が検索ボックスの近くに表示されていたりします。

この機能を実装していきたいのですが、DB構成で迷っております。

動画サイトを制作しておりますため、構成はニコニコ動画とかをイメージしていただけるとわかりやすいです。

そもそもDBに保存しなくてもいい?のかもしれませんが、注目検索ワードの推移などを調べたいため、DBには保存したいと考えております。

一般的にこういう状況で、注目検索ワードをDBに保存する場合は、注目検索ワードのテーブルを作成するというのはわかりますが、他のテーブルとのリレーションをどうしたら良いのかがわかりません。

ユーザーテーブルや、動画テーブルなど、ありますが、どこと、どのように紐付けると今後楽になるのか、現時点でイメージが湧いていないため、アドバイスを頂けないでしょうか?

宜しくお願いします。

ちなみに開発は以下の通りです。

・ruby on rails
・mysql

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

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

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

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

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

guest

回答1

0

WebアクセスはApacheログなどで毎回分記載され、
5分に1回?くらいバッチ処理が動いて、それぞれのキーワードが
何回検索されたか計算し、sql文を発行するイメージでしょうか?

DB自体は検索キーワードと回数だけが保存されるだけのシンプルな
テーブルを作ればよいと思います。
あとはアプリ側で代入ロジックを詰めれば実装可能です。

やりたいことと一致してます?

投稿2015/10/24 03:28

SKYYFISH

総合スコア654

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

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

kento2543

2015/10/24 04:36

ご回答ありがとうございます。 再度伺いたいのですが、 > 何回検索されたか計算し、sql文を発行するイメージ ログから集計するのはわかりますが、そこからsql文を発行する方法がイメージできません。 「sql 発行 集計ログ」などで検索してみたのですが、スロークエリの発行ばかりがひっとして、おっしゃられているやり方がわかりませんでした・・・。 また仮に発行できたとして、そのsql文をもとに、自動?(手動?)でwebページに反映されるのでしょうか? まだまだ経験が浅いため、理解が追いついておりませんでした。 申し訳ありません。 もし宜しければ、もう少し詳しく教えて頂けないでしょうか?
kento2543

2015/10/24 04:39

またアプリ側で代入ロジックですが、 ruby on rails でいうところのモデルに Searchモデルを作成し、 ・keyword ・keyword_count というカラムを作るようなイメージなのでしょうか?
SKYYFISH

2015/10/24 06:46

> Searchモデルを作成し、 > ・keyword > ・keyword_count > というカラムを作るようなイメージなのでしょうか? テーブルの作成はそれでいいと思います。加えて最終更新時間もあっても良いかもしれませんね。 アプリ側のロジックですが、 集計は対話処理(ユーザーアクセス)ではなく、順次処理(バッチ処理)で 実装されるべきだと思います。Rails(ruby)でバッチ処理を実装するには、 wheneverというgemを使うのが便利そうですね。 参考: Railsのバッチ処理: whenever http://qiita.com/icb54615/items/ec84f2ed150909e56274 5分ごとに、アクセスログを確認しに行き、 集計した検索キーワードとその数をSearchテーブルに追加代入します。 ユーザーに注目検索ワードを見せるときは、 RailsのページからSearchテーブルの値を取得し、 普通に見せるだけです。 要するに、ユーザーに検索ワードを見せる部分と、 検索キーワードデータを集計する処理は完全に独立しています。 という感じでイメージ沸きますか?
kento2543

2015/10/24 13:04

丁寧にご回答くださりありがとうございます。 おかげで、イメージが湧きました! これでスムーズに実装できそうです。 お付き合い頂きありがとうございました^^
kento2543

2015/10/24 13:05

whenever というgem はすごく良さそうです! いろんなところで活用していきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問