タグ

mongodbに関するyuisekiのブックマーク (202)

  • 日時を使った検索がうまくいかない(回避案) - stog's blog

    前回(http://d.hatena.ne.jp/stog/20100526/1274899622)の続き。 MongoDBで日時を使った検索をするとき、1970-01-01より前の日付がうまく扱えない件について、自分が使い方を間違っているのか、そういう仕様なのか未だに分かっていない。。 なので、以下のように日付をタイムスタンプとして扱えば良いのかも。 テストデータ dummy.tsv name type sex birthday おがわ human M 1980/11/03 たかはし human F 1974/02/20 たなか human M 2003/01/15 さとう human F 1960/10/05 ポチ dog F 2005/06/07 タロ dog M 1995/08/08 タマ cat F 2008/12/24 ミケ cat M 1998/12/25 John huma

    日時を使った検索がうまくいかない(回避案) - stog's blog
    yuiseki
    yuiseki 2012/03/19
    date型をunixtimeの整数型で保存して範囲指定
  • mongodbの真の売りは性能にあらず

    主にfacebookにつぶやきまくる毎日。 noteとかzenn.devにも書いてるので、こっちはあんまり更新してません。 最近あんまりmongodb触ってません。 以前の案件でのmongodbは近日停止しちゃうし、現在従事してる案件はredisです。 なんでredis?っと思いましたが、半年も前から決めちゃってる話で、 性能で選んだらしい。色々調べてみるとそれなりには納得。 http://blog.brandonc.me/2011/11/memcached-vs-redis.html 色々まとまってるのは上記ですね。中国語ですが。 #自分で測定する時間と元気は今はありません。済みません。 性能測定上は、redisはmongodbより3倍速いってことなのでしょう。 実際そうなのでしょう。 ただしmongodb経験者からみると、redisは機能が低すぎてビビります。 「データベース番号」とか

  • herokuで無料のimage uploaderを作る

    herokuで無料のimage uploaderを作る herokuは非常に便利ですが、read onlyなのでアップローダーを作ったりできません。 もしやろうとするとS3を使った方法が一般的のようですが、若干利用料金がかかってしまいます。 なので無料で作れる方法を考えてみました。 herokuでは画像を直接アップすることはできませんが、DBに直接保存することができます。 しかしherokuのデフォルトのものは、5MBしかありません。 そこでmongolabという、mongodbを240MBまで無料提供してくれるサービスを利用します。 なおmongolabはherokuにadd-onとして提供されているため、セットアップは簡単です。 githubにファイルをあげておいたので、参考にしてください。 https://github.com/face-do/heroku-image-uploade

    yuiseki
    yuiseki 2012/03/18
    画像をDBの無料ストレージ分にバイナリで保存するmongolabを利用することで240MBまで保存可能
  • シェル 概要 - Docs-Japanese - 10gen Confluence

    based on v49 (2010/10/04 更新) - オリジナル シェルの起動 このシェルは、標準的なMongoDBの配布物に含まれます。シェルを起動するためには、配布物のrootディレクトリに入り以下のようにタイプします。 mongo_distribution_root/bin を PATH に入れると、 mongo だけでどこからでもタイプでき便利かもしれません。 パラメータ無しで起動すると、ローカルマシンのデフォルトポート(27017)で動いている "test" という名前のデータベースにアクセスしにいきます。 db コマンドでどのDBに接続しているか確認できます。

  • Mongoでのデータ更新 - Docs-Japanese - 10gen Confluence

    save() で、Mongoシェルの中でドキュメントを更新する 前のセクションで示されているように、 save() はコレクションにドキュメントを保存するために使われます。 save() をコレクション内の既存ドキュメントを更新するためにも使えます。 前のセクションの example データベースをここでも使いましょう。まず、 新しい情報を {name:"mongo"} に加えましょう。 > var mongo = db.things.findOne({name:"mongo"}); > print(tojson(mongo)); {"_id" : "497dab624ee47b3a675d2d9c" , "name" : "mongo"} > mongo.type = "database"; database > db.things.save(mongo); > db.things.fi

  • findAndModifyコマンド - Docs-Japanese - 10gen Confluence

  • アップデート - Docs-Japanese - 10gen Confluence

    Based on v72 (2010-11-14更新) - オリジナル MongoDBは、ドキュメント全体を入れ替える通常のアップデートと、アトミックでin-place(その場で)のアップデートをサポートします。 update() update() は、与えられた条件にマッチするドキュメント全体を新しいオブジェクトで置き換えます。一部の項目だけ更新したい場合には、下記のmodifierを使います。 これがMongoDBの update() のシンタックスです。 db.collection.update( criteria, objNew, upsert, multi ) 引数: criteria - アップデートするレコードを選択するためのクエリー objNew - 対象のオブジェクトを、アップデートするオブジェクト、または $オペレータ($incなど) upsert - レコードが存

  • 第3回 MongoDB勉強会 ダイジェスト

    「第3回 MongoDB 勉強会 in Tokyo」 : ATND 先週土曜日(2011年5月14日)にフューチャーアーキテクトさんのセミナールームにて行われたMongoDBの勉強会に行ってきました。 MongoDBの仕様・機能などの体系的な話からチューニングの話、開発に利用する話、プロダクションとして運用している話と、バランスよくまとまっていてとても勉強になりました。 RDBとの違いや特有の挙動をきちんと把握して利用すれば、十分プロダクションで利用出来るというビジョンが見えました。 詳細は各発表者の方のスライドを見るとわかると思いますが、当日会場でメモしたものでダイジェスト的にまとめました。 MongoDB勉強会は毎月開催(予定)しているそうなので、興味を持たれた方は是非参加して見てください。 MongoDBコミュニティー:MongoDB JP | Google グループ 【発表1】Mo

    第3回 MongoDB勉強会 ダイジェスト
  • MongoDB+RubyでJOIN的な事をすると、どんな場合にどんな問題が起きるのか。

    05 November 2011 お断り 以下の記事は、公式のRubyドライバを使うとそうなる、という話です。 Rubyにおいても、もっと上手いやり方があるかもしれません。 独断的に書いていますが、MongoDBを使い始めてまだ日が浅いので、全般的に知識が間違っている可能性があります。その場合はごめんなさい。そしてそっと教えて下さい。 ヤバイ。レスポンス性能ヤバイ。 先日、頑張ってこういうサイトの試験的公開にこぎつけたんだけれども、レスポンス性能が0.5res/secを切っていた。 ヤバイ。 何がヤバイのか そこでまず、MongoDBのクエリがまずいんじゃないかと疑った。結果的に最もヤバイのはRailsのView構築コストだったんだけど、クエリもそれなりに問題点があった。今日はそのクエリの部分の話。そして最初に結論を簡単に言うと、 MongoDBは、RDBMSにおけるJOIN的なこと=「参

  • スキーマデザイン - Docs-Japanese - 10gen Confluence

    導入 Mongoでは、リレーショナルデータベースのデザインでするような"正規化"はそれほど必要ありません。サーバサイドでの"join"がないからです。一般的には、1つの最上位のオブジェクトレベルに対して、1つのデータベースコレクションを作ることになるでしょう。 すべての"class"について、コレクションを作ることはあまりしません。代わりにembedオブジェクトを使います。例えば、下記の図では、studentsとcoursesの2つのコレクションがあります。studentドキュメントは、courseコレクションを参照する"address"ドキュメントをembedします。 scoreを他のテーブルに入れ、外部キーとしてstudentテーブルにリレーションを持つことになるであろうリレーショナルなスキーマと対比してみてください。 Embed (組み込み) vs. Reference (参照) M

  • 大量のコレクションを扱う - Docs-Japanese - 10gen Confluence

    Based on v6 (2010-11-02更新) オリジナル 場合によっては、一つのコレクションに情報を格納するより、複数のコレクションに分けるのも一つのテクニックです。これをすることで、オブジェクト間で同じデータを持つ必要がなくなりますし、キーについているインデックスも取り除けるかもしれません。さらに大切なのは(場合によっては)、パフォーマンスのために、グループ毎にデータがクラスタリングされることです。 たとえば、データベースにログのためのオブジェクト/ドキュメントを格納することを考えてみてください。複数の種類のログを格納したいです(開発ログ、デバッグログ、操作ログ、etc)。 ここで、一つの'logs'コレクションにそれらすべてを格納することも可能でしょう。例えば,

  • MongoDBをpythonから利用する - Y's note

    MongoDB 特徴 アメリカの10gen社によってC++で書かれたドキュメント指向データベース。 DBへのアクセスはJavascriptによって行う。 ドキュメント指向データベースとは、自由なデータ構造のドキュメントを登録する事が可能。 MongoDBのデータベースはそれぞれ独立している。 テーブルの構造を事前に決めないのでスキーマレス。 1つのデータベースには1つ以上のコレクションとコレクションにはドキュメント(オブジェクト)から成り立つ。 コレクションとはドキュメントのグループ。RDBMSのテーブルに相当。 ドキュメントとは登録データ(オブジェクト)。 RDBMSにオブジェクトを登録することはプログラムが複雑化するが、ドキュメント指向データベースならオブジェクトをそのまま保存。 ドキュメント指向データベースに他にCouchDBがある。 RDMBSと比較して簡単にスケールアウトできる仕

  • Webクローラフレームワーク Anemone の紹介

    はじめに Anemoneはrubyで作られたWebクローラフレームワークです。実行した環境は Max OS X 10.6 です。 特徴は The multi-threaded design makes Anemone fast. The API makes it simple. And the expressiveness of Ruby makes it powerful です。 意訳するとマルチスレッド対応でAPIがシンプルなとことが売りという感じでしょうか。 クライアントのプログラムがシンプルに記述出来てCLIで実行出来るので他の(言語の)プログラムとの連携が取りやすい所が気に入り試してみる事にしました。 紹介記事:クローラーを作るためのフレームワーク「Anemone」 Anemoneのインストール $ gem install anemone lxml,lxslt2 関連でエラーが出

  • 【Ruby】クローラーフレームワークAnemoneのStorageにMongoDBを使う | ITベンチャーで働くエンジニアのメモ帳

    お久しぶりです。 自社サイトのリニューアルに集中して、すっかりアウトプットを怠ってしまっていました。 友人に生きてるのかと心配されるほど静かでしたが 生きています。息してます。 もうブログの更新も1ヶ月とまっていたんですね さて、今回は前回のエントリ【Ruby】サイトをクロールするライブラリAnemoneをインストールして動かしてみる (07/26)でも紹介したAnemoneについて書きたいと思います。 以前紹介したデフォルトの方法だとクロールしている過程のデータ(ページの内容とかURLとか)はメモリ、つまり普通のハッシュにのせて処理を進めていきます。 クロールするページが増えれば増えるほどメモリリソースを使ってしまって途中でプロセスがささるという現象にたびたび困っていました。 Anemoneに処理の内容を別のストレージ(mongodbやtokyocabinetなど)を利用することが出来る

    【Ruby】クローラーフレームワークAnemoneのStorageにMongoDBを使う | ITベンチャーで働くエンジニアのメモ帳
  • 最近のタイムライン保存事情

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    最近のタイムライン保存事情
  • R meets MongoDB - 元データ分析の会社で働いていた人の四方山話

    最近、割と大きめなデータをRで扱う際に、どのようなソリューションがいいか色々と考えています。 ここでのソリューションは並列計算云々という観点ではなく、大きめのデータから必要なデータをさっくりと用意して、解析フェーズに簡単に入っていくために、という観点です。 1つは有名すぎるbigmemoryというソリューションがあって、これは今後浸透していくんだろうなぁとは思いつつ、bigmemoryではデータ型がbig.matrixという特殊なものになってしまうので、既存のMatrixやdata.frameを使ったパッケージの関数が使えなくなってしまう*1という点が微妙だなぁと思っています。 そんな時に、Twitterのtimellineを眺めていたら、MongoDBのR driverができたとかいうtweetを見かけました。 MongoDBはかなり柔軟に色々できますし、何より今アツいトピックの1つです

    R meets MongoDB - 元データ分析の会社で働いていた人の四方山話
  • logger: MongoDB のクエリーいろいろ

  • 集約 - Docs-Japanese - 10gen Confluence

    based on v43 (2010-10-05更新) - オリジナル Mongoには、 count, distinct と group by 操作をサーバーサイドで実行するファンクションがあります。   さらに集約をするために MapReduce を使うこともできます。 count count() は、コレクション内で、クエリーにマッチするオブジェクトの件数を返します。ドキュメントセレクターが渡された場合、マッチするドキュメントの件数が返されます。 size() は count() と似ていますが、 limit() と skip() をクエリーで指定することができます。

  • MongoDB:MapReduceの手続きを外部jsファイルに保存して実行する方法 · DQNEO日記

    MapReduce処理を外部ファイルとして保存する ファイル名:count_by_hours.js // accesslogを時間帯別に集計して、 // 結果を別コレクションに保存するMapReduce //出力先コレクション名を定義 var colname = 'countbyhours'; // 自作ユーティリティ関数 var JSTDate = function (str) { return ISODate(str + "T00+09:00"); }; var getYMDH = function (d) { d.setSeconds(0); d.setMilliseconds(0); d.setMinutes(0); yyyy = d.getFullYear(); mm = d.getMonth() + 1; dd = d.getDate(); hh = d.getHours();

    MongoDB:MapReduceの手続きを外部jsファイルに保存して実行する方法 · DQNEO日記
  • MongoDBで、日付の期間を指定して検索する方法 · DQNEO日記

    RDBMSの場合 SELECT * FROM userlog WHERE timestamp BETWEEN '2011-11-01' AND '2011-11-02' ORDER BY timestamp; Mongo Shellの場合 var query = { "timestamp" : { "$gte" : ISODate("2011-11-01T00:00:00+09:00"), "$lte" : ISODate("2011-11-02T00:00:00+09:00") } }; db.userlog.find(query).sort({timestamp:1}); 境界値を含みたくない場合は、"$gt","$lt"と書きます。 var query = { "timestamp" : { "$gt" : ISODate("2011-11-01T00:00:00+09:00"),

    MongoDBで、日付の期間を指定して検索する方法 · DQNEO日記