Die Prüfung, ob Unternehmen besteht in den google app engine datastore.
Was ist der beste/Schnellste Weg um zu prüfen, ob eine Entität existiert in einer google-app-engine-datastore? Jetzt versuche ich, die Person durch die Taste und prüfen ob der get() einen Fehler zurück.
Weiß ich nicht, wie sich ein Unternehmen auf dem datastore. Gibt es einen schnelleren Weg für nur diese Prüfung?
- immer eine Einheit von Schlüssel werden nie wieder ein Fehler, es gibt Keine.
- In java -
get
löst eine Ausnahme aus, wenn Person nicht gefunden: developers.google.com/appengine/docs/java/javadoc/com/google/... - ok, wusste nicht, dass.
- Ich bekomme wirklich nicht die Frage. Wenn Sie bereits über einen Schlüssel, wie kommt Ihr Unternehmen könnte nicht existieren? Es sei denn, Sie verwenden benutzerdefinierte ID/name oder anderen gleichzeitigen Anfrage löscht, die gleiche Person inzwischen. Was ich damit sagen will ist, Sie würde vielleicht betrachten Sie Ihr problem aus einer anderen Perspektiven, z.B. was genau wollen Sie erreichen ein größeres Bild zu skalieren?
- Ich bin der Generierung der Schlüssel entsprechend mit einigen Parametern. Für Beispiele, wenn ich einen Benutzer habe, kann ich eine Entität für Benutzer-Eigenschaften, die über die user_id als Schlüssel. nur mit KeyFactory.createKey(Name, id);
Du musst angemeldet sein, um einen Kommentar abzugeben.
com.google.appengine.api
worden ist veraltet, zu Gunsten von den App-Engine-GCS-client.Haben Sie sich überlegt mit Hilfe einer Abfrage? Guess-and-check ist keine skalierbare Methode, um herauszufinden, der eine Entität existiert, die in einem datenspeicher. Kann eine Abfrage erstellt werden, die zum abrufen von Elementen aus der datastore, treffen einer bestimmten Gruppe von Bedingungen:
https://developers.google.com/appengine/docs/java/datastore/queries
EDIT:
Was über die key-Abfrage? Schlüssel-nur Abfragen schneller ausgeführt als Abfragen, die Rückkehr kompletten Einheiten. Wieder nur die Tasten, verwenden Sie die Abfrage.setKeysOnly () - Methode.
Quelle: [1]: http://groups.google.com/group/google-appengine-java/browse_thread/thread/b1d1bb69f0635d46/0e2ba938fad3a543?pli=1
Was Sie vorgeschlagen, wäre in der Tat der Schnellste Weg zu wissen, ob Ihr Unternehmen besteht. Das einzige, was langsamer ist die Zeit, die es braucht, zu Holen und Deserialisieren Ihre Person. Wenn Ihre Einheit ist groß, diese können Sie langsam nach unten.
WENN diese Maßnahme (Kontrolle für die Existenz) ist ein wichtiger Engpass für Sie und Sie haben die großen Unternehmen, möchten Sie vielleicht Rollen Sie Ihre eigenen system überprüfen, indem Sie mit zwei Personen - Sie müssen Ihre vorhandenen Person mit Daten, und eine zweite Person, die entweder speichert die Referenz auf die Reale Person, oder vielleicht eine leere Einheit, wo der Schlüssel ist nur eine variation der ursprünglichen entity-Schlüssel, die Sie berechnen können. Sie können überprüfen Sie für die Existenz schnell mit der 2. Person, und Hole dann die erste Einheit nur, wenn die Daten notwendig ist.
Der bessere Weg, denke ich wäre einfach entwerfen Sie Ihre Schlüssel wie Sie wissen Sie, es wäre nicht dupliziert, oder, dass Ihre Operationen idempotent sind, so dass, selbst wenn eine alte Person überschrieben wurde, es würde keine Rolle.
Konnten Sie Holen mit einem
List<Key>
mit nur einemKey
, diese Methode gibt eineMap<Key, Entity>
dem Sie prüfen können, wenn es mit einem tatsächlichen Wert odernull
zum Beispiel:Im Allgemeinen, obwohl ich denke, es wäre leichter zu wickeln
get()
in einem try/catch-zurücknull
wenn dieEntityNotFoundException
gefangen ist.