web-dev-qa-db-ja.com

AzureのAzureテーブルとMongoDB

Windows AzureでNoSQLデータベースを使用したいのですが、データボリュームが非常に大きくなります。 Azureテーブルストレージまたはワーカーロールを使用して実行されているMongoDBデータベースは、パフォーマンスとスケーラビリティを向上させることができますか?誰かがWorkerロールを使用してAzureでMongoDBを使用しましたか? Azureテーブルストレージを介してAzureでMongoDBを使用することについての考えを共有してください。

64
Shiju

テーブルストレージは、Windows Azureのコアストレージ機能であり、スケーラブルに設計されています(100TB200TB アカウントあたり500TB)、耐久性(データセンターでトリプル複製、オプションで別のデータセンターにジオ複製)、およびスキーマレス(各行に必要なプロパティを含めることができます)。行はパーティションキー+行キーによって配置され、非常に高速な検索を提供します。すべてのテーブルストレージアクセスは、明確に定義されたREST任意の言語で使用可能なAPIを介して(SDKを使用して、REST API、 .NET、PHP、Java、Python&Ruby)。

MongoDBはドキュメント指向のデータベースです。 Azureで実行するには、Web /ワーカーロールまたは仮想マシンにMongoDBをインストールし、クラウドドライブ(ドライブ文字を提供)または接続されたディスク(Windows/Linux仮想マシンの場合)にポイントし、オプションでジャーナリングをオンにする必要があります(推奨)、およびオプションで使用する外部エンドポイントを定義します(または仮想ネットワーク経由でアクセスします)。ちなみに、クラウドドライブ/接続されたディスクは、実際にはAzure Blobに格納されており、Azure Tablesと同じ耐久性とジオレプリケーションを提供します。

2つを比較する場合、テーブルストレージはStorage-as-a-Serviceであることに注意してください。よく知られたRESTエンドポイントにアクセスします。MongoDBを使用すると、データベースを管理する責任があります。 MongoDB Inc(以前の10gen)がMongoDBの新しいバージョンをプッシュするたびに、それに応じてサーバーを更新する必要があります)。

Jtoberonが指しているMongoDB Incのアルファバージョンについて:それをよく見ると、いくつかの重要なことがわかります。

  • セットアップは、レプリカセットまたはシャードのないスタンドアロンmongodbインスタンス用です。レプリカセットに関しては、Blobストレージの仕組みにより、スタンドアロンバージョンを使用することでいくつかの利点が得られます。
  • 高可用性を提供するために、複数のインスタンスで実行できます。この場合、データベースにサービスを提供するインスタンスは1つのみで、もう1つは「ウォームスタンバイ」であり、他のインスタンスに障害が発生するとすぐにmongodプロセスを起動します(メンテナンスリブート、ハードウェア障害など)。

10genのWindows Azureラッパーはまだ「アルファ」と見なされていますが、mongod.exeはそうではありません。他のWindows exeを起動するのと同じように、mongod exeを起動できます。これは、起動時の管理コードに過ぎず、それがアルパの実装が実証しているものです。

EDIT 2011-12-8:これはアルファ状態ではなくなりました。最新のMongoDB + Windows Azureプロジェクトをダウンロードできます here 、これはレプリカセットサポートを提供します。

パフォーマンスのために、ベンチマークを行う必要があると思います。そうは言っても、次のことを考慮してください。

  • たとえば、WebロールからTable StorageまたはMongoDBにアクセスするとき、Windows Azureストレージシステムにアクセスします。
  • MongoDBは、独自のキャッシュに大量のメモリを使用します。このため、多くの大規模なMongoDBシステムは、より大きなインスタンスサイズにデプロイされます。テーブルストレージアクセスの場合、同じメモリサイズを考慮する必要はありません。

2015年4月7日編集ドキュメントベースのデータベースをサービスとして使用する場合、AzureはDocumentDBを提供するようになりました。

72
David Makogon

私は両方を使用しました。

Azure Tables:とてもシンプルで高速、簡単なクエリでさえ書くのは本当に難しいです。

Mongo:正常に実行され、多くのクエリ機能があり、いくつかのインスタンスが信頼できる必要があります。

簡単に言えば、クエリが非常に単純な場合(キー->値)、コスト比較(主にストレージに対するトランザクション数とAzureでのMongoのホスティングコスト)を実行する必要があります。そのためにテーブルストレージに行きたいです。より複雑なクエリが必要で、SQL Azureにアクセスしたくない場合は、おそらくMongoが最適です。

35
pierrecouzy

私はこの質問が時代遅れであることを理解しています。検索でこの質問に出くわす可能性がある人のために、次の情報を追加したいと思います。

現在、MongoDBはAzureで完全に管理されたサービスとして提供されています。 (正式には15年4月のベータ版)

参照: http://www.mongodb.com/partners/cloud/Microsoft または https://Azure.Microsoft.com/en-us/blog/announcing-new-mongodb -instances-on-Microsoft-Azure /

参照(価格設定を含む): https://Azure.Microsoft.com/en-us/marketplace/partners/mongolab/mongolab/

9
kalyanmysore

私の最初の選択はAzureTablesです。なぜなら、SAASモデルと低コストおよびSLA 99.99%
http://alexandrebrisebois.wordpress.com/2013/07/09/what-if-20000-windows-Azure-storage-transactions-per-second-isnt-enough/


いくつかの制限.. http://msdn.Microsoft.com/en-us/library/windowsazure/jj553018.aspx


http://www.windowsazure.com/en-us/pricing/calculator/?scenario=data-management

または小規模ビジネス向けのAzureSQL

DocumentDB http://Azure.Microsoft.com/en-us/documentation/services/documentdb/http://Azure.Microsoft.com/en-us/documentation/articles/ documentdb-limits /


2番目の選択は、Amazonを含む多くのクラウドプロバイダーがS3を提供することです

またはGoogleテーブル https://developers.google.com/bigquery/pricing


nTHの選択でSHOWを管理し、自分ですべての睡眠を取りませんMongoDBよく最初の2つのSAASをもう一度調べます


「CLOUD」を実行している場合の選択私は、可能な限り「RENT-IT」のSAASモデルを選択します...

問題は、AzureTables、DocumentDB、またはAzureSQLです。
DocumentDBのドキュメント http://Azure.Microsoft.com/en-us/documentation/services/documentdb/

Azureの価格設定の仕組み http://Azure.Microsoft.com/en-us/pricing/details/documentdb/

これは楽しいです http://www.documentdb.com/sql/demo

5
Valentin Petkov

Build 2016では、DocumentDBがすべてのMongoDBドライバーをサポートすることが発表されました。これにより、DocDBのツールに関する問題の一部が解決され、Mongoアプリの移行が容易になります。

2
Phil

上記の答えはすべて良いですが、本当の答えはあなたの要件が何であるかに依存します。処理するデータのサイズ、データに対して実行する操作の種類を理解してから、ニーズに合ったソリューションを選択する必要があります。

1

覚えておくべきことの1つは、Azure Table Storageは複雑なデータ型をサポートしないことです。など。キーに対してオブジェクトを保存することはできません。これはNoSql DBに必要だと思います。 https://docs.Microsoft.com/en-us/rest/api/storageservices/fileservices/understanding-the-table-service-data-model スクロールしてプロパティタイプ

0