В системе будет размещено несколько школ (на данный момент около 50), и в каждой школе есть свои учителя, ученики, классы и т. д.
Некоторые школы бывают разных типов — например:
Начальная
Подготовительная
Средняя
Каждый тип может имеют разные функции или логику (например, системы оценок, предметы, рабочие процессы), но все школы должны использовать один и тот же серверный интерфейс.
Я хочу иметь:
Один общий серверный интерфейс для всех школ
Возможность настроить некоторую логику в зависимости от типа школы или даже конкретных школ
Хорошая производительность и масштабируемость
Нет пула подключений или проблем с накладными расходами из нескольких баз данных.
Каждая школа имеет свой собственный домен или поддомен (например, элитная школа.tn, manar.school.tn)
Единая база данных (общая схема)
Все данные хранятся в одной базе данных, с полем school_id в каждой table.
Проще в обслуживании, но данные могут быстро расти.
Пользовательские функции обрабатываются в коде в зависимости от типа школы.
Мультитенантный режим с базой данных для каждой школы
Каждая школа имеет собственную изолированную базу данных.
Безопасно, но управление миграциями и соединениями становится сложным.
Может быть тяжело, если у нас есть Более 50 школ.
Независимые серверные части для каждой школы.
Каждая школа имеет свою собственную серверную часть и базу данных.
Максимальная изоляция, но ее слишком сложно поддерживать и развертывать.
Поскольку я хочу сохранить единую серверную часть для всех школ,
Следует ли мне использовать единую общую базу данных (со school_id) или многопользовательский подход (отдельные базы данных) все же лучше для масштабируемости и удобства обслуживания в долгосрочной перспективе?
Любой совет от людей, которые создавали подобные системы для нескольких школ или SaaS-системы, был бы полезен.
Подробнее здесь: https://stackoverflow.com/questions/798 ... l-platform
Мобильная версия