中年engineerの独り言 - crumbjp

LinuxとApacheの憂鬱

熟語解析が難しい。。。(もはや走り書きメモ)

修正: x: unigram => o: bigram 勢いで書くとこうだよ・・・ 形態素解析でTokenize後にN-gramで熟語解析しようとしたが、ちと困った。。 日本 維新 の 会これをbigramすると 日本維新 維新の の会となって、これを使ってもう一回Tokenizeすると 日本維新 の…

MongoDBはDBではない。環境である!

勢いでtwiteしたついでに、軽く書いてみた。MongoDBのfindAndModifyは物凄く便利で色々使い方があるのだが $setOnInsertと組み合わせると、お手軽セマフォになるので こんな感じで簡単にJOB管理に使える訳だ。 全ドキュメントを並列に処理する例 このスクリ…

今週末7/28は、大岡山でもんご祭り!

2013納涼もんご祭りここの所、これに掛かりきりです。 遊びに来てくださいな!・参加無料! ・色々面白い発表あり!! ・10gen来るかも? ・プロレスラーあり!?いや、、ホントかよ? いい大人が悪乗りすると怖いね!! 人とお金集めてホントにやっちゃうか…

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…

/proc/[pid]/stat まとめ

いつも忘れるので、まとめておくことにした td { border-bottom: 1px solid #D6E3F7; } stat No フィールド scanf 説明 0 pid %d プロセス ID。 1 comm %s 括弧でくくられた実行形式のファイル名。実行形式がスワップアウトされているかどうかによらず、見る…

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…

ハノイの塔

Jr エンジニア向けにアルゴリズムの勉強会を主催した時のコード Hanoi #!/usr/bin/env ruby ## -*- coding: utf-8 -*- class Poll def initialize @arr = Array.new end def push(v) raise "Could not push : " + v.to_s if @arr.size > 0 and @arr.last <= …

git-repo最高

git-repo が素晴らし過ぎる!複数のリポジトリを組み合わせて使えるのと、リビジョンがちゃんと指定できる所が非常に運用に乗せやすい。(javaの)mavenと同じノリで使えるね。 chefと組み合わせて使う(またはchefを置き換える?)と色々要らなくなるなぁ・…

Rubyのブロックを勉強した

Block Rubyにはブロックという要素があるが、File.open の様に、 値を返却したり、ブロックで扱ったりを両方出来る関数 がふと気になった。 f = File.open("file") f.each {|l| ... } File.open("file"){ |f| f.each {|l| ... } } block_given? こんな関数で…

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領域に書き込まれる。 その後、更にバッ…