タグ付けされた質問 「mongodb」

MongoDBのすべてのバージョン-スケーラブルで高性能なオープンソースのドキュメント指向データベース。

4
MongoDBでのシャーディングとレプリケーションの違い
私は、シャーディングとレプリケーションがどのように機能するかについて混乱しています。定義によると レプリケーション:MongoDBのレプリカセットは、同じデータセットを保持するmongodプロセスのグループです。 シャーディング:シャーディングは、複数のマシンにデータを保存する方法です。 75 GBのデータがあり、レプリケーション(3サーバー)がある場合、各サーバーに75 GBのデータが保存されますが、サーバー1では75 GB、サーバー2では75 GB、サーバー3では75 GBになります。私が間違っている場合)..そしてシャーディングによって、サーバー-1に25GBのデータとして、サーバー-2に25GBのデータとして、サーバー-3に25GBのデータとして保存されます(右?)...チュートリアル シャードはデータを保存します。高可用性とデータの一貫性を提供するために、実稼働シャードクラスターでは、各シャードはレプリカセットです レプリカセットは75GBですが、シャードは25GBであるため、どのように同等になる可能性がありますか。これで私を助けてください。
77 mongodb 

5
どのデータベースが何十億レコードのストレージを処理できますか?
私たちは、膨大な量を収集するnetflowデータをキャプチャして分析するツールの開発を検討しています。毎日約14億のフローレコードをキャプチャします。これは、json形式では次のようになります。 { "tcp_flags": "0", "src_as": "54321", "nexthop": "1.2.3.4", "unix_secs": "1352234521", "src_mask": "23", "tos": "0", "prot": "6", "input": "105", "doctets": "186", "engine_type": "0", "exaddr": "2.3.4.5", "engine_id": "2", "srcaddr": "9.8.7.6", "dst_as": "12345", "unix_nsecs": "752265174", "sysuptime": "2943529544", "dst_mask": "24", "dstport": "80", "last": "2943523241", "srcport": "52672", "dpkts": "4", "output": "111", "dstaddr": "6.5.4.3", "first": "2943517993" …

4
mongorestoreコマンドを使用してバックアップから特定のデータベースを復元する方法
mongodumpコマンドを使用して、すべてのデータベースのバックアップを作成しました。次に、mongorestoreコマンドを使用して特定のデータベースを復元します。 これはどのように可能ですか、私はこのコマンドを使用します:--dbオプション、mongodbは特定のデータベースを復元しません。
62 mongodb 

3
シェルからストレージエンジンを確認する
3.0にアップグレードしようとすると、アップグレードでいくつかの問題が発生しました。具体的には、mongod経由sshで起動しようとするとエラーが発生しましたdbpath。新しいYAML構成ファイルで指定したものの代わりにデフォルトを使用しようとしました。私は先に進み、マシンを再起動しましたが、今mongodは再び稼働しています。私はこの時点で少し妄想的で、ストレージエンジンがwiredtigerシェルからのものであることを確認する方法があるかどうかを知りたいです。

4
MongoDBのfind呼び出しとfindone呼び出しの違い
私はプロジェクトに取り組んでいfindますが、カーソルの動作とカーソルの動作に違いがあるかどうかはわかりませんfindOne。findOneは単なるラッパーfind().limit(1)ですか?私はそれを探していましたが、mongodbに特別な方法があるかどうかを誰かが知っているかもしれません。それが違いを生むのであれば、mongodbのPHP APIを使用しています。
34 mongodb 

1
MongoDBのサンプルYAML構成ファイル?
MongoDBの構成オプションのドキュメントのリストを指定することができますが、誰でもYAMLはさまざまなロールでのMongoDBインスタンスの設定ファイルをフォーマットされた完全に形成された例のセットを持っていない、すべての利用可能なオプション? 一般的なロールのサンプルセットは、ゼロから始める場合や、最新の構成ファイル形式でテストする場合に非常に便利な出発点になります。
33 mongodb 

2
Mongodump:認識されないフィールド「スナップショット」
mongo toolsからmongodumpを使用して、サーバーのバックアップをダウンロードしています。ただし、コマンドを実行すると、コマンドは「認識されないフィールド 'snapshot'」を返します。 完全なエラーは次のとおりです。 Failed: error reading collection: Failed to parse: { find: "data", skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "xxx" }. Unrecognized field 'snapshot'. Mongodump --versionの戻り値: mongodump version: built-without-version-string git version: built-without-git-spec Go version: go1.7.3 os: linux arch: amd64 compiler: gc OpenSSL version: OpenSSL 1.0.2g …

5
Mongoをスーパーユーザーとして入力したり、ユーザーをリセットしたりするにはどうすればよいですか?
私は許可をいじっていたので、Mongoデータベースから締め出されました。データベースへのアクセスを明示的に追加することでこれを行ったと確信していますが、代わりにデータベースへのアクセス許可のみを上書きしました。したがって、私はMongoデータベースから事実上ロックアウトされており、私が読んだすべてが、ユーザー追加権限を持っている場合にスーパーユーザーを作成する方法を教えてくれます。現時点では、その特権を持つユーザーはいないと思います。すべてのアクセスとしてデータベースを入力する方法はありますか?私はサーバーを所有しており、rootアクセスを持っています。
29 mongodb 

3
使用しているメモリが多すぎるMongoDB
MongoDBを数週間使用していますが、全体的な傾向として、mongodbのメモリ使用量が大きすぎる(データセット+インデックスのサイズ全体よりもはるかに大きい)ことがわかりました。 私はすでにこの質問とこの質問を読んでいますが、私が直面している問題に対処しているものはないようです。実際にドキュメントで説明されていることを説明しています 以下は、htopおよびshow dbsコマンドの結果です。 mongodbはメモリマップドIOを使用することを知っているので、基本的にOSはメモリ内のキャッシュを処理し、理論的には別のプロセスが空きメモリを要求したときに mongodb がキャッシュされたメモリを解放する必要がありますが、私たちが見たところ、そうではありません。 OOMは、他の重要なプロセス(postgres、redisなど)を殺す開始を開始します(この問題を克服するために、RAMを183GBに増やしましたが、現在は動作しますがかなり高価です。mongoは〜87GBのRAMを使用しています。データセット全体のサイズのほぼ4倍) そう、 これだけのメモリ使用量が本当に予想され、正常ですか?(ドキュメントによると、WiredTigerはキャッシュに最大で60%のRAMを使用しますが、データセットのサイズを考慮すると、86GBのRAMを使用するのに十分なデータさえありますか?) メモリ使用量が予想される場合でも、別のプロセスがより多くのメモリを要求し始めた場合、mongoが割り当てられたメモリを手放さないのはなぜですか?RAMを増やしてシステムを完全に不安定にする前に、mongodb自体を含め、他のさまざまな実行中のプロセスがLinux oomによって絶えず殺されていました。 ありがとう!

1
Mongodb増分バックアップ
私はMongoDBレプリカセットの増分バックアップを設定するタスクを開始点として与えられましたが、もちろんそれをグーグルで検索し、MongoDBドキュメントで何も見つかりませんでしたが、スタックオーバーフローでこの質問を見つけましたが、それは独自のソリューションの開発を奨励しましたタイラは非常に活発であるとは思わなかったので。 私は読んoplogし、ログを再生するために何かを開発することは非常に簡単でした実現し、それは私がように持っていなかったことが判明しmongorestoreていることが私のために行います。 これで、bashスクリプトを使用した実用的なソリューションが得られたため、非常に簡単でした。それが、ここに私のロジックに欠陥があるかどうか、または将来私に噛み付く何かを尋ねる理由です。 以下の実装方法: 完全バックアップ手順 セカンダリメンバーへのロック書き込み db.fsyncLock() スナップショットを撮ります oplogから最後の位置を記録する db.oplog.rs.find().sort({$natural:-1}).limit(1).next().ts 書き込みのロックを解除 db.fsyncUnlock() 増分バックアップ手順 セカンダリメンバーへのロック書き込み 完全(または最新の増分)バックアップで記録されたoplog位置からoplogをダンプします。 mongodump --host <secondary> -d local -c oplog.rs -o /mnt/mongo-test_backup/1 --query '{ "ts" : { $gt : Timestamp(1437725201, 50) } }' 最新のoplog位置を記録します(完全バックアップの場合と同じ方法)。 書き込みのロックを解除 完全バックアップの復元手順 のすべてのインスタンスを停止します mongod プライマリになるボックスのデータディレクトリにスナップショットをコピーしますが、必ずすべてを除外しlocal*てください。mongod.lock この復元手法は、ミラーを解除して再構成と呼ばれます プライマリを開始 replicasetを再構成する データなしでセカンダリを起動し、最初の同期を実行させます。または、新しいlocalデータベースを使用して新しいプライマリからデータをコピーします 増分バックアップを復元する 増分バックアップを作成すると、次のように保存されました。 /mnt/mongo-test_backup/1/local/oplog.rs.bson /mnt/mongo-test_backup/1/local/oplog.rs.metadata.json 私たちは詳しく調べてoplog.rs.bsonいますが、名前を変更する必要があるので、以下の手順を実行します …
26 backup  mongodb 

3
MongoDB MMAPv1 vs WiredTigerストレージエンジン
:mongoDB3で新しいストレージエンジン登場WiredTigerを。それでも、MMAPv1は依然としてMongoのデフォルトの選択肢です。 一方が他方よりも優れているとは限りません。多くの場合、ユースケースとジョブに適したツールの選択の問題です。しかし、どのエンジンがどの仕事に適していますか? 実際、MMAPv1はデフォルトのエンジンですが、WiredTigerはほとんどすべての分野で優れているようです。MMAPv1と同じ機能に加えて: 書き込みパフォーマンスの向上、 ドキュメントレベルの同時実行、 圧縮、 スナップショットおよびチェックポイントシステム。 MongoDBのブログで比較表を見つけました。 Solarisを使用している場合を除き、WiredTigerを選択しない理由はありますか? 編集 WiredTigerとMMAPv1の内部を詳細に説明する2つのビデオが あります。

2
MongoDBとPostgreSQLを一緒に使用する
私の現在のプロジェクトは、基本的に工場文書管理システムの実行です。 とはいえ、いくつかのしわ(驚き、驚き)があります。いくつかのしわはプロジェクトにかなり固有のものですが、標準的な答えを持たない(とにかく見つけることができる)一般的な観察と質問がいくつかあり、それはより広い問題領域に適用できると思います。ここにはたくさんあり、StackExchangeのQ&A形式に適しているかどうかはわかりませんが、a)答えられる質問であり、b)コミュニティに役立つほど具体的でないと思います。私の考慮事項のいくつかは私に固有のものですが、この質問は、SQLとNoSQLとその両方を決定することに直面している人にとって役に立つと思います。 背景: 作成しているWebアプリには、本質的に明らかにリレーショナルなデータと、ドキュメント指向のデータが含まれています。ケーキを持って食べたいです。 TL; DR:以下の#5は匂いテストに合格すると思います。あなたは?単一のアプリケーションでSQLとNOSQLをこのように統合した経験はありますか?このクラスの問題に対するすべての可能なアプローチを以下にリストしようとしました。有望な代替案を見逃していませんか? 複雑さ: 文書には多くの異なるクラスがあります。要件はすでに何十もの異なる文書を要求しています。この数は増えるだけです。可能な限り最良のケースは、ドメイン専門家がDBAやプログラマの介入なしに新しいドキュメントクラスの追加を処理できるように、単純なドメイン固有の言語、コード生成、および柔軟なスキーマを活用できるケースです。(注:Greenspunの第10規則を順守していることを既に認識しています) 以前の正常な書き込みの整合性は、プロジェクトの中心的な要件です。データはビジネスに不可欠です。書き込みに関するACIDの完全なセマンティクスは、正常に書き込まれたものが書き込まれたままであれば、犠牲になる可能性があります。 文書自体は複雑です。特定のケースのプロトタイプドキュメントでは、ドキュメントインスタンスごとに150以上の個別のデータを保存する必要があります。病理学的症例は1桁悪化する可能性がありますが、確かに2ではありません。 単一クラスのドキュメントは、後の時点で更新の対象となる移動ターゲットです。 Djangoをリレーショナルデータベースにフックすると、無料のものが好きです。django-nonrelフォークを使用するために2つのDjangoバージョンに戻る必要なく、景品を保持したいと思います。1.3にダウングレードするよりも、ORM全体をダンプする方が望ましいです。 本質的には、リレーショナルデータ(ユーザー、グループなどの典型的なWebアプリのもの、および複雑なクエリをリアルタイムで切り刻むことができる必要があるドキュメントメタデータ)とドキュメントデータ(たとえば、参加やクエリに関心のない数百のフィールド-データの唯一のユースケースは、入力された単一のドキュメントを表示することです。 私は私の好みの方法で健全性チェック(あなたが私の投稿履歴をチェックする場合、私はDBAではないという事実についてかなり明確です)を行い、他の解決のために出会ったすべてのオプションを列挙したかったですリレーショナルデータと非リレーショナルデータの両方を含む、ほぼ同様の問題。 提案されたソリューション: 1.ドキュメントクラスごとに1つのテーブル 各ドキュメントクラスは、すべてのメタデータとデータの列を持つ独自のテーブルを取得します。 利点: 標準のSQLデータモデルが使用されています。 リレーショナルデータは可能な限り最適な方法で処理されます。必要に応じて後で非正規化します。 Djangoのビルトイン管理インターフェイスはこれらのテーブルを内省することに慣れており、ORMは100%のデータをそのまま使用できます。 短所: メンテナンスの悪夢。数千(数十?)の列を持つ数十(数百?)のテーブル。 どのテーブルに書き込むかを正確に決定するアプリケーションレベルのロジック。テーブル名をクエリのパラメータにすることは悪臭を放ちます。 基本的に、すべてのビジネスロジックの変更にはスキーマの変更が必要です。 病理学的なケースでは、複数のテーブルにまたがる単一のフォームのデータをストライピングする必要があるかもしれません(参照:PostgreSQLテーブルの列の最大数は?)。 私たちはおそらく、人生と私たちを憎むことになるであろう本当の、神に正直なDBAを見つけるために行く必要があるでしょう。 2. EAVモデリング フィールドテーブルのみがあります。エンティティー属性値のモデリングはすでに十分に理解されています。完全を期すために含めました。2013年に開始される新しいプロジェクトは、意図的にEAVアプローチを採用するとは思わない。 利点: モデル化が簡単。 短所: クエリがより困難です。 DBレイヤーには、1つのアプリレベルのオブジェクトを構成するものを簡単に表現することはなくなりました。 DBレベルの制約チェックが失われます。 1つのテーブルの行数は、100〜1000倍の速度で増加します。おそらく将来の問題点はパフォーマンス面です。 限られたインデックス付けが可能。 ORMに関する限り、DBスキーマは無意味です。Webアプリのものを含むバッテリーは保持されますが、カスタムデータモデルにはカスタムクエリが必要になります。 3. PostgreSQL hstoreまたはjsonフィールドを使用します これらのフィールドタイプのいずれかは、リレーショナルDBのコンテキスト内でスキーマレスデータを格納するためのトリックを行います。私はすぐにこの溶液にジャンプしない唯一の理由は、(バージョン8.4それほどではないに導入された比較的新しいですその新しい)、私はそれにゼロ以前のエクスポージャーを持っていると私は疑わしいです。Mongoはドキュメント間の参照を処理できますが、簡単に正規化されたすてきなデータをすべてMongoに投げるのが不安になるのとまったく同じ理由で、間違っていると思います。 利点: Django ORMと組み込みの認証およびセッション管理の利点を活用できます。 すべてが、以前に他のプロジェクトで正常に使用した1つのバックエンドに残ります。 短所: 個人的にはこれに関する経験はありません。 あまり使用されている機能のようには見えません。NOSQLソリューションを検討している人々にはかなり推奨されているように見えますが、選択されているという証拠はあまりありません。これは、私が何かを見逃しているに違いないと思うようにします。 …

