タグ

mongodbに関するhohoho_ho2005のブックマーク (328)

  • Kubernetesを用いたMongoDBクラスタの構築と運用 - OPTiM TECH BLOG

    はじめまして。プラットフォーム事業部の栗原です。 業務では、主にCloud IoT OS チームにてSRE活動を行っています。 今回は、Cloud IoT OS(以下CIOSと記載します)で利用しているMongoDBクラスタの構築と運用についてお話をします。 構築に至った経緯 自前運用を行うにあたり考慮すべき点 構成について ReplicaSet シャーディング configサーバー mongosサーバー(と Load Blancer) 読み書きの流れについて 構築について 物理構成の検討 物理構成 スケールアウト 運用 監視 バックアップ さいごに 構築に至った経緯 もともとは Azure CosmosDB の MongoDB APIを用いていたのですが、 CosmosDBの一部仕様がCIOSでのユースケースと合っていないという課題がありました。 いくつか存在したのですが、大きくは以下

    Kubernetesを用いたMongoDBクラスタの構築と運用 - OPTiM TECH BLOG
  • MongoDB 4.0 探検日記 - astamuse Lab

    MongoDBと過ごした8年を振り返りながら、お気に入りのMongoDBマグカップで濃いめのモカを啜っています。 たのしくテンポの良い開発、フラグメンテーションとの長い夜、主語の大きいロック、星の数ほどのMongoDBステッカー、高嶺の花のMongoDB公式Tシャツなどが走馬燈のように目の裏を駆け巡ります。 今年6月、ついに昨年10月のNasdaq上場後初のメジャーバージョンアップであるMongoDB 4.0がリリースされました。 この成長著しいMongoDBにキャッチアップすべく、私fdkはMongoDB 4.0の探検に出かけました。*1 MongoDBについて MongoDBは2007年より10gen(現MongoDB Inc.)により開発され、2009年の初版リリース以来、継続的にリリースを重ねているドキュメント指向データベースです。階層構造を表現できるドキュメントと呼ばれるデータ構

    MongoDB 4.0 探検日記 - astamuse Lab
  • 基本用語の解説付きインデックス・チューニング入門 - KitchHike Tech Blog

    B-Tree・カーディナリティ・実行計画・オプティマイザ・プロファイラ データベースのインデックス・チューニングで出てくる用語は、O/Rマッパーに慣れていると聞きなれない言葉かもしれません。 記事では用語を解説しながら、RailsとMongoidでのインデックス・チューニングの一歩として基的な手順をご紹介します。 はじめに こんにちは。KitchHikeエンジニアの小川です。 Railsのようなフルスタックフレームワークを使っていると、データベースを気にする機会はだいぶ減るのではないでしょうか。ActiveRecordのようなO/Rマッパーが上手く抽象化してくれるおかげで、生のSQLを書く必要はほとんどなくなりました。 一方でその抽象化は、データベースを見えにくくしているともいえます。データベースを直接見る機会が減ってしまうことで、知らず知らずのうちにトラブルの原因となっていることも少

    基本用語の解説付きインデックス・チューニング入門 - KitchHike Tech Blog
  • Nginx + Node.js + React.js. + Mongodb を Docker で構築する - あいつの日誌β

    あらすじ Nginx + Node.js + React.js + Mongodb で Web Application の構築手順を説明する必要があるのですが、Dockerfile をドキュメントとして扱う事になりました。 % docker --version Docker version 17.06.2-ce, build cec0b72 % node -v v8.1.0 % create-react-app --version 1.4.0 % mongo --version | head -n 1 MongoDB shell version v3.4.9 準備 一応 Todos アプリのような感じの Web API を backend で用意して React がそのデータを描画する、までの簡単なサンプルアプリを作成しつつ Docker について説明します。 先ずは以下のコマンドを実行し

    Nginx + Node.js + React.js. + Mongodb を Docker で構築する - あいつの日誌β
  • MongoDBを2.4から3.4にアップデートしてパフォーマンスを大幅改善できた話 | CyberAgent Developers Blog

    こんにちは。 スマホアプリのピグパーティでサーバサイドエンジニアをしている阿久津と申します。 2018年1月、ピグパーティで使っているMongoDBを2.4から3.4にアップデートしました。 記事では、その改修内容と、アップデートによるパフォーマンス改善についてまとめます。 1: MONGODBとは MongoDBとは、NoSQLの一つでドキュメント指向のデータベースです。 MongoDBにおいて、各データはドキュメントと呼ばれ、コレクションと呼ばれる集合に対してドキュメントを保存します。 弊社でも複数のプロジェクトで利用されています。 具体的な機能は公式ドキュメントにまとまっています。 2: ピグパーティにおけるMONGODBクラスタの構成 MongoDB2.4でのクラスタ構成図 MONGODB2.4でのクラスタ構成 MongoDB2.4での運用当時、ピグパーティではMongoDBのr

    MongoDBを2.4から3.4にアップデートしてパフォーマンスを大幅改善できた話 | CyberAgent Developers Blog
  • MongoDB のデータ出力ツール mongoexportとmongodumpの比較 | DevelopersIO

    mongodumpでは、インデックスなどを含め、データベースの情報が完全に含まれるため、バックアップとしての活用が可能です。一方で、mongoexportはテキストでの出力となり、ことなるツールとのデータのやりとりに向いています。 mongoexport実行例 $ mongoexport -h mongo0:27017 -d test -c members --out members.json 2017-07-31T22:59:03.059+0900 connected to: mongo0:27017 2017-07-31T22:59:03.059+0900 exported 2 records 出力データはこのようになります。 $ cat members.json {"_id":"jane","joined":{"$date":"2011-03-02T00:00:00.000Z"},"

    MongoDB のデータ出力ツール mongoexportとmongodumpの比較 | DevelopersIO
  • MongoDBのGUI CRUDツール:MongoDB Compassを使ってみた | DevelopersIO

    こんにちは、菊池です。 MongoDBのデータを簡単に表示・操作できるGUIツール、MongoDB Compassを試してみましたので紹介します。 MongoDB Compass | MongoDB MongoDB Compass MongoDB Compassは、MongoDBのクライアントGUIツールで、視覚的にCRUD操作を実行することができます。 ダウンロードとインストール MongoDBの公式ページからバイナリをダウンロードすることができます。macWindows、RHEL、Ubuntuのバイナリが用意されています。 MongoDB Download Center バージョン、プラットフォームを選択し、ダウンロードを選びます。メールアドレスなどの入力を求められますので、必要事項を入力し、規約に同意するとインストーラがダウンロードできます。 インストーラを実行すれば、特に迷うとこ

    MongoDBのGUI CRUDツール:MongoDB Compassを使ってみた | DevelopersIO
  • MongoDB Enterprise Advanced:In-MemoryストレージエンジンのWriteパフォーマンスを検証する | DevelopersIO

    Diskへの書き込みが不要なIn-Memoryがもっともパフォーマンスがよく、次にWiredTigerが続く結果となりました。In-Memoyに比較して、データ圧縮やDiskフラッシュが必要なWiredTigerも大きく劣るわけではなく、優秀な結果です。 一方、MMAPv1は他の2つに比べてかなり下がる結果です。MMAPv1は、コレクションレベルロック(バージョン2.x以前はDBレベルロック)であるため、多重書き込み時にはロック待ちが多くなるのと、非圧縮のためにDiskフラッシュ時の書き込み量が多くなるためと推測します。 また、それぞれのストレージエンジンで、書き込み完了後のdb.stats()を確認しました。 In-Memory MongoDB Enterprise > db.stats() { "db" : "test", "collections" : 1, "views" : 0,

    MongoDB Enterprise Advanced:In-MemoryストレージエンジンのWriteパフォーマンスを検証する | DevelopersIO
  • MongoDB as a Service:MongoDB Atlasが全てのAWSリージョンで利用可能になっています | DevelopersIO

    Recommended(※1)は、MongoDB Atlasの利用が推奨されているリージョンです。MongoDBはレプリケーションの仕様上、スプリットブレイン対策のために3ノード以上の奇数台数での構成が望ましいです。推奨リージョンでは、3台のレプリカノードを全て異なるリージョンに配置することで、AZレベルの障害でもサービスが継続可能な構成となります。 N. California (us-west-1)、Tokyo (ap-northeast-1)、Sao Paulo (sa-east-1)の3つのリージョン(※2)では、3つのAZを利用可能なユーザが限られるため対象外となっています。また、今月になって3つ目のAZをオープンしたばかりのFrankfurt (eu-central-1)(※3)も対象外のようです。 推奨リージョン以外では、3台のレプリカセットのうち、2台が1つのAZ内に配置され

    MongoDB as a Service:MongoDB Atlasが全てのAWSリージョンで利用可能になっています | DevelopersIO
  • http://garicchi.com/?p=20397

  • MongoDBチートシート - Qiita

    概要 MongoDB = ドキュメント指向のDB ドキュメント = 構造化されたデータのこと RDBのレコードに相当する これを単位としてデータを扱う ドキュメントは、主キーとして _id を必ず持つ ドキュメントはJSONのように扱える(内部的にはBSON) データは型付けされる(BSON互換) コレクション = データの集まり RDBのテーブルに相当する(ただしスキーマは存在しない) SQLのような複雑なデータ操作はできない 検索機能としては柔軟に対応できる 企業(MongoDB Inc.)が開発し、オープンソースで公開されている 有料版が存在し、セキュリティ強化などの追加機能とサポートが受けられる その他、コンサル教育も受け付けているとのこと GNU APGLライセンス クロスプラットフォーム C++実装 スケーリング/クラスタリングに対応している スクリプト言語としてJavaSc

    MongoDBチートシート - Qiita
  • B TreeとB+ Treeの違い - Carpe Diem

    概要 インデックスに対してMongoDBはB Treeを採用し、MySQLのInnoDBはB+ Treeを採用しています。 どうして採用しているアルゴリズムが違うのだろう?と思って調べてみました。 主な違い B+ TreeはほとんどB Treeと同じですが、以下の点が異なります。 リーフノードとリーフノードを結ぶポインタがある データはリーフノードのみに保持する 具体例 言葉だけだと分かりにくいので、Visualizeするツールを使って具体例を表示します。 [1, 2, 3, 4, 5, 6, 8, 10, 15, 18]という数列に対し、Order: 3で作ってみます。 Orderは1ノードから出る枝の数のことです。 B Tree B-Tree Visualization B+ Tree B+ Tree Visualization 先程のB Treeと違って、データはリーフノードに持つの

    B TreeとB+ Treeの違い - Carpe Diem
  • [DMS] MongoDB Sourceのマイグレーションモードを比較する | DevelopersIO

    菊池です。 先日のブログで紹介しました通り、Database Migration Service(DMS)の移行元データベース(Source)としてMongoDBが設定可能になりました。 AWS Database Migration Service Adds Support for MongoDB and Amazon DynamoDB Using MongoDB as a Source for AWS Database Migration Service Database Migration Service の Source に MongoDB が選択可能になりました! 今回は、DMSでMongoDBからマイグレーションする際の、2つのマイグレーションモードについて調べてみました。 マイグレーションモード MongoDBからのマイグレーションには、以下の2つのモードがあります。 テーブル

    [DMS] MongoDB Sourceのマイグレーションモードを比較する | DevelopersIO
  • [DMS] MongoDB:テーブルモードのデータパターン検証 | DevelopersIO

    菊池です。 先のブログで紹介しました通り、Database Migration Service(DMS)を使ってMongoDBを移行する際には、2つのマイグレーションモードがあります。 [DMS] MongoDB Sourceのマイグレーションモードを比較する 特に、テーブルモードでは、キーの追加が反映されないケースがあるなど、注意が必要です。今回は、DMSのCDCを使って、MongoDBからテーブルモードでS3に色々なデータパターンでの出力を検証してみました。 検証 SourceとしてEC2で動作するMongoDBのレプリカセット、TargetとしてS3を利用します。CDCを有効にしたタスクを実行したまま、MongoDBにデータを投入していきS3に出力されるファイルを確認します。 初期データのマイグレーション まずはデータを1つMongoDBに挿入し、レプリケーションを実行します。 s0

    [DMS] MongoDB:テーブルモードのデータパターン検証 | DevelopersIO
  • MongoDB Atlas への移行ツール:mongomirror を試してみた | DevelopersIO

    こんにちは、菊池です。 MongoDB のマネージドサービス:MongoDB Atlasへのマイグレーションツール、mongomirrorを試してみましたのでレポートします。 Migrate with mongomirror | MongoDB Atlas mongomirror mongomirrorはオンプレやクラウド環境で稼働する、MongoDBのデータをMongoDB Atlasへ移行するツールです。 AWSDatabase Migration Serviceのように、ワンタイムの一括コピーと、オンラインでの継続的レプリケーションの両方が可能です。 前提条件 ソースデータベース: MongoDB 3.0以降であること レプリカセット構成であること ターゲットデータベース: MongoDB 3.4の最新版であること レプリカセットのAtlas Clusterであること 無償版以外の

    MongoDB Atlas への移行ツール:mongomirror を試してみた | DevelopersIO
  • mongoDBのcount正しくない問題 - NullPointer's

    mongoDBでは、シャーディングされたコレクションのcountが正しい値を返さないことがあります。これには2つの原因があります。 チャンク移動中である 孤児ドキュメントが存在する 1は、チャンク移動中は正しい値が帰らないということです。シャード間でデータが移動している最中なので正しい値が取れないのは直感的に理解できると思います。 2は、孤児ドキュメント(Orphaned Documents)がカウントされてしまう問題です。孤児ドキュメントとはチャンク移動したドキュメントが元のシャードから削除されず残ってしまったものです。シャードキーの範囲外なのでmongosからは到達不能になっていますが、countには計上されてしまいます。 孤児ドキュメントを解消するには、以下のコマンドを各シャードのreplica set primaryのmongod(mongosではありません)で実行します。これは重

    mongoDBのcount正しくない問題 - NullPointer's
  • MongoDBが遅いときの切り分け方法

    2. Copyright ⓒ2016 CREATIONLINE, INC. All Rights Reserved 自己紹介 2 {"ID" :"fetaro" "名前":"渡部 徹太郎" "研究":"東京工業大学でデータベースと情報検索の研究 (@日データベース学会)" "仕事":{前職:["証券会社のオンライントレードシステムのWeb基盤", "オープンソースなら何でも。主にMongoDB,NoSQL"], 現職:["大手Web企業の横断分析基盤,Exadata,Hortonworks,EMR"] 副業:["MongoDBコンサルタント" ]} "エディタ":"emacs派", "趣味": ["自宅サーバ","麻雀"] } 4. Copyright ⓒ2016 CREATIONLINE, INC. All Rights Reserved はじめに MongoDBは速い?→ケースに依る

    MongoDBが遅いときの切り分け方法
  • Express.jsとMongoDBでページネーションする - Qiita

    環境 Node.js: v4.3.2 MongoDB: 3.2 Express.js: 4.13.1 Bootstrap: 3.3.6(ビューで使用) 準備 express-generatorでひな形を作成し、追加のパッケージをインストールしておきます。MongoDBへのアクセスにはmongooseを使用します。 Expressでページネーションを行うために、express-paginateというパッケージを使用します。また、mongoose-paginateをあわせて使用することで楽にページネーション出来るようになります。 $ express pagination-test $ cd pagination-test $ npm i express-paginate mongoose mongoose-paginate --save var mongoose = require('mong

    Express.jsとMongoDBでページネーションする - Qiita
  • MongoDB の Partial Indexes を試してみた | DevelopersIO

    こんにちは、菊池です。 MongoDB 3.2で追加された機能である、Partial Indexes(部分インデックス)を試してみました。 Partial Indexes NOSQLであるMongoDBでも、クエリに対する応答性能を向上させるためには、いかにI/Oを減らすがが重要となります。RDBと同様に、インデックスを使ってコレクションの全走査をできるだけ発生させないのが有効な手段となります。しかし、むやみにインデックスを付与するとIndexが肥大化してメモリを圧迫し、結果的にDiskへのI/Oが増加するという問題もあります。 Ver. 3.2で追加された部分インデックスを使うことで、あらかじめクエリで絞り込む条件が明確な場合には、インデックスのサイズを抑えることが可能です。 Partial Indexes | MongoDB Manual インデックス作成時に条件を設定することで、イン

    MongoDB の Partial Indexes を試してみた | DevelopersIO
  • Node.js用MongoDBライブラリ mongooseの基本操作まとめ(すぐ試せるサンプル付き) - Qiita

    Node.jsアプリからMongoDBを操作するためのライブラリであるmongooseについて、その使い方をまとめる。 試したバージョン Node.js: v0.10.40 mongoose: 4.4.9 MongoDB: 3.0.7 前提 MongoDBlocalhost:27017で動いている Node.jsがインストールされている Mongooseがインストールされている スキーマ 登録するドキュメントは日酒データ。 日酒の銘柄brand、特定名称typeおよび飲んだ感想impressionsを複数登録できるようにする。 特定名称および飲んだ時の温度帯temperatureについては別コレクションを参照するようにする。 日酒 var Sake = new Schema({ brand: String, type: { type: Number, ref: 'SakeType'

    Node.js用MongoDBライブラリ mongooseの基本操作まとめ(すぐ試せるサンプル付き) - Qiita