MongoDBは多くの開発者に好まれるデータベースであるため、コミュニティのサポートが優れていることは当然のことです。 Stack Overflowなどのナレッジサイトでほとんどの問題の答えをすばやく見つけることができますが、コミュニティはMongoDBの周りに多くのツール、スクリプト、フレームワークも作成しています。
ClusterControlは、MongoDBトポロジーのデプロイ、モニター、管理、スケーリングを可能にするコミュニティツールの一部です。 ClusterControlはデータベースのライフサイクルを中心に設計されていますが、当然、開発サイクルのすべての側面をカバーすることはできません。このブログ投稿では、開発サイクルの管理においてClusterControlを補完するために使用できるコミュニティツールの選択について説明します。
スキーマ管理
従来のRDBMSでのスキーマ変更の苦痛は、MongoDBの作成の背後にある要因の1つでした。私たちは皆、苦痛を伴うほど遅い、または失敗したスキーマ移行に苦しんでいました。したがって、MongoDBはスキーマレスのドキュメントデザインで開発されました。これにより、データベースに邪魔されることなく、いつでもスキーマを変更できます。
スキーマの変更は、通常、アプリケーション開発があるたびに行われます。既存のモジュールに新しい機能を追加したり、新しいモジュールを作成したりするには、スキーマの別のバージョンを作成する必要があります。また、スキーマとパフォーマンスの最適化により、スキーマの新しいバージョンが作成される場合があります。
多くの人がデータベースに抑制されていないのは素晴らしいと言うでしょうが、それはいくつかの問題ももたらします。古いデータは新しいスキーマ設計に移行されないため、アプリケーションはすべてのスキーマバージョンに対応できるはずです。データベースにあります。または、アプリケーションをデプロイした直後に、すべての(古い)データを新しいスキーマで更新することもできます。
このセクションで説明するツールはすべて、これらのスキーマの問題を解決するのに非常に役立ちます。
Meteor2コレクション
Meteor2コレクションモジュールは、クライアント側とサーバー側の両方から、スキーマが検証されることを保証します。これにより、すべてのデータが定義されたスキーマに従って書き込まれるようになります。モジュールはリアクティブのみであるため、データがスキーマに従って書き込まれない場合は常に、警告が返されます。
マングース
Mongooseは、スキーマのモデリングと検証のためのNode.jsミドルウェアです。スキーマ定義はNode.jsアプリケーション内に配置され、これによりMongooseがORMとして機能できるようになります。 Mongooseは、既存のデータを新しいスキーマ定義に移行しません。
MongoDBスキーマ
これまではスキーマの変更についてのみ説明してきたので、MongoDBスキーマを紹介します。 MongoDB Schemaは、データの(ランダムな)サンプルを取得し、サンプリングされたデータのスキーマを出力するスキーマアナライザーです。ただし、これは必ずしもスキーマ推定で100%正確であることを意味するわけではありません。
このツールを使用すると、データをスキーマと照合して定期的にチェックし、スキーマの重要な変更や意図しない変更を検出できます。
SomeninesがMongoDBDBAになる-MongoDBを本番環境に導入MongoDBDownloadを無料でデプロイ、監視、管理、スケーリングするために知っておくべきことを学びましょうバックアップ
ClusterControlは、MongoDBをバックアップするための2つの実装をサポートしています。mongodumpとPerconaConsistentBackupです。それでも、部分/増分バックアップや他のクラスターへのストリーミングバックアップなど、あまり使用されていない機能は、そのままでは使用できません。
MongoDBバックアップ
MongoDB Backupは、mongodumpと同様の機能を提供するNodeJS論理バックアップソリューションです。これに加えて、ネットワークを介してバックアップをストリーミングすることもできるため、あるMongoDBインスタンスから別のインスタンスにコレクションを転送するのに役立ちます。
もう1つの便利な機能は、NodeJSで記述されていることです。これは、Hubotチャットボットへの統合が非常に簡単で、コレクションの転送を自動化できることを意味します。会社がチャットボットとしてHubotを使用していない場合でも、恐れることはありません。Hubotは、Webhookとして機能することも、CLIを介して制御することもできます。
モンゴブ
Mongobは別の論理バックアップソリューションですが、この場合はPythonで記述されており、CLIツールとしてのみ使用できます。 MongoDB Backupと同様に、MongoDBインスタンス間でデータベースとコレクションを転送できますが、それに加えて、転送速度を制限することもできます。
Mongobのもう1つの便利な機能は、増分バックアップを作成できることです。これは、よりコンパクトなバックアップが必要な場合だけでなく、ポイントインタイムリカバリを実行する必要がある場合にも役立ちます。
MongoRocks Strata
MongoRocks Strataは、MongoRocksストレージエンジンのバックアップツールです。 Percona Server for MongoDBにはMongoRocksストレージエンジンが含まれていますが、ファイルレベルのバックアップを作成するためのStrataバックアップツールがありません。原則として、mongodumpとPercona Consistent Backupは信頼性の高いバックアップを作成できますが、論理ダンプであるため、リカバリ時間は長くなります。
MongoRocksは、LSMツリーアーキテクチャに依存するストレージエンジンです。これは基本的に、追加専用のストレージであることを意味します。これを可能にするために、データのバケットで動作します。古いデータは大きな(アーカイブ)バケットに保存され、最近のデータは小さな(最近の)バケットに保存され、すべての新しい着信データは特別なメモリバケットに書き込まれます。圧縮が行われるたびに、データはメモリバケットから最近のバケットに細流化され、最近変更されたデータはアーカイブバケットに戻されます。
すべてのバケットのバックアップを作成するために、StrataはMongoDBにメモリバケットをディスクにフラッシュするように指示し、次にデータのすべてのバケットをファイルレベルでコピーします。これにより、利用可能なすべてのデータの一貫したバックアップが作成されます。 Strataに、最近のバケットのみをコピーして、効果的に増分バックアップを取るように指示することもできます。
Strataのもう1つの優れた点は、バックアップを直接クエリできるmongoqバイナリを提供することです。これは、クエリを実行する前に、バックアップをMongoDBインスタンスに復元する必要がないことを意味します。この機能を利用して、本番データを分析システムにオフラインで送信できます。
MongoDB GUI
ClusterControlを使用すると、アドバイザーを介してMongoDBデータベースとコレクションにクエリを実行できます。これらのアドバイザーは、ClusterControlDeveloperStudioインターフェースで開発できます。データベースとの直接的なインターフェースは備えていないため、データに変更を加えるには、MongoDBシェルにログインするか、これらの変更を可能にするツールを用意する必要があります。
PHPMoAdmin
PHPMoAdminは、PHPMyAdminに相当するMongoDBです。 PHPMyAdminと同様の機能を備えています:データと管理者の管理。このツールを使用すると、すべてのデータベースとコレクションでJSON構文とPHP構文の両方でCRUD操作を実行できます。その次に、現在選択しているデータのインポート/エクスポート機能も備えています。
Mongo-Express
用途の広いデータブラウザをお探しの場合、Mongo-Expressは間違いなくチェックアウトする必要のあるツールです。 PHPMoAdminと同様の操作が可能であるだけでなく、画像やビデオをインラインで表示することもできます。 GridFSバケットからの大きなオブジェクトのフェッチもサポートしています。
ロボモンゴ
さらに一歩進んだツールがRobomongoです。クラウドファンディングツールであるため、機能リストは膨大です。 Mongo-Expressと同じ操作をすべて実行できますが、これに加えて、ユーザー、ロール、およびコレクションの管理も可能です。接続の場合、MongoDBの直接接続をサポートしますが、replicaSetトポロジとMongoDBAtlasインスタンスもサポートします。
結論
この無料のコミュニティツールの選択により、ClusterControlの横にあるMongoDBデータを管理する方法の概要がわかりました。
ハッピークラスタリング!