Новое приложение node.js, использующее устаревшую базу данных, новую базу данных и слой кэширования Redis

Мы разрабатываем новую версию нашего сайта с использованием Node, но нам нужно продолжать использовать унаследованную базу данных mysql как есть, а также добавлять новые поля в некоторые модели через новые таблицы в новой базе данных и добавлять слой кэширования. Какой лучший способ сделать это? Мы думали об использовании Jugglingdb и написании нашего собственного адаптера. Это должно было бы сделать несколько вещей:

  1. Round-Robin выбрать из нескольких серверов в нашем стаде БД.
  2. кеш в Redis для соединений только для чтения
  3. знать, какие поля находятся в устаревшей базе данных, а какие - в новой.
  4. подключаться к базам данных для соединений CRUD.

Это теоретически выполнимо, используя адаптер jugglingdb? Или у кого-то есть другие рекомендации, использующие другую лучшую технику и / или совершенно другой пакет ORM?

Есть адаптер, jugglingdb-redis-hq, который имеет функцию "задний двор", которая является почти тем, что нам нужно, за исключением того, что она, по-видимому, в основном для своего рода обратного кэширования, то есть для создания постоянной копии данных с истекшим сроком в redis для база данных. Мы не хотим касаться базы данных для чтения / записи, пока мы не изменим или не вставим что-то.

1 ответ

Решение

Удивительно, что прошло 3 года с тех пор, как я разместил этот вопрос. То, что мы в конечном итоге сделали, и мы наконец-то почти с этим справились, так это стек:

  • nodejs (конечно)
  • hapijs для серверной структуры
  • Sequelize ORM, чтобы поговорить с MySQL (Sequelize имеет встроенный пул соединений!)
  • Redis для кеширования
  • graphql api с использованием модуля graphql-sequelize
  • написал сервисный уровень под прикладным уровнем hapi для выполнения запросов к GraphQL API

Важно отметить, что Sequelize не облегчал подключение к двум различным базам данных, поэтому мы приняли решение просто добавлять новые таблицы в старую схему и не вносить никаких изменений в старые таблицы. С тех пор мы закончили тем, что сделали пару второстепенных ALTER TABLEкогда мы действительно должны были. Мне все еще любопытно, могли бы мы сделать эту часть другим способом, если бы другой ORM позволил бы нам легче объединить две базы данных под колпаком.

Другие вопросы по тегам