Мне нравится простота хранилища данных, масштабируемость и простота использования;и улучшения, найденные в новой библиотеке ndb , просто невероятны.
Как я понимаю, лучшие практики для хранилища данных не должны писать код для обеспечения количества элементов и / или страниц, соответствующих результатам запроса, когдаколичество элементов, соответствующих запросу, велико;потому что единственный способ сделать это - получить все результаты, которые требуют значительных ресурсов.
Однако во многих приложениях, в том числе и в нашем, часто требуется увидеть количество подходящих элементов и предоставить пользователювозможность перехода на определенную страницу этих результатов.Проблема подкачки хранилища данных дополнительно усложняется требованием обойти ограничения fetch (limit, offset = X) , как описано в статье Пейджинг через большие наборы данных .Для поддержки рекомендуемого подхода данные должны включать однозначный столбец, который можно упорядочить по способу отображения результатов.Этот столбец будет определять начальное значение для каждой страницы результатов;сохранив его, мы можем эффективно извлечь соответствующую страницу, позволяя переходить к определенной или следующей странице по запросу.Поэтому, если вы хотите отображать результаты, упорядоченные несколькими способами, может потребоваться сохранить несколько таких столбцов.
Следует отметить, что начиная с SDK v1.3.1, Курсоры запросов являются рекомендуемым способом выполнения разбиения на страницы хранилища данных. У них есть некоторые ограничения, включая отсутствие поддержки операторов IN и! = фильтра.В настоящее время некоторые из наших важных запросов используют IN , но мы попробуем написать их, используя ИЛИ для использования с курсорами запросов.
Следуя предложенным рекомендациям, пользователь можетВам будут предоставлены (Next) и (Prev) навигационные кнопки, а также кнопки определенной страницы по мере навигации.Например, если пользователь нажал (Далее) 3 раза, приложение может отобразить следующие кнопки, запоминая уникальную начальную запись или курсор для каждой из них, чтобы обеспечить эффективную навигацию: (Пред.) (Page-1) (Страница-2) (Страница-3) (Страница-4) (Следующая) .
Некоторые предлагали отслеживать счетчики отдельно, но этот подход нецелесообразен, когда пользователям будет разрешено запрашивать богатый набор полей, которые будут варьировать возвращаемые результаты.
Мне нужны сведения об этих проблемах в целом и, в частности, следующие вопросы:
Какие навигационные параметры результатов запросов вы предоставляете в своих приложениях хранилища данных для обхода этих проблем?ограничения?
Если предоставление пользователям эффективного подсчета результатов и навигации по страницам всего набора результатов запроса является приоритетом, следует ли отказаться от использования хранилища данных в пользу GAE MySqlпредлагается решение .
Существуют ли какие-либо предстоящие изменения в архитектуре больших таблиц или реализации хранилища данных, которые обеспечат дополнительную возможность для эффективного подсчета результатов запроса?
Большое спасибо заранее за вашу помощь.