中年engineerの独り言 - crumbjp

LinuxとApacheの憂鬱

mongodb

All in mongo の形態素解析エンジン

.body .section { margin-left:10px; } .body .section dl{ margin-left:20px; } https://github.com/crumbjp/analysis/tree/master/monmorp About MONMORP MongoDB上で動作する ”とにかくお手軽な 形態素解析エンジンです。 MongoDBが立ち上がってる状態か…

Cockatoo

彼此数年ほど手がけているMongoDBベースのPHP製WEBフレームワーク『Cockatoo』いくつかのサービスで数年間、安定稼働を続けているのでそろそろ自信がついてきました。本来は社内で広めて行きたいのだけど諸般の(非技術的な)事情から暫く身動きが取れない状…

MongoDBのデータファイルを直撃してHadoopでM/Rすると。。

なんかまた、おかしなプロダクトを発見した。https://github.com/groupon/mongo-deep-mapreduce最初、mongo-hadoopと何が違うんだ?と思ったが。。 Move the raw Mongo files into HDFSなんだと!?データファイルを直撃して食うのか!!! またC++ => Java…

今更ながら簡単Sharding構築

Sharding構築手順とポイント 構成 mongos +-----------------+ | 192.168.159.50 | +-----------------+ ConfigDB +-----------------+ +-----------------+ +-----------------+ | 192.168.159.3 | | 192.168.159.4 | | 192.168.159.5 | +-----------------…

MongoDB 2.4 の性能 徹底評価(Memory vs DISK)

大体欲しいデータは揃ったのと、MongoDBの気持ちが解ってきたのでMongoDB2.4の性能調査は今回で最後の予定 実は前回MongoDB 2.4 の性能 徹底評価(レコード長による評価)のFETCHバイト数(1.5GB) 実は今回のOn-memoryデータ vs DISKリードに繋げる事を意図…

MongoDBが適さないケース

> 原文(Why MongoDB is a bad choice for storing our scraped data)私自身はMongoDBを推進する立場なのだが、確かにMongoDBに適さないケースはある。 闇雲に推進しても結局は全員がアンハッピーになるので、この様なネタもどんどん紹介していこうと思う。こ…

MongoDB 2.4 の性能 徹底評価(レコード長による評価)

前回のMongoDB 2.4 の性能 徹底評価の反響が大きかったので続編。 今回の調査対象 ドキュメントサイズ毎の性能を評価する。今回の検証用にベンチを書いた。 性能見積りにも使えると思うので、紹介しておきます。 MongoDB-JP/mongo_bench今回の検証も、Sakura…

NumberLong(64-bit integer) in MongoDB was smaller than I expected...

As you know, the default number type in MongoDB is 64-bit float. number ( 64-bit float) : double fraction 52-bit (Actually meaning 53-bit precision) exponent 11-bit sign 1-bit So "0x20000000000001=2^53+1" will cause overflow. > db.test.sav…

MongoDBの64bit整数型が思ったより小さかった

