2011-01-14 13 views
0

イベントチケットを販売するためのスケーラビリティの高いWebアプリケーションを作成したいと考えています。 Big TableやMongoDB、Google App Engine(GAE)やAmazon Elastic Compute Cloud(Amazon EC2)のようなCloud ServiceのようなNoSQLデータベースを使用したいのですが。NoSQLはチケット販売Webアプリケーションに適していますか?

このタイプのデータベースを使用すると、同じ場所のチケットを同時に購入することはできませんか?または、RDBMSデータベースを使用してGoogle App Engineについて忘れてしまうかもしれませんか? GAEのデータストアのような

答えて

2

私はこの質問に問題があります。すべてのNoSQLデータベースが同じように作成されるわけではなく、異なるNoSQLデータベースではデータの保存方法が異なります。一般的に、心配すべきことは次のとおりです。データは実際にはメモリに書き込まれるのではなく、ディスクに書き込まれます。ほとんどのNoSQLデータベースでこれを行うことができますが、デフォルトではできません。これは問題ではないと言いましょう。あなたは通常、MOngoやCassandraのようなデータベースにディスクにデータを書き込むことができます。データの書き込み先のサーバ数を最小限に抑えることさえできます。

問題は、真のトランザクションサポートが得られないことがあるということです。 eコマースを扱う際には、いくつかの操作が完全に成功するかロールバックされるかを問わず、すべてのタイプのトランスレーションを持つことが重要です。あなたのデータの一部だけが保存される可能性は絶対にありません。たとえば、複数のテーブル(NoSQL用語集のコレクションまたはドキュメント)にデータを書き込む必要がある場合、プロセスの途中でサーバーがダウンし、データが1つのテーブルに書き込まれるだけであれば、通常は電子商取引では受け入れられません。

私はすべてのNoSQLデータベースに精通していませんが、私が知っているものはまだこのオプションを持っていません。一方、MySQLは です。

トランザクションのサポートや不足が気にならない場合は、メモリに限らずディスクにデータを保存するように指示する限り、NoSQLを使用しても問題ありません。

3

物事はまだ、たとえば、トランザクション・セマンティクスをサポートすることができます。

http://code.google.com/appengine/docs/python/datastore/transactions.html

をそうです、あなたが何を求めているものを行うことが可能です。 (注 - GAEのDatastoreは、SQLのようなクエリを使用しているためNoSQLではありません)

1

get_or_insertのようなものを使用すると、2つのクライアントがGoogle App Engineで同時に同じリソースを受信しないことを容易に確認できます。しかし、GAEとRDBMSの間には大きな違いがありますので、決定を下す前にそれらをさらに勉強してください。

関連する問題