General InformationDocumentationDeveloper Articles & TopicsCommunity ForumsBlogUniversity
日頃業務なんかでmongodbをシェルからいじってて、「あ”ー、underscore.js使いたい」とかその他諸々機能を拡張したいなと思っている方におすすめ。 meshとは? 正式にはMongo Extended Shellという名前らしい。 以下のライブラリをまとめた便利ツールです。 導入方法 $ git clone https://github.com/skratchdot/mesh.git $ echo 'load("<meshをcloneしたディレクトリ>/mesh/mesh.js");' >> ~/.mongorc.js こんだけです。 含まれるライブラリ underscore.js - ご存知underscore.js underscore.string.js - 文字列操作用ライブラリ moment.js - 日付操作ライブラリ science.js - 科学系演算用ライブラ
12. データ構造 { "_id" : "45feae009015221f", "45feae009015221f" : { "name" : "あきひろ", "job" : { "level" : 15, "exp" : 24 } } } 13年8月1日木曜日 13. データ構造{ "_id" : "45feae009015221f", "45feae009015221f" : { "name" : "あきひろ", "job" : { "level" : 15, "exp" : 24 }, "subjob" : { "level" : 1, "exp" : 1 } } } 13年8月1日木曜日
24. $ npm install mongodb # ドライバーのインストール $ vi index.js $ node index.js # 実行 { name: 'matsukaz', _id: 51f7efbed66a41de0f000001 } var MongoClient = require("mongodb").MongoClient; var url = "mongodb://127.0.0.1:27017/db1"; var data = {name : "matsukaz", age : 34}; // 作成したデータ MongoClient.connect(url, function(err, db) { // 接続 var userColl = db.collection("user"); userColl.save(data, function(err) { /
勢いでtwiteしたついでに、軽く書いてみた。 MongoDBのfindAndModifyは物凄く便利で色々使い方があるのだが $setOnInsertと組み合わせると、お手軽セマフォになるので こんな感じで簡単にJOB管理に使える訳だ。 全ドキュメントを並列に処理する例 このスクリプトをmongo shell をいくつも立てて実行すれば、同一ドキュメントの重複処理を上手く回避して並列処理できるわけ。 foo 処理対照コレクション foo_job ジョブ管理用コレクション // そのドキュメントが処理中か否か判定する function isVacant(id){ var prev = db.foo_job.findAndModify({ query: {_id:id}, update:{ $setOnInsert:{ tm:ISODate()}}, upsert:true }); if (
1年くらい前に、MongoDBにJSONオブジェクトをドキュメントとして保存する方法について調べたことがあります。そのまま眠っていた短いメモを公開します。「最新の状況を確認してから」とも思ったのですが、そうするとメモは永久に眠ったままになりそうなので確認してません。という次第で、現状との食い違いがあるかもしれません。 まず、2010年に書いた記事「唐突に MongoDB の話」の「BSON」、「BSONとJSONの違い」という節で次の注意をしています。 BSONは名前も構造もJSONと似てますが、別物です。 BSONを「JSONのバイナリーフォーマット」と思うと大間違い。データモデルが違います。 そのとき指摘しておいたギャップは: BSONの数値は、「32-bit signed integer」、「64-bit signed integer」、「64-bit IEEE 754 floati
開発部 川野です。今週木曜日(7/25)、キャノン IT ソリューションズ様主催の Sencha セミナーでお話させて頂くことになり、デモンストレーション用に表題のアプリを作成しました。Node.js と Sencha Touch を組み合わせてアプリを作りたい方の参考になる気がしたので、ソースコードを公開します。 Photo Sharing App(ソースコード): https://github.com/kawanoshinobu/photo-sharing-app Photo Sharing App(デモ): http://photo-sharing.herokuapp.com Sencha セミナーでは、このアプリの作成方法を解説します。開催時間が平日昼間なのですが、もしご都合のつく方は、ぜひぜひお越し下さい!参加費は無料です ^^ お申し込みは以下のサイトから ↓ Senchaセミ
分散パフォーマンステスト関係を書こうと思っていたんですが,よくよく考えたらMongoプラグインについて日本語でまともな記事を書いたことなかったので書きます. このエントリはウィークリーFluentdユースケースエントリリレーの参加エントリです. 概要 MongoプラグインはMongoDBに対するInput/Outputプラグインを提供します.またユーティリティとして,MongoDBのcappedコレクションに対してtailを行うmongo-tailコマンドも付属しています. リポジトリ: https://github.com/fluent/fluent-plugin-mongo MongoDBは内部はBSONですが,API的にはJSONでやりとりしており,また明示的なスキーマもいらないため,Fluentd周辺では集計サーバやテンポラリサーバとして広く利用されています. td-agentには
rubyなれてる人ならはまらないんだろうけど、fluentdでfluent-plugin-mongoを入れてつかおうかなぁと思って gem intall fluent-plugin-mongo して、fluentdを再起動したら下記のように言われるわけです。 **Notice: C extension not loaded. This is required for optimum MongoDB Ruby driver performance. You can install the extension as follows: gem install bson_ext If you continue to receive this message after installing, make sure that the bson_ext gem is in your load path
前回はstatusをカウントするだけの単純な物 実際は、もっと複雑 けどいきなり複雑にしすぎてもついていけない。 そんな私に!! 日別で、アクセスユーザの何割が、特定の条件を満たしたかをとる処理を かる〜く書いてみました。 特定の条件って、またむずかしいんじゃね? その条件は http status の 200と300を発生させ、尚且つ500は発生させていないユーザである事。 コレを今回の解析内容としてみます。 お題を考えるのがめんどかった(自分用なので)で、一旦これで 要は ユーザ1が1日に発生させたstatusが200と300だけであれば合格 ユーザ2が1日に発生させたstatusが200と300と500であれば不合格 とりあえず、データの準備 db.access.save({user_id:'A001',status:200,create_dt:ISODate("2013-06-10
前回はMongoDB Shellからでしたが、今度はJava系の言語からMongoDBを扱ってみたいと思います。 今回行うのは、前回の縮小版です。 http://d.hatena.ne.jp/Kazuhira/20130613/1371127093 はい。 で、対象はJava、Groovy、Scalaで。それではいってみましょう。 *Clojure版も書きました http://d.hatena.ne.jp/Kazuhira/20130901/1378019591 Java Javaは、オフィシャルなドライバが提供されています。今回使ったバージョンは、2.11.1ですね。 Java Driver http://docs.mongodb.org/ecosystem/drivers/java/ Getting Started with Java Driver http://docs.mongod
アプリを支えるFluentd+mongo dbを使った大規模ログ解析 Presentation Transcript アプリを支えるFluentd +MongoDBを使った大規模 ログ解析 2013/03/2513年3月25日月曜日 自己紹介 • 田中 勇輔(@csouls) • ハッカーLv.3(ホイミが使えるようになっ た) • 8ヶ月くらい前にユーザ系SIer→Web業界へ 転職13年3月25日月曜日 変化を善とする文化 • 転職して一番変わったことは、周りの人の技 術変化に対する価値観の基準が悪→善になっ たこと • 停滞はゆるやかな死。しかし、変化する方向 を間違え続けるとすぐに死ぬ13年3月25日月曜日 分析 • 変化の方向を決める道標 • 分析基盤も変化(発展)し続ける13年3月25日月曜日 ログ分析基盤 • fluentでログを集めてMongoDBで集計して Ruby o
Mogodb集計 MongoDBの集計機能が便利過ぎて泣けてくるお話し - Yuta.Kikuchiの日記 1月程前にMongoDBを使った集計機能の紹介をさせていただいた@yutakikucです。内容は全く大した事無かったのですが、タイトルで誘導を引っ張って200近いbookmarkを集める事ができました笑。みなさんの参考にしていただけたこと、大変嬉しく思います。今日はMongoDBの集計をもう一歩踏み込んだ内容を紹介して行きたいと思います。題材としてはAggregation FrameworkとMapReduceについてです。因に今回試してみたMongoDB-Versionは2.2.3です。Versionによって挙動が変わると思うので注意してください。 $ mongo --version MongoDB shell version: 2.2.3 Aggregation Framewor
fluentdを多段構成にして、mongodbに出力するところでハマったのでメモ。 上の構成のように、各サーバにfluentd + out_forwardを置き、集約するログサーバにfluentd + out_mongoでmongodbに出力している場合に、上段のfluentdでbuffer_chunk_limitを10mより大きい値にしていると、エラーになることがあります。 まず、out_mongoでbuffer_chunk_limitを10m以内にしないといけない理由は、fluentdからMongoDBへ連携する際の注意点 #fluentdを参考にしてください。 ここで多段構成の場合、上流の buffer_chunk_limitが大きいと上流から大きなサイズのデータの塊が流れてくることがあります。それを受けとったfluentdはそれをそのままoutput pluginに流す実装となって
追記 2/22 毎回微妙に追記していますが、今回も追記です。最後にmongodbのinsert性能について80lines/secで厳しくなった、と書いてますが、環境か設定まわりがあやしいので訂正します。もうすこし検証してみようと思います。 → 検証して fluentd側の設定の問題であることが分かりました。詳しくは、http://blog.stanaka.org/entry/2013/02/22/171053 追記ここまで 最近は、fluentd + mongodb でログを蓄積していろいろ便利に使っているわけですが、数分に一回集計スクリプトを周したり、 GrowthForecast の画面をリロードしまくるのではなく、もっとリアルタイムで見たい! という欲求が募ってきたので、 node.js を使って実装してみました。( https://github.com/stanaka/realti
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く