Масштабирование SaaS с базой данных для каждой подписки - PullRequest
0 голосов
/ 24 апреля 2020

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

Это прекрасно работает с базами данных 20/30, но я уже столкнулся с некоторыми проблемами:

  • Cronjobs - У меня есть около 5 cronjobs, которые запускаются каждый день и несколько раз, и у меня будет больше в будущем. Все содержимое cronjobs напрямую связано с каждой базой данных, что означает, что мне нужно l oop через все базы данных и подключиться к ним, чтобы запросить их
  • API - программное обеспечение имеет общедоступный c API, который используется с платформами электронной коммерции. Каждый вызов API должен подключаться к правильной базе данных и выполнять операции
  • Когда я добавляю новую таблицу / столбец, мне нужно добавить ее ко всем базам данных - это делается автоматически, но мне пришлось создать скрипт, который перебирает все базы данных

Преимущества использования нескольких баз данных:

  • Проще исправить данные клиента (хотя это случалось только в 2 или 3 раза максимум)
  • Одиночный дескриптор поврежденной базы данных
  • Производительность загрузки данных в зависимости от количества строк в уникальной базе данных

В настоящее время у меня есть только несколько баз данных, но каковы последствия масштабирования программного обеспечения до 100 500 или даже 1000 в следующие 5 лет?

Теперь у меня есть возможность переделать программное обеспечение с нуля, это будет сделано в Laravel, и у него наверняка будет больше подписчиков и пользователей. Было бы целесообразно объединить все базы данных, создать единую базу данных и обнаружить различные данные по subscription_id?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...