0

私はdjangoappengineを使用していますが、アプリケーションの高いデータストアで最終的な一貫性を処理する方法にいくつかの問題があると思います。高レプリケーションデータストアのDjangoAppEngineと最終的な一貫性の問題

まず、エンティティグループはdjangoappengineに実装されていません。

第2に、あなたがdjangoappengine getを実行すると、基本的なアプリエンジンシステムが最終的に一貫しているアプリエンジンクエリを実行していると思います。したがって、キーを使用して整合性を取ることさえできません。

これらの2つのステートメントが真であるとすれば、高レプリケーションデータストアでdjangoappengineを使用して複雑なアプリケーションを構築するにはどうすればよいですか?値を保存してから同じ値を取得しようとするたびに、同じ値になるという保証はありません。

答えて

1

はdjangoappengine/DB/compiler.pyで見てみましょう:get_matching_pk()

をあなたがPKでdjangomodel.get()を行う場合は、それが取得()はGoogle App Engineに変換します。 それ以外の場合は、クエリに変換されます。ここに改善の余地があります。修正を提出しますか?

+0

よろしくお願いいたします。ですから、私の2番目の声明は実際には間違っています。その場合、独自のロックを作成することができます。あなたはトランザクション内でテストとセットを行う必要があり、オブジェクトルックアップはそのpkだけを使用する必要があります。決して完璧ではありませんが、特定の種類のレースを止めることができます。 – speedplane

+0

親キーをサポートするgithubのプルリクエストもあります。 また、非pk django get()呼び出しがまだappengine Get()呼び出しに変換されるように、compiler.pyを変更することは可能であるようです。 – dragonx

0

djangoappengineについては実際にはわかりませんが、キーのみを含む場合はappengineクエリがキーとみなされ、常に一貫した結果が得られます。

+0

ありがとうございますが、appengineクエリ!= djangoappengineクエリです。また、キーのみのクエリが混乱していると思います。 – speedplane

0

AppEngineモデルの上に置いたシステムが何であっても、データストアに保存するとキーが得られます。 HRデータストアのキーを使用してエンティティをルックアップすると、最新の結果が得られることが保証されます。

+0

あなたは一般的に話していますか、またはdjangoappengineが実際にどのように動作するかを理解していますか? – speedplane

関連する問題