14

一部のアクション (クリックなど) のリアルタイム統計を特徴とするプロジェクトに取り組んでいます。クリックするたびに、日付、年齢、性別 (これらは Facebook から取得)、場所などの情報が記録されます。

これらの情報を保存し、リアルタイムの統計に使用するのに最適な場所について話し合っています。集計統計を表示します。たとえば、クリック数、男性/女性別のクリック数、年齢層別のクリック数 (例: 18-24、24-30...) などです。

このサイトではどこでも MongoDB を使用しているため、同僚は、統計も保存する必要があると考えました。ただし、データ集計などの操作を行う場合は SQL の方が優れていると考えているため、このタスクには MySQL (またはおそらく Drizzle) などの SQL ベースのデータベースを好みます。SQL を解析するオーバーヘッドはありますが、ここでは MySQL/Drizzle が実際には No-SQL データベースよりも高速である可能性があると思います。また、INSERT DELAYED クエリを使用する場合、挿入も遅くありません。

JOINS を実行したり、複数のテーブル/コレクションからデータを収集したりする必要はないことに注意してください。したがって、データベースが異なるかどうかは気にしません。ただし、スケーラビリティと信頼性には気を配っています。私たちは(うまくいけば)非常に大きくなるものを構築しており、スケーラビリティを念頭に置いてコードのすべての行を設計しました.

これについてあなたはどう思いますか?このために、MySQL/Drizzle よりも MongoDB を好む理由はありますか? それとも無関心ですか?あなたが私たちだったら、どちらを使いますか?

ありがとう、アレッサンドロ

4

2 に答える 2

13

そのため、BuddyMedia はこの一部を使用しています。Gilt Groupe は、Hummingbird (node.js + MongoDB) を使ってかなりクールなことを行いました。

ソーシャル メディア分野の大手オンライン広告主で働いたことがある私は、リアルタイム レポートが本当に苦痛であることを証明できます。1 日 5 億のインプレッションを「ロールアップ」しようとすることはすでに困難ですが、リアルタイムで実行しようとするとうまくいきましたが、いくつかの重大な制限がありました。(実際には5分遅れたようです:)

率直に言って、この種の問題は、私が MongoDB を使い始めた理由の 1 つです。そして、私だけではありません。人々は、サーバー監視集中ログ、ダッシュボード レポートなど、あらゆる種類のリアルタイム分析に MongoDB を使用しています。

このタイプのレポートを作成する際の真の鍵は、MongoDB ではデータ構造が完全に異なることを理解することです。「集計」クエリを回避するため、クエリと出力チャートが異なるものになります。クライアント側で追加のコーディング作業がいくつかあります。

MongoDB でこれを行うための正しい方向性を示すキーは次のとおりです。次のデータ構造を見てください。

{
  date: "20110430",
  gender: "M",
  age: 1, // 1 is probably a bucket
  impression_hour: [ 100, 50, ...], // 24 of these
  impression_minute: [ 2, 5, 19, 8, ... ], // 1440 of these
  clicks_hour: [ 10, 2, ... ],
  ...
}

ここには明らかにいくつかの微調整、適切なインデックス、おそらくデータ+性別+年齢を_id. しかし、これは MongoDB を使用したクリック分析の基本構造のようなものです。インプレッションとクリック数を更新するのはとても簡単{ $inc : { clicks_hour.0 : 1 } }です。ドキュメント全体をアトミックに更新できます。そして、実際に報告するのはかなり自然なことです。時間単位または分単位のデータ ポイントを含む配列が既にあります。

うまくいけば、それはあなたを正しい方向に向けています。

于 2011-04-30T23:31:46.843 に答える
4

MongoDB はこの種の用途に最適であり、MySQL よりも確実に高速になりますが、MySQL がどれほど強力であるかを過小評価しないでください。多くの企業がそれを使用して分析ツールを構築しています。

BuddyMedia の Patrick Stokes による、MongoDB を分析システムにどのように使用したかについてのプレゼンテーションをご覧ください。

http://www.slideshare.net/pstokes2/social-analytics-with-mongodb

于 2011-04-30T01:29:58.400 に答える