-1

Googleのデータストアでトランザクションがどのように実装されているかは不明です。Google Cloud Datastore Transactions実装

  1. 私が到達しようとしているリソースをどのように決定しますか?なぜなら、我々はすべての要求に対して使用しなければならないグローバルトランザクションオブジェクトを受け取っているからです。私は疑問を持っています。これはデータベースレベルではなく、クライアントライブラリレベルで行われます。

  2. このトランザクションは読み取りと書き込みの両方で機能しますか?つまり、私はトランザクションを使用してドキュメントのロックメカニズムを実装することができます。つまり、2人のユーザーが同時にアクセスすることはできません(マルチスレッド/マルチプロセスのアプリケーションを扱う場合はmutexなど)。

  3. 最後の質問です。データストアに実装されたトランスナショナル・メカニズムは、どのように知っていますか?私は、高水準のアーキテクチャー、あるいはおそらくより良い理解を得るために、説明の中で短いかもしれないダイアグラムを処理するかもしれません。

これは関連するものではありませんが、Google Cloud Functionsとnode.js環境をプロジェクトに使用しています。私は、これが使用法に厳しい制限を加えるべきではないと信じています。

答えて

1

あなたが求めていることは完全にはっきりしていませんが、Cloud Datastoreとの取引については適切な文書があります。私はあなたがこのトピックのための概念のドキュメントを読んを取るお勧め:Transactions

  1. トランザクションは、データベースレベルの概念(サーバー側)です。

  2. トランザクションは読み取りと書き込みをサポートします。オプティミスティック・ロックとして実装されているため、別のクライアントがmutexのように読み取られることを阻止することはありませんが、トランザクションが失敗して適切にロールバックされます。

  3. ドキュメントでは、ドキュメントの使用に関連する詳細について説明しています。トランザクションの外

、クラウドデータストアの分離レベルは、コミット読み取りに 最も近いです。トランザクション内では、シリアライズ可能な分離は です。これは、このトランザクションによって読み取られたり変更されたデータを他のトランザクションが同時に変更することができないことを意味します( )。 serializable isolation wikiを参照してください。 の詳細については、Transaction Isolationの記事を参照してください。

+0

リソースがロックされているかどうかを確認する必要があるとします。したがって、クライアントAとクライアントBは、このリソースがすでにロックされているかどうかを確認するためにトランザクション内のデータストアにリクエストを送信します。この場合、この要求のいずれかが失敗します(両方の読み込み時)。両方ともトランザクション内でデータストアに書き込もうとすると、そのうちの1つはもちろんそれを実行できません。しかし、もし彼らがコードの1行だけで欠場すれば、両方の書き込みが成功し、クライアントAがクライアントBのレコードをオーバーライドするチャンスがあります。 – QuestionAndAnswer

+0

私はちょうど確認するために、他のユーザーがその文書を編集できるかどうか(読み取りはOKです)。 – QuestionAndAnswer

関連する問題