丸の内MongoDB勉強会 #3で発表した「MongoDB2.2の新機能紹介」の内容をスライドにまとめました。https://github.com/syokenz/marunouchi-mongodb/tree/master/20120926
05 November 2011 お断り 以下の記事は、公式のRubyドライバを使うとそうなる、という話です。 Rubyにおいても、もっと上手いやり方があるかもしれません。 独断的に書いていますが、MongoDBを使い始めてまだ日が浅いので、全般的に知識が間違っている可能性があります。その場合はごめんなさい。そしてそっと教えて下さい。 ヤバイ。レスポンス性能ヤバイ。 先日、頑張ってこういうサイトの試験的公開にこぎつけたんだけれども、レスポンス性能が0.5res/secを切っていた。 ヤバイ。 何がヤバイのか そこでまず、MongoDBのクエリがまずいんじゃないかと疑った。結果的に最もヤバイのはRailsのView構築コストだったんだけど、クエリもそれなりに問題点があった。今日はそのクエリの部分の話。そして最初に結論を簡単に言うと、 MongoDBは、RDBMSにおけるJOIN的なこと=「参
mongoを実行してやるとシェルのような対話的な感じでJavaScriptのコードが実行できる。 また、JavaScriptのファイルを入力にして実行するすることもできる。 # mongo MongoDB shell version: 1.8.3 connecting to: test > print("hoge") hoge > bye # cat test.js print("hogehoge") # mongo --quiet test2.js hogehoge # しかしここでJavascirptで他のファイルをインポートするrequire文を入れると怒られてしまう。 # mongo MongoDB shell version: 1.8.3 connecting to: test > require("test.js") Tue Feb 7 00:30:53 ReferenceEr
タイトルはわかりやすさ重視でつけたのでそれ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 は使ってみたかっただけ。 先月から「言語処理のための機械学習入門」を読んでいるので、ナイーブベイズ分類器を書いてみました。 「言語処理のための機械学習入門」はホントに説明が分かりやすい良本だった(数式全然分からなくてそっちの勉強からのスタートになったけど・・)。 あと、Wikipediaも詳しいです。 ナイーブベイズは実装が簡単な割によく働くテキスト分類手法です。 メールを自動でフィルタリングとかよく見かけるブログのこの記事と似ている記事はこちら、みたいなことをやりたいときに使えそうなやつです。 ナイーブベイズの説明はググればいくらでも出てくるのでカット。 事後確率P(cat|doc)を求める方法として、多項ナイーブベイズモデルとベルヌーイモデルの二つがあるようなのですが、ベルヌーイモデルの方はまだ理解できてない><ので、多項ナイーブベイズモデル
データストアの新たなカタチとしてNoSQLがブームになっていますが、その中で異彩を放っているのがドキュメント指向データベースである「MongoDB」です。サイバーエージェントでは、このMongoDBを比較的早い段階から実サービスで活用しています。そこで今回はMongoDBの使いどころや利用時の注意点について、サイバーエージェントの3人の技術者にお話を伺いました。 分散処理のしくみを最初から備えるMongoDB リレーショナルデータベース(以下RDB)ほど煩雑ではなく、分散KVS(Key-Value Store)ほどシンプル過ぎない第三のデータストアの1つとして、ドキュメント指向型データベースである「MongoDB」が挙げられます。GNU AGPLv3を採用したオープンソースソフトウェアであり、パフォーマンスが高くスケーラビリティにも優れているという特徴があります。また、JSON(JavaS
一部の方から“SymfonyのMongoDBの人”などと呼ばれたりしますが、実はSymfonyもMongoDBも業務では使っていない、という痛い感じの @madapaja です。 大事なことは最初に言う。という事で、宣伝から始めます。 ここ1年で急伸している MongoDB。日本でもMongoDB JP(MongoDBの日本ユーザー会)が去年の11月18日に立ちあがって以来、勉強会やカンファレンス等も開かれ、盛り上がりは加速し続けています。 MongoDBをもっと知りたい、と思ったら、以下のGoogle グループや勉強会にもぜひ参加してください!みんなでMongoDBを楽しみましょう。 MongoDB JP | Google グループ 「第6回 MongoDB 勉強会 in Tokyo」 : ATND(すでに定員オーバーしてますね。。。) と大見得を切ったので、MongoDB
HomebrewでMongo DBをインストールしてみました。 $ brew install mongodb ==> Downloading http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-1.6.3.tgz ######################################################################## 100.0% ==> Caveats If this is your first install, automatically load on login with: cp /usr/local/Cellar/mongodb/1.6.3-x86_64/org.mongodb.mongod.plist ~/Library/LaunchAgents launchctl load -w ~/Lib
v1.8でMongoDBはジャーナリングと呼ばれる機能が新たに加わりました。今日はMongoDBのジャーナリングについて、実際にどのような処理が行われているのかを確認しながら、丁寧に見ていくことにしましょう。※なお、ジャーナリングという言葉自身、Mongoにこの機能が実装されるまで深く意識するようなことはありませんでした。解釈の部分で誤りなどがあるかもしれません、その際はご指摘していただけると幸いです。 ジャーナリングによってデータの堅牢性が格段に高まった v1.8でジャーナリング機能が追加されたことによって、シングルサーバーにおけるデータの堅牢性がさらに高まりました。ジャーナリングという言葉は主にファイルシステムの分野においてかなり前から議論され、改善が進められてきた機能です。この意味におけるジャーナリングの目的はファイルシステム全体を保護することであり、そのためにメタデータの整合性を保
久々の更新です。MongoDBのドキュメントのReplicationの部分の訳が一応完了しましたので、それに合わせてこのブログでもReplication機能について書いていきたいと思います。まだ解釈の甘い部分も残っていますので、今後もこの部分の勉強を続け修正を行っていきます。また、引き続きAdmin Zoneの訳を進めていくつもりです。 本日のアジェンダです: MongoDBのReplication機能について Master/Slave Replica pair Replica set MongoDBのバックアップ機能について ファイルのバックアップ mongodumpによるエクスポート MongoDBのReplication機能について MongoDBのReplicationは細かく分けると3種類あります。 Master/Slave 典型的なMasterとSlaveの構成です。Maste
短い答え 64bit版です。 長い答え 32bit 版は大体 2GB までのサイズの database までしかサポートしません。 あまりデータサイズが大きくなる予定がない 公開ウェブサービスには使わない MongoDB自体の勉強や小規模な実験用 といった場合には 32bit 版でも構いません。 この制限は特定のcollectionではなくdatabase全体が対象です。 例えばmap/reduce結果の一時collectionなども含まれますので、データサイズが上限に近い状態で運用していると急に溢れる恐れがあります。 一度上限に達すると経験的にはcollectionの削除も含めてほとんど何もオペレーションできなくなりますので注意してください(db.dropDatabase()すらできなくなったことも)。 以下のような場合には迷わず 64bit 版を使いましょう。 メモリが潤沢に積んである
今回は,MongoDBのセキュリティー設定についてまとめる。 現時点で,MongoDBには,極くベーシックなセキュリティー機能が実装されているのみである。 おおまかに言うと,データベースごとにユーザーとそのパスワードを設定し,ユーザーIDなし,あるいは他のユーザーからのアクセスを制限することができる。以下にその手順を紹介する。なお,詳しくは,MongoDBのWebサイトを参照していただきたい。特に以下のページは必読。 http://www.mongodb.org/display/DOCS/Security+and+Authentication http://www.mongodb.org/display/DOCS/File+Based+Configuration 1.認証機能の有効化(ただし,今はやらない) まず,MongoDBは,インストール直後のデフォルトモードとして,認証機能が外され
前回、MongoDBでSNSつくるぞという記事を書いてから随分時間がたってしまいました。単に私がだらけていたということもあるのですが、一番ひっかかって時間を取られていたのが、MongoDBにおけるスキーマ設計の考え方です。 いまだに試行錯誤中ではありますが、現時点において私がこうあるべきと理解しているところをアウトプットしてみたいと思います。 1.One to Many のケース たとえば注文と注文明細のケースを考えてみます。RDBで1対多のリレーションを設計する場合、 というように、注文明細を別テーブルにするのが普通かと思います。しかし、ドキュメント指向のMongoDBにおいては、RDBと違ってオブジェクト内に柔軟なデータ構造を実現できるため、 というように一つのCollection内にデータを埋め込んでしまうのが、パフォーマンスの点からも良しとされています。 ただし、以下の2点について
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く