Я пытаюсь понять, как встроенные индексы работают в AppEngine. В документации говорится, что передача «indexed = False» в конструктор прекращает индексирование свойства, но это, похоже, не так.AppEngine - ndb - Неиндексированные свойства не работают?
У меня есть следующий код:
import webapp2
from google.appengine.ext import ndb
class IndexedClass(ndb.Model):
prop1 = ndb.IntegerProperty(indexed=True)
prop2 = ndb.StringProperty(indexed=True)
class UnindexedClass(ndb.Model):
prop1 = ndb.IntegerProperty(indexed=False)
prop2 = ndb.StringProperty(indexed=False)
class MainHandler(webapp2.RequestHandler):
def get(self):
for i in range(10):
IndexedClass(
prop1=i,
prop2="Item %s" % i
).put()
UnindexedClass(
prop1=i,
prop2="Item %s" % i
).put()
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug=True)
Если выполнить его в Гаэль и создать статистику вы получите это:
Он сообщает те же встроенные индексы для обоего индексируемых и неиндексированных классов.
Буду очень признателен, если кто-нибудь может указать мне, что я делаю неправильно.
Аналогичное приложение развертывается на AppEngine имеет более неиндексированные свойства в модели, и объявлен как это: -
aProperty = ndb.KeyProperty(kind='Geography', indexed=False)
Как вы можете видеть, что мы имеем над 2M объектов с помощью 947Mb. У нас есть 40M-индексы с использованием 5Gb данных. Эти нежелательные встроенные индексы занимают в 5 раз больше места, чем сами объекты. Таким образом, мы платим в 5 раз больше за хранение, а в 10 раз больше за запись ops, чем указано в документации.
Спасибо заранее, Марк
Вы не ** показываете нам индексы - вы нажали на «Datastore Viewer», ** не ** «Индексы хранилища данных». Пожалуйста, исправьте это и отредактируйте свой Q соответственно! –
Это верно, мой вопрос связан со встроенными индексами. На изображении отображается автоматически созданная статистика хранилища данных. Посмотрите на столбцы 4 и 5 прилагаемого изображения. Нужно ли создавать встроенные индексы для неиндексированных свойств? Это очень важно при записи объектов в BULK по мере того, как операции записи резко возрастают. Благодарю. – marc