タグ

集計に関するishiducaのブックマーク (5)

  • MapReduce - Docs-Japanese - 10gen Confluence

    shard環境中では、すべてのshardで並行してデータ処理が走ります。   (注意: 2010/2/2: shard内でのmap/reduceはペンティング中ですが、すぐに戻ります) map/reduce はデータベース [command] を経由して、呼び出されます。   データバースは一時的なコレクションを出力結果用に作成します。この一時的なコレクションは、クライアントのコネクションが閉じたとき、または明示的にdropされた場合削除されます。また、永続的な出力用のコレクション名を指定することもできます。  map と reduce ファンクションはJavaScriptで書き、サーバ上で実行されます。 コマンドの文法: db.runCommand( { mapreduce : <collection>, map : <map ファンクション名>, reduce : <reduce フ

  • ドキュメント指向データベースMongoDB [9] - オブログ

    こんにちは、ursmです。 今回はMongoDBの分散処理機構、MapReduceについてご紹介します。 MapReduceについてのごく簡単な説明 とにかくたくさん要素が入っている配列を考えてみます。 array = [1, 3, 5, 2, ...] この配列について、値がそれぞれ何回出現したか数え上げるにはどうしたらいいでしょうか。普通にぐるぐる回してカウントする、というのが思い付きますね。 counts = Hash.new(0) array.each do |i| counts[i] += 1 end counts #=> {1=>1034, 9=>996, 8=>962, ...} さて、もし要素が1億個あったら、はたまた1兆個あったらどうしましょうか。配列をいくつかに分けてそれぞれ数え上げ、その結果を足し合わせる…という風にすれば結果は一緒になるはずですね。それぞれの配列を数

    ishiduca
    ishiduca 2012/09/02
    emit()の第一引数はキーで、これを元にドキュメントが分割されます。第二引数は任意のデータで、後述するreduce関数に渡されます
  • MongoDB : サルでもわかるMapReduceその2:ログの時間別集計を行う · DQNEO日記

    RDBMSでは下記のようなSQLになると思います。(PostgreSQLでの例) SELECT to_char(timestamp, 'yyyy-mm-dd HH24'::text) AS ymdh ,count(*) FROM accesslog WHERE '2011-12-01' <= timestamp AND timestamp < '2011-12-02' GROUP BY ymdh ORDER BY ymdh ; MapReduceを実行する // 日標準時を扱うためのユーティリティ関数 var JSTDate = function (str) { return ISODate(str + "T00+09:00"); }; // 日付範囲指定で対象を絞る。 // このように一時変数に記憶させておくと便利。 var query = { "timestamp" : { "$gt

  • MongoDB : サルでもわかるMapReduce · DQNEO日記

    まずは「集計ができる」と覚えておきましょう。 最初はこれだけで十分でしょう。 利用事例 ある日、ピカチューがつぶやきサービスでつぶやき始めました。 ピカチューのつぶやきに対して、仲間からたくさんの「いいね!」ボタンが押されました。 あなたはつぶやきサービス管理人として、ピカチューのつぶやき数と、ピカチューがゲットした「いいね!」のトータル数を集計してみましょう。 準備 Mongoクライアントを起動して、DBを作成しましょう。 ./mongodb/bin/mongo MongoDB shell version: 2.0.1 connecting to: test > use sample; switched to db sample サンプルデータ ピカチューが3回つぶやいて、「いいね!」がたくさんつきました。 > db.entries.save( {username:'pikachu',

  • MongoDBのmap/reduceを試してみる。 - stog's blog

    以前(http://d.hatena.ne.jp/stog/20100531/1275317576)作成したコレクションをmap/reduceを使って"type"別に集計してみる。 コレクションの中身はこんな感じ。 $ mongo mytest MongoDB shell version: 1.4.4 url: mytest connecting to: mytest type "help" for help > > db.members2.find() { "_id" : ObjectId("4c03c632b4742d2998000000"), "birthday" : 342057600, "type" : "human", "name" : "おがわ", "sex" : "M" } { "_id" : ObjectId("4c03c632b4742d2998000001"), "b

    MongoDBのmap/reduceを試してみる。 - stog's blog
  • 1