1
MongoDBに挿入が多すぎるとどうなりますか?すべてのデータが保存されていることを確認する方法は?
この質問は、データベース管理者のStack Exchangeで回答できるため、Server Faultから移行されました。 6年前に移行され ました。 MongoDBを使用して、定期的に測定された値を保存します。〜100ミリ秒ごとに、一連の値がドキュメントとして挿入されます。正常に動作しますが、パフォーマンスの問題が心配です。(私は安全な挿入を使用しますが、PyMongoではこれがデフォルトです。) mongodがハードディスクに保存できるよりも多くの挿入が毎秒ある場合はどうなりますか?警告はありますか、それとも単に黙って失敗しますか? 書き込み負荷を監視する方法はありますか?db.serverStatus().writeBacksQueued呼び出したときに常にfalseに設定されているものだけが見つかりました。書き込みキューを満たすために挿入する必要があるデータの量をどのようにテストできますか? mongostatロックを表示します。これは私が心配すべきことですか? insert query update delete getmore command flushes mapped vsize res faults locked db idx miss % qr|qw ar|aw netIn netOut conn repl time *117 *0 *0 *0 0 2|0 0 17.4g 35.3g 3.76g 0 .:6.5% 0 0|0 0|0 124b 6k 2 …
24 mongodb 

3
MongoDB:RAM要件
インデックス全体をメモリ/ RAMに格納するだけで十分ですか、またはmongodbは、高速読み取り用のデータさえ格納するためにできるだけ多くのRAMを割り当てようとしますか? mongodb +他のアプリケーションを実行したいのですが、「max_memory_allocated_or_reserved = 8GB」と言えば、mongodbがRAMの範囲を定義できない唯一のアプリケーションのようです。 そうする方法がない場合、私はom-killerに、mongodは「悪い」プロセスであり、私の意見ではベストプラクティスではないことを説明する必要があります。
20 mongodb 

4
mongoシェルだけをインストールすることは可能ですか?
Dockerをインストールして実行しています MongoDBし、Macでローカル開発用コンテナーをしています。問題は、CLIから上記のDBに簡単に接続できないことです。私が持っているロボ3Tがインストールされていますが、私が使用することを好むCLIの代わりにクライアントを。 JUSTをインストールする既知の方法はありますか mongo shellmongoOS Xに完全なDBディストリビューションではなく(コマンド)だけますか?
20 mongodb  mac-os-x 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.