ご存じの様に、MongoDBの数値型(number)はfloat(64-bit) だ。 number ( 64-bit float) : double 指数部 52 bit(精度は53 bit) 仮数部 11 bit 符号 1 bit なので0x20000000000001=2^53+1は桁溢れを起す。 > db.test.drop() true > db.test.save({i:0x1fffff…

グラフ君

MongoDBの計測結果をグラフ化する為にjavascriptをちょろっと書いた。 hatenaに張れないのが残念だが・・・ MongoDBでレコードサイズ 400b , 4kb , 40kb , 400kb 4mb の時のInsert性能。

MongoDB 2.4 の性能 徹底評価

まとめ 超長くなったのでまとめを上に持ってきた。 巷で言われているチューニングは結構嘘が多い事が解ってきた。 ツール等 workingSet Analyzer は信用ならない。(overSecondsはまあ良い) mongoperfの値は完全に参考にならない。 insert mongoperfの値はi…

Analyze the Analyzer (MongoDB 2.4)

Analyzer problem ? MongoDB Analyzer sometimes retuns below values that is difficult to interpret. RS:PRIMARY> db.serverStatus().mem { "bits" : 64, "resident" : 127, "virtual" : 11292, "supported" : true, "mapped" : 5262, "mappedWithJournal…

MongoDB 2.4 Analyzerをアナライズした!

前回のエントリーで釈然としなかったAnalyzerの戻す値が信用出来ない件。 このままじゃ、安心して使えないので解析した。 MongoDB analyzer 問題 db.serverStatus().mem.resident mongodプロセスが利用している物理メモリサイズ db.serverStatus({workingSet…

MongoDB 2.4 の新クエリーcapped arrayを試した

capped arrayの機能と性能を検証をした。 結論 capped arrayでは配列数が多い場合、明らかにsortが性能劣化する。 (使い難いが)sortを使わない場合は殆ど気にしなくて良いレベルになる。 LRUキャッシュに使うにはちょっと厳しいかもしれない。。 capped ar…

MongoDB 2.4 の新クエリー$setOnInsertを試した

$setOnInsertの機能と性能を検証をした。 結論 $setOnInsertには副作用は無さそう。積極的に使っていきたい。 $setOnInsertの機能 upsertと組み合わせて使う。 upsert レコードが無かった場合はinsertとして働き既にレコードがあった場合はupdateとして働く…

MongoDB2.4新機能 Working Set Analyzer

Working Set Analyzer MongoDB2.4からはサーバリソースの管理・評価にAnalyzerが使えるようになりました。利用方法は既存のコマンドdb.serverStatus()を叩くだけです。 マニュアル 翻訳 workingSet New in version 2.4. Example:output of the workingSet fi…

Scheme design in MongoDB.

非常に参考になるMongoDBのノウハウ集を和訳(&少々所感)しました。内容はデータベースの基本に忠実です。 データサイズを圧縮し、レコードの移動を防ぎ、効率の良いクエリーを発行しろという事です。 突飛な手法では無いので理解し易い。 One of things t…

MongoDB 2.4 認証周り

以前、盛大にハマったので、備忘録です。 コアサーバ keyFileオプションの扱い(2.2から変わったかもしれない。。。) keyFileオプションを指定すると、authオプションも指定された事になる。 つまりkeyFileオプションはレプリカセット・ノード間の認証と、…

MongoDB で isExist

MongoDBでドキュメントがあるか無いか?を調べたい時 原文 Checking if a document exists -- MongoDB slow findOne vs find 参考になったので和訳した One of the biggest optimisations to make MongoDB writes faster is to avoid moving documents by do…

MongoDB2.4 リリース(和訳)

MongoDB 2.4 released を和訳(&少々所感)しました。 和訳 The MongoDB Engineering Team is pleased to announce the release of MongoDB 2.4. This is the latest stable release, following the September 2012 release of MongoDB 2.2. This release c…

時系列データとMongoDB2.4の新機能Hash based sharding

実は数年前(MongoDB 1.6〜1.8の時期)にログをリアルタイムに全てmongodbに叩き込んで期間毎に解析する仕組みを作ろうとして挫折した事がある。理由は幾つかあったのだが主に cappadコレクションでは解析時の負荷とログ投入負荷が重なってしまう。 → 最終的…

MongoDB sharding 関連コマンド

Sharding関連の主要操作 勉強ついでに本家のマニュアルを翻訳しておいた。 が、、3、4日経っても反映されないのな。。。 多分ドキュメントオーナーがサボってて承認してないんだろう。 その内反映されるだろうからいいや。。 バランサーを開始 sh.startBal…

MongoDBのデータファイル同期について

MongoDBのストレージエンジン ココで触れた通り MongoDBは書き込みリクエストを受け付けると、一旦、内部キューにデータを積み、 バックグラウンドスレッド(journal)によって、journalファイルとデータファイルのmmap領域に書き込まれる。 その後、更にバッ…

Mongo ghost sync & slaveDelay

I updated the previous slide that was added slaveDelay and its (serious) probrem !! Ghost sync & slaveDelay 前回のスライドをアップデートして、slaveDelayとその問題を追記しました。 概要 Ghost sync MongoDB replica set のnode間のネットワーク障…

Ghost sync

Ghost sync MongoDBのレプリカセットではデータの書き込みは常にPrimaryに行わる。 各Secondary(slave)は『基本』Primaryから同期する。 ただし、色々な理由でPrimaryから同期出来ない場合は別のSecondaryから同期をする事がある。 なんでこんな事するのか?…

Mongo threads 日本語版

この記事はmongoのソースを読み解きたい人向けです。 それ以外の人には多分有意な情報は無いかと。。また私自身がコードリーディングした時に書き散らしたメモを纏めただけなので 精確じゃなかったり諦めたりした部分もありますので、ご了承ください。 スタ…

Mongo threads

This article is for the man who try to read the source code.I have to make a lot of memos when I read the large percent of the source code.This is the summary of it. Startup sequence Threads Thread name will appear in the log. For instance…

クライアント接続時のmongod (シーケンス)

クライアント接続時の挙動 シーケンス図、第2弾mongodはクライアント毎に1本のスレッドを立てる。この辺りのコードはアッチコッチに飛びまくるので追い難い。 ASIOは昔からビルドすら通らないので無視無視・・・ 最近やっとNOT READY YETって書かれた(苦笑)…

mongodのスレッド構成

最近mongodを解析してるのだけど超複雑なのでテキストメモじゃ駄目だーなので、理解できるまで少しずつ図にしていくつもり手始めにReplicaSetモードのmongodのスタートアップシーケンス。(master/slave等は除外)各スレッドの役割や動作などはこれから解析。…

mongo-hadoop & mahout でドキュメントのクラスタリング(関連付け)

Solrが結構困ったちゃん 全文検索エンジンSolrは便利なのだが、どうもAvailavilityに問題がある様に思う。いや、環境がPoorなのもあるのだけれども GCも、PV負荷も、Indexing関連処理も して無い時間帯なのにクエストが刺さる事が多々ある! 今までは色々な…