データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

MongoDBのヒント:パート2

Tricoreが最初に公開したもの:2017年8月24日

このシリーズのパート1では、MongoDBを使用するためのヒントをいくつか共有しました。パート2では、最適化、パフォーマンス、速度、インデックス作成、スキーマ設計、データの安全性など、さらにいくつかのMongoDBトピックについて説明します。

ヒント1:--notablescan 開発中のオプション(ただし、本番環境ではない)

MongoDBのヒント:パート2

出典:www.percona.com

MongoDBには--notablescanがあります クエリが全表スキャンを実行する必要がある場合にエラーを返すオプション。このオプションは、すべてのクエリがヒットインデックスであることを確認したい場合に、開発環境で便利です。ただし、パフォーマンスの問題が発生する可能性があるため、本番環境での使用はお勧めしません。問題は、多くの単純な管理タスクがテーブルスキャンを必要とすることです。このオプションを使用すると、全表スキャンが必要なデータベース内のコレクションのリストを表示できます。

ヒント2:すべてのサーバーとデータベースを単一のシェルから管理する

デフォルトでは、MongoDBはlocalhost: 27017に接続します 。 mongo host: port/databaseを実行すると、起動時に任意のサーバーに接続できます。 。シェル内の複数のサーバーまたはデータベースに接続することもできます。

たとえば、ディーラーのデータベースとディストリビューターのデータベースの両方を使用するアプリケーションがあるとします。 MongoDBを使用すると、同じシェル内の2つのデータベースを切り替えることができます。

ヒント3:JavaScriptを知っている

独自の優れたシェルを備えた言語を使用している場合は、JavaScript®に精通している必要があります。 JavaScript言語は、情報にアクセスするための最も迅速で最良の方法であるため、MongoDBユーザーの間で一般的です。JavaScriptは非常に柔軟で強力な言語であり、シェルから可能な限り多くのことを引き出すのに役立つ優れた機能を備えています。

ヒント4:サーバーのインスタントバックアップを作成する

ジャーナル処理が有効になっているデータベースのバックアップを作成するには、ファイルシステムのスナップショットを作成するか、通常のfsync+lockを実行します。 次にダンプします。fsyncなしですべてのファイルをコピーすることはできないことに注意してください。 コピーは瞬時の操作ではないため、ロックします。ジャーナルファイルとバックアップのコピーが異なるボリュームにある場合、バックアップは後で役に立たなくなる可能性があります。

ヒント5:単一のクエリからデータをフェッチしてみてください

アプリケーションユニットという用語 一部の種類のアプリケーション作業に使用されます。アプリケーションユニットは、基本的に、データベースへのアクセスを伴う可能性のある、アプリケーションが実行する個別の作業ユニットです。アプリケーションユニットごとに1つのクエリを実行するようにMongoDBschemasを設計する必要があります。

Webまたはモバイルアプリケーションを使用している場合は、アプリケーションユニットをバックエンドへのリクエストと考えることができます。

その他の例を次に示します。

  • デスクトップアプリケーションの場合、アプリケーションユニットはユーザーとクライアントの相互作用を参照する場合があります。

  • 分析システムの場合、アプリケーションユニットはダッシュボードの読み込みを参照する場合があります。

結論

MongoDBは、高速で堅牢、かつ拡張性の高いデータベースです。多くのプラットフォームで動作し、最適な使用法のための多くの言語ドライバーがあります。

MongoDBは毎日人気が高まっています。 MongoDBの基本とその使い方を理解することは、どの開発者にとっても素晴らしい動きです。

MongoDBの使い方を学んでいますか? [フィードバック]タブを使用して、あなたの経験について教えてください。


  1. MongoDBでのコードインジェクション

    元々は2019年3月5日に公開されました アプリケーション開発者、データベース管理者(DBA)、またはその他の技術者の場合は、コードインジェクションを監視する必要があります。 安全なクラウド環境があります。データベースアクセスがロックダウンされています。しかし、アプリケーションコードはどうですか?より安全であると考えられていますが、いいえ NoSQLiでは、注射できないという意味ではありません。 NoSQLは、他のデータベースコードと同じようにコードインジェクションの影響を受けやすい可能性があります。コードインジェクションを防止しないことは、ドアにセキュリティシステムを設置し、バックウ

  2. MongoDBで未使用のインデックスを検索する

    バージョン3.2以降、MongoDBはすべてのインデックスの使用統計を追跡します。これらの統計にアクセスするために、MongoDBは$indexStats集約パイプラインステージを提供します。 MongoDBで未使用のインデックスを見つける際の6つの考慮事項を次に示します。 たとえば、次のコマンドは、コレクション「test.foo」のインデックス統計を提供します。 db.foo.aggregate( [ { $indexStats: { } } ] ) https://bit.ly/2seXnzo $ indexStatsの出力については説明しません。このトピックをカバーするドキュメン