3

Von What can be done in a transaction (Highlight von mir):Definition für die maximale Anzahl von Entitätsgruppen, auf die in einer ndb-Transaktion zugegriffen wird?

All Datenspeicher-Operationen in einer Transaktion auf Entitäten in die gleiche Entitätsgruppe arbeiten muß, wenn die Transaktion eine einzelne Gruppe Transaktion ist, oder auf Einheiten in maximal fünfundzwanzig Einheit gruppiert, wenn die Transaktion eine gruppenübergreifende (XG) Transaktion ist.

Gibt es eine tatsächliche Definition, die dieser 25 Nummer entspricht, auf die ich in meinem Python-App-Code verweisen kann? Oder ein API-Aufruf, der es zurückgibt? Ich würde es vorziehen, einen zu verwenden, wenn verfügbar, anstatt meine eigene Definition davon zu erstellen, nur für den Fall, dass Google beschließt, es zu ändern ...

Update: Zur Klarstellung, ich spreche über das Äquivalent von _MAX_EG_PER_TXN, die gerade entdecken ich in LiveTxn._GetTracker() aus dem google/appengine/datastore/datastore_stub_util.py Datei des SDK:

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

Als Seite beachten sie für das Debuggen groß sein würden, wenn die verfolgten Gruppen Infos von self._entity_groups irgendwie zugegriffen werden können, wenn ein solche Ausnahmen ausgelöst werden.

+0

Wow 25 Entitätsgruppen. Früher waren es nur 5, das waren einmal XG-Transaktionen ;-) –

Antwort

2

Entity-Groups sind die Entitäten auf oberster Ebene (kein Parent/Ahnen). Jede untergeordnete Entität, die auf sie als Vorfahren verweist, fällt in die gleiche Entitätsgruppe.

Es gibt keine programmatischen Weg, um die API zu bitten, eine Zählung zu bekommen, aber man sollte es feststellen kann, in Ihrem eigenen Code entweder durch explizites Design:

  • nicht mehr als 25 Einheiten in einer Transaktion bei Verwendung von Top-Level-Einheiten
  • nicht mehr als 25 verschiedene Eltern, wenn das Kind Einheiten mit

die Definition von Entity-Gruppen in die zugrunde liegenden Megastore Speicherschicht eingebrannt und so ist unwahrscheinlich, Veränderung in irgendeine Weise anders als wir ich Erhöhen des Limits oder Entfernen des Limits.

EDIT: FR protokolliert: https://github.com/GoogleCloudPlatform/google-cloud-datastore/issues/121

+0

Dies beantwortet die Frage, wie man die Gruppen zählt :) Ich arbeite bereits an einem expliziten Design, um das zu erreichen, ich war nur auf der Suche nach einem Programm Definition dieses 25 Wertes, der in diesem Design verwendet werden soll. –

+0

Fair genug. Es ist keine unvernünftige Bitte, dafür eine Konstante zu haben. Ich werde darüber nachdenken, wo ich die Anfrage einreichen sollte: D –

+0

Cool, thx! Dies beantwortet auch meine Frage :) Pls Update die Antwort mit einem Zeiger auf das Tracking-Problem, wenn/wann verfügbar, so dass es Sterne sein kann. Danke. –

Verwandte Themen