2010-12-18 4 views
1

Ich weiß, dass es eine Grenze von 5000 Indexeinträge pro Person ist, die bedeutet, dass ich nicht Dinge wie diese tun können: WeiterhinWie wirken sich Listeneigenschaften auf die Indexeinträge pro Entität in der Google App Engine aus?

class Foo(db.Model): 
    x = db.ListProperty(int) 
    y = db.ListProperty(int) 

foo1 = Foo(x = range(5001)) 
foo1.put() 

, wenn ich den Index in index.yaml

haben
- kind: Foo 
properties: 
- name: x 
- name: y 

dann sehe ich auch aus diesem Thread:

http://groups.google.com/group/google-appengine/browse_thread/thread/d5f4dcb7d00ed4c6

, die ich nicht t tun können sein:

foo2 = Foo(x = range(100), y=range(100)) 
foo2.put() 

weil das würde mir 10.000 Indexeinträge geben.

Aber meine Frage ist: Wenn ich habe keine Einträge in index.yaml für Foo und versuchen:

foo3 = Foo(x = range(100), y=range(100)) 
foo3.put() 

Wille, der immer noch die „BadRequestError erhöhen: Zu viele indizierte Eigenschaften für Unternehmen "Ausnahme? Von meinen Tests sieht es so aus, als würde es keine Fehler verursachen. Ist das richtig? Wie viele Indexeinträge hätte foo3 in in diesem Fall? Ist es 200 (die Summe der Längen jeder Liste)? Oder etwas anderes?

Antwort

2

Sie haben Recht - dies wird keine Ausnahmen auslösen und es werden 200 Indexeinträge erstellt. Das funktioniert bei zusammengesetzten Indizes so, dass eine Indexzeile pro eindeutiger Kombination von Werten erstellt wird, während integrierte Indizes eine Indexzeile pro Wert erstellen - sie entsprechen einem separaten Index für einzelne Eigenschaften, der definiert ist jede Eigenschaft in Ihrem Modell.

+0

Ausgezeichnet. Danke Nick! – ryan

Verwandte Themen