First, a bit of background: geomodel is a library that I wrote that adds very simple geospatial indexing and querying features to App Engine applications. This is similar to the geo-hashing approach. An equivalent location hash in GeoModel is called a "geocell".
Currently, the GeoModel library adds 13 properties (location_geocell__n_, n = 1..13) to each location-oriented object. For example, an object may have property values, such as:
location_geocell_1 = 'a'
location_geocell_2 = 'a3'
location_geocell_3 = 'a3f'
...
This is required so as not to use the inequality filter during spatial queries.
The problem with the 13-property approach is that for any geo-query that the application would have to run, 13 new indexes must be defined and built. This is definitely a maintenance hassle, as I just painfully realized rewriting the demo application for the project. This leads to my first question:
QUESTION 1: Are there significant storage costs for each index? those. if I have 13 indexes with n entities in each compared to 1 index with 13n objects in it, then the former is much worse than the latter in terms of storage?
It seems that the answer to (1) is no, for in this article , but I just wanted to see if anyone had any other experience.
GeoModel, 13 StringListProperty, location_geocells, :
location_geocells = ['a', 'a3', 'a3f']
index.yaml. :
2: 13 1 StringListProperty, ; :
query.filter('location_geocell_%d =' % len(search_cell), search_cell)
:
query.filter('location_geocells =', search_cell)
, _n_ , _13n_ .
, (2) , , № 6 , , , - .
, - , , / ( , w.r.t. index.yaml), , ! geomodel geomodel.py