3

(私からハイライト):トランザクションは、単一のグループ 取引である、またはの最大のエンティティであれば、トランザクション内のndbトランザクションでアクセスされるエンティティグループの最大数の定義? <a href="https://cloud.google.com/appengine/docs/python/datastore/transactions#Python_What_can_be_done_in_a_transaction" rel="nofollow">What can be done in a transaction</a>から

すべてのデータストアの操作は 同じエンティティグループ内のエンティティ上で動作する必要がありますトランザクションがクロスグループ(XG)トランザクションの場合は、エンティティ のグループになります。

私のPythonアプリケーションコードで参照できる25の数字に対応する実際の定義はありますか?またはそれを返すAPI呼び出し?私は利用可能であれば、自分の定義を作成するのではなく、Googleが道路を変更することを決める場合には、1つを使用することをお勧めします。

更新:明確にするために、私はSDKのgoogle/appengine/datastore/datastore_stub_util.pyファイルからLiveTxn._GetTracker()にスポット_MAX_EG_PER_TXNの:側として

 if self._allow_multiple_eg: 
     Check(len(self._entity_groups) < _MAX_EG_PER_TXN, 
       'operating on too many entity groups in a single transaction.') 

は、このような例外が発生したとき self._entity_groupsから追跡されたグループの情報を何らかの形でアクセスすることができれば、それはデバッグのために素晴らしいことと思います注意してください。

+0

うわー25のエンティティグループを。これまではXGトランザクションを追加したのは5回でした;-) –

答えて

2

エンティティグループは、トップレベルのエンティティです(親/祖先はありません)。祖先としてそれを参照するすべての子エンティティは、同じエンティティグループに属します。

ありカウントを取得するAPIを依頼するプログラム的な方法はありませんが、明示的なデザインを通して、あなた自身のコードでそれを決定することができるはずです:トランザクションで

  • これ以上の25以上のエンティティ子エンティティ

エンティティグループの定義は、基礎となるMegastore蓄積層に焼いているので、私たち以外の方法でそう変更があるを使用している場合

  • ない25以上の異なる親をトップレベルのエンティティを使用している場合私制限を増やす、または制限を削除する。

    EDIT: FRがログに記録:https://github.com/GoogleCloudPlatform/google-cloud-datastore/issues/121

  • +0

    これはグループのカウント方法に関する質問に答えています:)これを達成するための明確な設計にはすでに取り組んでいますが、その設計で使用するために、その25の値の定義。 –

    +0

    十分です。それはそれのための定数を持っている不当な要求ではありません。私は要求をどこに提出すべきかについて考えます:D –

    +0

    クール、thx!これはまた、私の質問に答える:) Plsは、追跡の問題へのポインタを使用して/可能であれば、答えを更新するので、star'dすることができます。どうも。 –

    関連する問題