запуск большого количества "подсчета QL" в хранилище данных noSQL "GAE" - PullRequest
1 голос
/ 08 февраля 2011

, прежде чем мы начнем, позвольте мне дать вам некоторую информацию о нашей среде:

  • полностью написана на Java / J2EE.
  • он разработан для развертывания в GAE "Google App Engine"
  • его графический интерфейс разработан GWT.
  • наша проблема в основной проблеме разработки.

Вот моя проблема,

  • Я создаю веб-приложение, в котором пользователи "онлайн" могут искать записи на этом веб-сайте.
  • Сначала откройте веб-сайт careerbuilder.com и выполните поиск по любому ключевому слову, например, «Бухгалтерский учет».
  • откроется страница, в [Узком поиске] есть способ, позволяющий вам легче перейти к вашей целевой работе «давайте назовем это фильтром», множество заданий там внизу.
  • поисковый фильтр включает подфильтры [Категория, Компания, Город, Штат].
  • каждый субфильтр имеет много вариантов или вариантов.например, для «Штат имеет (Калифорния, Айова, Канзас и т. д.)» рядом с каждым из них указано количество заданий, которое соответствует вашему текущему выбору фильтра / подфильтра.Вы найдете его в скобках, т.е. (23)

Теперь мы хотим разрешить эту функцию фильтра и хотим сделать ее быстрой.Создание запроса подсчета для каждой опции дополнительного фильтра будет эффективной идеей.

Имейте в виду, что:

  • пользователи могут добавлять / удалять записи.
  • также списки могут истечь.
  • количество подфильтров для нас выше «может достигать 20».
  • каждый субфильтр имеет от 2 до 200 опций.

Мы ищем лучшую практику или предложение алгоритма или чего-либо еще для решения этой проблемы.

вот 2 варианта, которые мы достигли до сих пор:

1. Построение таблицы статистики, чтобы сохранить в ней эти результаты, а затем обновлять ее при каждом изменении номера списков, а также сохранять ночной фон.работа по пересчету результатов.и мы можем показать количество результатов непосредственно из этой таблицы.

2.строить древовидную структуру данных для загрузки в память и сохранения в таблице при каждом ее обновлении.это дерево содержит результирующие числа списков в каждой опции подфильтров.

хотя я все еще думаю, что этого недостаточно !!!Кто-нибудь может предложить лучшую идею?Все комментарии, вопросы, предложения очень приветствуются.

С уважением

Мохаммед С.

1 Ответ

1 голос
/ 08 февраля 2011

Вы заметили, как приложения Google редко дают точные подсчеты?Особенно при использовании фильтров?Вы всегда получаете эти предположения, такие как «более 1000» или «десятки тысяч» или «показ 20 из примерно 23123123 результатов».Ну, теперь вы понимаете, почему.Добро пожаловать в мир noSQL

(хотя, честно говоря, счетчики с фильтрами также плохо работают в sql).

Это не решение, а обходной путь, но оно распространено:

  • сделать запрос;
  • попытаться загрузить 1001 сущность, даже если вы хотите показать только 20;
  • , если она работает, показать «более 1000»;если вы получите меньше 1001, покажите точное число.

Это может быть довольно эффективным, и пользователи, похоже, не возражают (или не заметят).

...