2 Stimmen

Kann ich die Vorteile von Eltern-Kind-Beziehungen nutzen, ohne dass es zu Konflikten im Datenspeicher kommt?

Annahmen: 1) Google AppEngine hat das Konzept der Entitätsgruppen. 2) Entitäten in einer Entitätsgruppe bilden einen Baum. Soweit ich verstanden habe, sperrt jedes put() zu einer beliebigen Entität in diesem Baum den gesamten Baum (nicht nur den unmittelbaren Elternteil) für eine gewisse Zeit. 3) Benutzer sind berechtigt, ca zu schreiben. 5 mal pro Sekunde in den Baum schreiben. 4) Es gibt keine Möglichkeit, ein nicht sperrendes Verhalten zu haben (z.B. indem man sie zu unindizierten Eigenschaften macht)

Wäre es eine kluge Idee, mein eigenes Eltern-Kind-Modell zu entwickeln, das nicht die eingebauten Key-Funktionen verwendet (da diese Entitätsgruppen erstellen würden), sondern stattdessen einige von mir erfundene Snytax-Konvertierungen verwendet? Dies würde mir erlauben, eine "Kind"-Entität über eine Abfrage abzurufen und berechnen Sie den übergeordneten Schlüssel.

4voto

Nick Johnson Punkte 99799

Die von Entitätsgruppen verwendete Vorfahrenbeziehung kann in Ihrem eigenen Code durch Verwendung einer Liste von Verweisen/Schlüsseln auf übergeordnete Entitäten modelliert werden. Stamm-Entitäten haben keine, Kinder von Stamm-Entitäten haben nur die Stamm-Entität in ihrer Liste, ihre Kinder haben die Stamm-Entität und ihren unmittelbaren Elternteil, und so weiter. Dies ist die Art und Weise, wie Vorfahren in App Engine für Indizierungszwecke implementiert sind, und es wird Ihnen erlauben, die gleiche Art von Abfragen zu machen.

1voto

Saxon Druce Punkte 17168

Sie können eine Referenzeigenschaft verwenden:

class Parent(db.Model):
    x = db.IntegerProperty()

class Child(db.Model):
    parent = db.ReferenceProperty(
        reference_class = Parent, 
        collection_name = 'children')
    y = db.IntegerProperty()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X