MapReduceの処理は、はじめのうちはインタラクティブシェルで試行錯誤することになると思います。 しかしシェル上でコードを書く場合、繰り返し実行するのが不便だったり、コードをバージョン管理(Git/Subversion)システムにコミットできないとういデメリットがあります。 いろいろ試してみて手法が固まってきたら、JSコードをファイルとして保存した方がよいでしょう。 例えば、アクセスログの時間帯別集計をするMapRedcue処理を、下記のようにJSファイルとして保存します。
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
まずは「集計ができる」と覚えておきましょう。 最初はこれだけで十分でしょう。 利用事例 ある日、ピカチューがつぶやきサービスでつぶやき始めました。 ピカチューのつぶやきに対して、仲間からたくさんの「いいね!」ボタンが押されました。 あなたはつぶやきサービス管理人として、ピカチューのつぶやき数と、ピカチューがゲットした「いいね!」のトータル数を集計してみましょう。 準備 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',
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
こんにちは。アメーバ事業本部のブログDivでエンジニアをしている@ygenkiと申します。 今回は、2010年12月末から2011年3月にかけて開発したモバイルソーシャルゲーム(以下、モバイルゲーム)で導入したMongoDBの話をさせていただきたいと思います。 MongoDBについては、すでに当エンジニアブログで津田氏によって紹介されております。 ドキュメント指向データベース「MongoDB」 ■MongoDBを使った理由 今回のゲームは私にとって2つめのモバイルゲーム開発になりました。 前回の開発ではMySQLを使用しておりましたが、モバイルゲーム開発の以下の特徴からMongoDBを採用いたしました。 ○開発効率の向上 モバイルゲーム開発は短期間での開発が求められ、ゲームという特性上仕様変更が頻繁に行われます。スキーマレスであるMongoDBはデータ構造の変更に柔軟に対応する事ができると
タイトルはわかりやすさ重視でつけたのでそれSQLじゃないよというのは承知の上です。 Attacking NoSQL and Node.js: Server-Side JavaScript Injection (SSJS) SSJS whitepaper(PDF) JSONをevalで作るようなのは論外として、NoSQL Injectionって項目が面白かったのでメモ。 まずMongoDBにはfind()っていうのがあるんですが、一般的にはdb.find({x: 42})のようにオブジェクトを渡してxプロパティが42のレコードを取得する、といった用途に使います。が、db.find("this.x == 42")のように文字列を渡しても同じ結果が返ってきます。これはMongoが受け取った文字列をevalしてるせいです。試しにmongoコンソールでdb.find("while(1){};retu
こんにちは。モリフジです。 MongoDB大好きです。 MongoDBはdocument指向の分散DBで、shardingやreplicationの仕組みを備えている非常に使い勝手がいいデータベースです。 MongoDBはMySQLやPostgreSQL、HBase、Hiveと同様にinteractive shellを備えているのですが、これが結構いろいろできることをご存じない方は多いかと思いますので、紹介したいと思います。 mongo – The Interactive Shellにいろいろと書いてあるのですが、定常的なcronにするには使い勝手がいいとは言えません。 また、MongoはJavaScriptエンジンを内包しており(現在はMozillaのSpiderMonkeyがJavaScriptエンジン。src的にはv8の切り替えの準備も進んでいます)、JavaScriptでロジック
{"title": "アクセスログをできるだけいろいろ見る時のmapreduce + ニフティクラウドでの構築パフォーマンスを初心者からわかりやすく", "author": "Muddy Dixon", "twitter": "@muddydixon", "place": "第2回 MongoDB JP 勉強会 in Tokyo"} 自己紹介 大学/大学院: 自然言語処理:形態素列検索・置換システム 言語発達の計算機シミュレーション(ElmanNet+SOMみたいな) 就職: 検索エンジン(の広告最適化とか コンテンツマッチエンジンの設計開発とか エンジニアサポートの中の人とか データマイニング部門個人 取り組み サービスが死ぬほど多い&&老舗なので、近代的な解析基盤が無い サービスが死ぬほど多い&&老舗なので、ログフォーマットが素敵 むりくり合わせたために、GETパラメタがカオスになって
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
1. ワンライナーで。 $ echo 'show dbs;' | mongo MongoDB shell version: 1.6.3 connecting to: test > show dbs; admin local test > bye 簡単ですね。 2. JSファイルを食わせて。 以前のエントリと同様に既存のデータをMapReduceで集計してみます。 以下をmapReduce.jsとして作成します。 var m = function(){ this.members.forEach( function(z) { emit( z.gender , { count : 1 } ); } ); }; var r = function( key , values ){ var total = 0; for ( var i=0; i<values.length; i++ ) { total
MongoDB Ruby Driver Tutorial This tutorial gives many common examples of using MongoDB with the Ruby driver. If you're looking for information on data modeling, see MongoDB Data Modeling and Rails. Links to the various object mappers are listed on our object mappers page. Interested in GridFS? See GridFS in Ruby. As always, the latest source for the Ruby driver can be found on github. Installation
2011-09-14 MongoDB の歴史(MongoDB 2.0 まで) #mongodbjp ラベル: MongoDB ツイート つい先日の9月12日、MongoDB 2.0 が正式にリリースされました。 「2.0 から始める MongoDB」 という記事を書くにあたって、MongoDB 2.0までの遷移を調べていたのですが思いのほか濃い内容になってしまい、せっかくなのでここで皆さまに共有します。 ~2008年 Githubのレポジトリを見ると、ファーストコミットは2007年10月20日のこと。"first commit" というメッセージと共に30ファイル、計約2000行のコードがコミットされています。いつから開発が始まったかは定かではありませんが、2007年後半からプロジェクトがスタートしたと推測できます。 (正確な情報をご存じの方がいましたら、教えてください。) Git
一部の方から“SymfonyのMongoDBの人”などと呼ばれたりしますが、実はSymfonyもMongoDBも業務では使っていない、という痛い感じの @madapaja です。 大事なことは最初に言う。という事で、宣伝から始めます。 ここ1年で急伸している MongoDB。日本でもMongoDB JP(MongoDBの日本ユーザー会)が去年の11月18日に立ちあがって以来、勉強会やカンファレンス等も開かれ、盛り上がりは加速し続けています。 MongoDBをもっと知りたい、と思ったら、以下のGoogle グループや勉強会にもぜひ参加してください!みんなでMongoDBを楽しみましょう。 MongoDB JP | Google グループ 「第6回 MongoDB 勉強会 in Tokyo」 : ATND(すでに定員オーバーしてますね。。。) と大見得を切ったので、MongoDB
@doryokujinです。この業界で非常に強い影響力を持つ@kuwa_tw氏が某勉強会でMongoDBについてdisられており、このままではMongoDB自身の存続が危ういと思い、急遽ブログ書きました。(冗談ですよ) ザ・ドキュメント〜うまくいかないNoSQL〜 View more presentations from Akihiro Kuwano MongoDBを使っているときに出会うトラブルをうまくまとめてくださった「MongoDBあるある」的な良い資料だと思います。今日はここで書かれているトラブルの解決方法を提示したいと思います。恐らく@kuwa_tw氏は全ての解決方法を知っていながら、同じトラブルへ悩む人のためにあえてdisったのだと思います。 MongoDB はデータベースもコレクションも存在しなければ自動作成してくれる mongoシェルを起動する場合、たいていは $ mong
v1.8でMongoDBはジャーナリングと呼ばれる機能が新たに加わりました。今日はMongoDBのジャーナリングについて、実際にどのような処理が行われているのかを確認しながら、丁寧に見ていくことにしましょう。※なお、ジャーナリングという言葉自身、Mongoにこの機能が実装されるまで深く意識するようなことはありませんでした。解釈の部分で誤りなどがあるかもしれません、その際はご指摘していただけると幸いです。 ジャーナリングによってデータの堅牢性が格段に高まった v1.8でジャーナリング機能が追加されたことによって、シングルサーバーにおけるデータの堅牢性がさらに高まりました。ジャーナリングという言葉は主にファイルシステムの分野においてかなり前から議論され、改善が進められてきた機能です。この意味におけるジャーナリングの目的はファイルシステム全体を保護することであり、そのためにメタデータの整合性を保
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く