Estas son algunas respuestas empíricas:
GeoPtProperty
utiliza 31B de espacio de almacenamiento.
Usando BlobProperty
varía dependiendo de qué es exactamente lo que la tienda:
struct.pack('>2f', lat, lon)
=> 21B.
- Usando pickle (v2) para empaquetar flotadores con 2 tuplas => 37B.
- Usando pickle (v0) para empaquetar flotadores que contienen 2 tuplas => aproximadamente 30B-32B (v0 usa una codificación ascii de longitud variable para flotantes).
En resumen, no parece que GeoPt
está haciendo algo particularmente inteligente. Si vas a almacenar muchos de estos, puedes usar struct
para empacar tus carrozas. Embalarlos y desempaquetarlos con struct
probablemente será diferente al costo de CPU asociado con la serialización/deserialización GeoPt
.
Si planea almacenar una gran cantidad de carrozas por entidad y el espacio es realmente importante, entonces usted podría considerar el aprovechamiento de la CompressedBlobProperty
en aetycoon.
Descargo de responsabilidad: Este es el espacio mínimo requerido. El espacio real será un poco más grande por propiedad en función de la longitud del nombre de la propiedad. El modelo en sí mismo también agrega sobrecarga (por su nombre y clave).
Por diversión ... 'GeoPt' parece estar almacenado como un valor de" punto ". Específicamente, los datos en sí parecen tener 18B: dos enteros de 1 byte y dos dobles de 8 bytes (ver [aquí] (http://code.google.com/p/googleappengine/source/browse/trunk/python/google /appengine/datastore/entity_pb.py#215)) para un total de 18 bytes. La solución 'struct' empaqueta cada flotador en 4 bytes para un total de 8 bytes. Por lo tanto, ambos tienen 13B de "gastos generales" del resto de la información de la propiedad de mis pruebas anteriores (se espera que la sobrecarga sea la misma ya que lo único que difiere entre mis pruebas es el tipo de propiedad). –
Su análisis no tiene en cuenta el tiempo de CPU; el decapado y el depickling suelen ser muy costosos desde el punto de vista informático. Sin embargo, usar una estructura es una buena idea. También merece la pena echar un vistazo al recientemente agregado ArrayProperty en AETycoon. –