Я использую Google App Engine, Стандартное окружение, NDB Datastore, Python 2.7. Для каждого проекта существует ограничение в 200 индексов.
Чтобы сократить количество индексов, которые я планирую сделать:
У меня есть три поля: report_type , current_center_urlsafe_key и timestamp_entered в модели. Мне нужно найти все записи в хранилище данных, которое имеет определенные значения для current_center_urlsafe_key и report_type. Мне нужно отсортировать эти значения на основе timestamp_entered (по возрастанию и по убыванию).
Это потребует отдельного составного индекса , и я бы хотел избегать этого. Чтобы выполнить этот запрос, я планирую добавить отдельную сущность для каждой записи, объединив все три значения, например:
center_urlsafe_key_report_type_timestamp = report_type + "***" + current_center_urlsafe_key + str(current_timestamp_ms)
Затем я планирую выполнить запрос, подобный этому:
current_timestamp_ms = int(round(time.time() * 1000))
current_date = date.today()
date_six_months_back = common_increment_dateobj_by_months(self,current_date, -6)
six_month_back_timestamp = (date_six_months_back - date(1970, 1, 1)).total_seconds() * 1000
center_urlsafe_key_report_type_timestamp = report_type_selected + "***" + current_center_urlsafe_key + str(six_month_back_timestamp)
download_reports_forward = download_report_request_model.query(ndb.GenericProperty('center_urlsafe_key_report_type_timestamp') >= center_urlsafe_key_report_type_timestamp).order(ndb.GenericProperty('center_urlsafe_key_report_type_timestamp'))
download_reports_backward = download_report_request_model.query(ndb.GenericProperty('center_urlsafe_key_report_type_timestamp') >= center_urlsafe_key_report_type_timestamp).order(ndb.GenericProperty('-center_urlsafe_key_report_type_timestamp'))
Мой вопрос: если я добавлю метку времени в виде строки и добавлю префикс report_type + "****" + current_center_urlsafe_key , даст ли фильтр неравенства хранилища данных NDB требуемые результаты?