2015-03-10 2 views
0

Я работаю над SPA, использующим BreezeJS и AngularJS, обрабатывая множество объектов (один из типов имеет ~ 60k объектов). Это не обычный веб-сайт, это сделано для определенной цели.BreezeJS: Indexed Cache

В большинстве случаев сущности отображаются в отсортированных списках.

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

Результаты entityManager в рабочем потоке импортируются в entityManager в потоке пользовательского интерфейса, и далее следует дальнейшая обработка. Все это прекрасно работает, моя единственная проблема в том, что выполнение orderBy на таком огромном наборе данных слишком длительное время для завершения Бриза (2,5-3,5 сек) без индексов.

Это означает, что показ следующей страницы является неприемлемо медленным, если порядок на месте.

  • Есть ли способ оснастить кеш Бриз индексами и заставить Бриз использовать их каким-то образом?
  • Если нет, эта функция планируется реализовать?

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

ответ

0

Breeze cache does нет есть индексы (индексы?) Сегодня ... даже для первичного ключа. Это потребует значительного увеличения размера и сложности кода для поддержки их, и мы не чувствовали, что это будет полезно для рабочих нагрузок, которые мы обычно видим.

Элементы 60K четко меняют это уравнение.

Я думаю, что индексирование будет прохладным дополнительным модулем, плагином какого-то рода. Я не думаю, что это было бы трудно поддерживать, учитывая, что EntityManager вызывает события, когда что-то меняется в кеше. Если вам хочется принять участие в сообществе ... возможно, в Breeze Labs, я с удовольствием посоветую и помогу немного.

+0

С уважением, это имеет смысл. Я также не планирую внедрять деревья индексов на стороне клиента, но поскольку гораздо проще сортировать по целым числам, а не сравнивать строки, эти индексы (:)) действительно будут простыми объектными картами, благодаря которым сортировка может быть выполнена быстрее , –