2011-11-03 17 views
61

Windows AzureでNoSQLデータベースを使用したい場合、データボリュームが非常に大きくなります。 AzureテーブルストレージまたはWorkerロールを使用して実行されているMongoDBデータベースが、より優れたパフォーマンスとスケーラビリティを提供できるかどうか誰もWorkerの役割を使ってAzureでMongoDBを使用しましたか? AzureのMongoDBをAzureのテーブルストレージで使用することについてのご意見をお聞かせください。AzureテーブルとAzureのMongoDB

答えて

72

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

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

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

はjtoberonによって指さ:あなたはそれをよく見て取る場合は、いくつかの重要なものが表示されます:

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

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

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

パフォーマンスについては、ベンチマークを行う必要があると思います。

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

EDIT 2015年4月7日 あなたはサービスとしてのドキュメントベースのデータベースを使用する場合は、Azureが今DocumentDBを提供しています。

+0

私はこれを自分トリスいませんが、MongoDBはAzureのアドオンとして店を通ってくるようです。おそらくAzureテーブルストレージのような単純な配置になります。 – John

35

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

Azureテーブル:死んでシンプルで、速く、簡単なクエリでも簡単に書くのは難しいです。

Mongo:多くのクエリ機能では、複数のインスタンスを信頼できるものにする必要があります。

一言で言えば、クエリが本当にシンプルな場合(key-> value)、AzureのMongoをホスティングするコストと比較してコストの比較を実行する必要があります。私はむしろそれのためのテーブルストレージに行くだろう。 より精巧なクエリが必要で、SQL Azureに行きたくない場合は、おそらくMongoが最適です。

+0

これはWCF Data Servicesのようなエンドポイントを公開した後も変わりませんか?私はあなたがそれらのエンドポイントを介してLINQを行うことができると思います –

+0

あなたのコメントを説明することができますか(または参照を参照してください) "信頼できるいくつかのインスタンスが必要です"?なぜ2は信頼できないでしょうか? – Mark

+1

はい、Azure Tablesのクエリは、新しいリリースでも難しいです。 LINQを行うことはできますが、すべての機能がサポートされているわけではありません。たとえば、orderby、 "contains"、countなどがあり、エラーになります。 PKに対するもの以外のクエリは、テーブルスキャンの結果となります。 – Daniel

5

小規模ビジネス

のための理由は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私の最初の選択肢はAzureTablesです

ドキュメントentDB 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


n番目の選択肢何の睡眠を持っていないのMongoDBだけでなく、私が見ていきます、すべて自分でSHOWを管理もう一度最初の2つのSAAS


「CLOUD」を実行している場合は私が選択します質問はそれが価格設定が の仕組みAzureのAzureTablesまたはDocumentDBまたはAzureSQL
DocumentDBドキュメント http://azure.microsoft.com/en-us/documentation/services/documentdb/

されているもの私のアプリが必要です... SaaSモデルのため

を "RENT-IT" を可能な限り行くでしょうhttp://azure.microsoft.com/en-us/pricing/details/documentdb/

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

8

私はこの質問が日付であることを実感です。私は彼らの検索でこの質問に来るかもしれない人々のための次の情報を追加したいと思います。

ここで、MongoDBはAzure上で完全に管理されたサービスとして提供されることに注意してください。(正式にベータ版では4月'15のような)

参照: 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/

2

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

2

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

覚えて
0

ことの一つは、Azureテーブルストレージが複雑なデータ型をサポートしていません .ITは、文字列または数値またはブールまたは日付であるためにエンティティ内のすべてのプロパティをサポートしているなど 一つはに対してオブジェクトを格納することはできませんキー、私はNoSql DBのためにあると感じます。 プロパティタイプへ https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/understanding-the-table-service-data-modelスクロール

+0

"Azureテーブルストレージはサポートしていません複雑なデータ型 "それは完全に正しいわけではありません。 Azure Storage SDKバージョン8.0.0.0では、SDKにAPIが追加され、複雑なオブジェクトがテーブルストレージに書き込まれます。 https://msdn.microsoft.com/en-us/library/azure/mt775434.aspxおよびhttps://msdn.microsoft.com/en-us/library/azure/mt775432.aspxを参照してください。私はこれらのAPIを書いています:)もし何かコメントがありましたらお気軽にお尋ねください。 –

+0

Node.jsで例を共有してください。また、64 KBの上限を強制的に適用するプロパティサイズの制約があります。非常に大きなオブジェクトですか?ありがとうございます... –

+0

はい私はシリアライズとデシリアライズによってこれを行うことができますが、No-SQL DBはデフォルトで何も特別な手間をかけずにサポートするはずですが、Azureはテーブルタイプのストレージ(列は賢明で、簡単なキー値データに最適です)。 –

関連する問題