Построение и поддержка в актуальном состоянии кэша данных на Node.js
Тезисы
Пользователи наших программных продуктов одновременно работают с набором данных, структура которого представляет собой граф. Разные группы пользователей имеют доступ к разным частям графа в соответствии с правилами доступа. Каждому пользователю необходимо оперативно видеть изменения, которые вносят в граф другие — для того, чтобы избежать конфликтов при обновлении графа.

Персистентное хранение графа обеспечивает наша платформа виртуализации данных, за которой "спрятана" графовая СУБД и другие хранилища. Но постоянно обращаться к СУБД для считывания изменений и передачи их в бэкенд и фронт приложения, конечно, нельзя. Мы построили архитектуру, в которой на стороне бэкенда на Node.JS строятся кэши различных срезов графа. Синхронизация этих кэшей с персистентным хранилищем обеспечивается с помощью механизма подписки. Далее изменения транслируются во фронтенд с помощью протокола websocket.

В результате мы построили решение, позволяющее работать с данными любой сложности, которое можно масштабировать на любое количество пользователей и групп. Мы расскажем о том, как пришли к такому архитектурному решению, исходя из функциональных требований. Также уделим внимание деталям реализации в Node.js.
Пользователи наших программных продуктов одновременно работают с набором данных, структура которого представляет собой граф. Разные группы пользователей имеют доступ к разным частям графа в соответствии с правилами доступа. Каждому пользователю необходимо оперативно видеть изменения, которые вносят в граф другие — для того, чтобы избежать конфликтов при обновлении графа.

Персистентное хранение графа обеспечивает наша платформа виртуализации данных, за которой "спрятана" графовая СУБД и другие хранилища. Но постоянно обращаться к СУБД для считывания изменений и передачи их в бэкенд и фронт приложения, конечно, нельзя. Мы построили архитектуру, в которой на стороне бэкенда на Node.JS строятся кэши различных срезов графа. Синхронизация этих кэшей с персистентным хранилищем обеспечивается с помощью механизма подписки. Далее изменения транслируются во фронтенд с помощью протокола websocket.

В результате мы построили решение, позволяющее работать с данными любой сложности, которое можно масштабировать на любое количество пользователей и групп. Мы расскажем о том, как пришли к такому архитектурному решению, исходя из функциональных требований. Также уделим внимание деталям реализации в Node.js.
Видеозапись доклада
Информация о спикере
Михаил Комм
ТриниДата
В IT с 14 лет, веб-разработкой занимаюсь более 20 лет.

Занимался созданием сайтов и различных площадок, CRM, различного IT-инструментария, автоматизацией и в дальнейшем — созданием высоко нагруженных систем. Влюблен в vanilla-JS. Самое главное правило, которое вынес за эти годы, "Усложнять — просто, упрощать — сложно".
  • Михаил Комм
    ТриниДата
    В IT с 14 лет, веб-разработкой занимаюсь более 20 лет.

    Занимался созданием сайтов и различных площадок, CRM, различного IT-инструментария, автоматизацией и в дальнейшем — созданием высоко нагруженных систем. Влюблен в vanilla-JS. Самое главное правило, которое вынес за эти годы, "Усложнять — просто, упрощать — сложно".
Все доклады секции