7

現在、どのデータベースサービスを使用すべきかについての情報を収集しています。私はまだWeb開発に慣れていませんが、noSQLデータベースが必要だと考えています。

PlayでJavaを使用しています!2.2。

ユーザー登録用のデータベースのみが必要です。

これで、dynamoDBなどのキーバリューストアであるGAEndbについてはすでによく知っています。MongoDBはドキュメントデータベースです。それぞれのソリューションにどのような利点があるのか​​わかりません。

また、dynamoDBはSSDで実行され、mongoDBはインメモリであることも知っています。

mongoDBの利点は、JavaPlayです。すでにmongodbを「サポート」しています。

これで、データベースの使用量はそれほど多くないと予想されますが、アプリが大きくなった場合は、かなり高速に拡張する必要があります。

どのような選択肢がありますか?彼らにはどのような長所/短所がありますか?考慮事項:

  • 価格設定
  • スケーリング
  • 使いやすさ
  • 遊ぶ!サポート?
4

2 に答える 2

12

(開示:私はMongoHQの創設者であり、明らかにあなたが私たちを選ぶことを望んでいます)

開発者の観点からの最大の違いは、クエリ機能です。DynamoDBでは、特定のドキュメントの正確なキーが必要です。または、範囲ベースのクエリに使用できるようにキーを作成する必要があります。Mongoでは、ドキュメントの構造のクエリ、セカンダリインデックスの追加、集計などを行うことができます。

k / vのみでそれを行うことの利点は、DynamoDBがスケーリングできる方法でアプリケーションをビルドすることを強制することです。ドキュメントに対するMongoの柔軟なクエリの利点は、Playフレームワークに含まれているものを割り引いても、はるかに高速な開発を実行できることです。最初からスケーリングの決定を行う必要がないため、Mongoのようなものを使用して新しい開発を行う方が常に迅速になります。

実装に関しては、MongoとDynamoDBの両方が基本的に無制限に成長できます。Dynamoは、ストレージ、RAM、およびプロセッサの能力に関するほとんどの決定を抽象化します。Mongoでは、RAMの容量、使用するディスクの種類、ボトルネックの管理方法などを決定する必要があります。操作のハードルは異なりますが、最終的な結果は非常に似ています。非常に高速なSSD上で複数のMongoDBを実行し、驚異的にうまく機能します。

残念ながら、価格を比較するのは非常に困難です。DynamoDBの料金は、GBあたりの名目料金に基づいていますが、データアクセスの料金はお客様が負担します。データベースがよりアクティブになるにつれて、コストがどのように増加するかを確実に理解する必要があります。DynamoDBの価格を効果的に予測できるかどうかはわかりませんが、Dynamoがやりたいことに対してどれほど高価になってしまったかに(控えめに言っても)驚いた顧客がいることは知っています。

Mongoの実行は、コスト面ではるかに予測可能です。10GBのデータごとに1GBのRAMが必要になる可能性があります。冗長なセットアップを実行すると、価格が2倍になります。 1日のトラフィック量。

Mongo(およびMongoHQ)の最大の利点は、これです。いつでもプロバイダーを離れることができます。Mongoプロバイダーに腹を立てた場合、移行するのは少し面倒です。Amazonに腹を立てた場合は、まったく異なるエンジンで動作するようにアプリを書き直す必要があります。これは、期待するサポートに大きな影響を及ぼします。Mongoのホスティングは十分に競争力があり、選択したほぼすべてのMongo固有の会社から非常に優れたサポートを受けることができます(または私たちは死にます)。

スケーリングについては少し上で説明しましたが、最も簡単な答えは次のとおりです。データモデルを適切に定義すると、どちらのオプションも、実行する必要があると想像できる範囲でスケールアウトします。ただし、おそらく急速に開発されるため、Mongoでは最初はこれを正しく行わない可能性があります。これは、(RAM、ディスク速度などを単一のサーバーに追加することによって)垂直方向にスケーリングできなくなったら、シャーディングの選択方法に注意する必要があることを意味します。MongoとDynamoのスケーリングの最大の違いは、「データをどのようにスケーリングするか」を選択する場合です。全体的なスケーリング能力ではなく、決定。

だから私はモンゴを選びます(ええ!)。ただし、DynamoDBの上に素晴らしいアプリを構築できると思います。

于 2012-07-31T15:05:26.427 に答える
1

あなたが言ったように、mongoDBは他のオプションの中で一歩先を行っています。なぜなら、morphiaプラグインを使用してDBの相互作用を単純化できるからです(JPAもサポートしています)。Play Frameworkは、CRUDモジュール(管理コンソール)とセキュアモジュール(ログインシステム全体用)も提供しているので、それらを確認することを強くお勧めします。

于 2012-07-31T14:50:12.717 に答える