Архитектура базы данных (одна база данных по сравнению с базой данных клиента) для приложения Building Enterprise Web (RIA) в облаке
Мы работаем над переписыванием нашей существующей RIA и реорганизацией нашей базы данных, чтобы перестроить ее дизайн. Теперь у нас есть 2 мнения о базе данных:
(Этот вариант предназначен для хостинга на основе SaaS.)
1) Индивидуальная база данных для каждого клиента.
2) Единая БД для всех клиентов.
Мы ожидаем хорошего объема данных, некоторые из наших клиентов имеют размер от 2 ГБ до 10 ГБ. Количество столов около 100.
Могу ли я получить ответ о том, какой выбор мы будем делать?
На данный момент мы не думаем о решении NoSQL, но мы планируем поддерживать около 4-5 баз данных с помощью JPA (Java Persistence API), которое на данный момент включает MySQL, Postgres, Oracle, MSSQL.
PS: мы могли бы использовать облако Amazon для хостинга.
1 ответ
Ниже приведены три основных метода, которые обычно применяются к использованию базы данных для этого типа мультитенантных требований. Вы уже указали некоторые из них.
- Отдельные базы данных для каждого арендатора:
- очень высокая стоимость, простота обслуживания / настройки, простота настройки, простота резервного копирования, простота кодирования.
- Общая база данных, но другая схема:
- Низкая стоимость по сравнению с (1) может быстро столкнуться с проблемами с увеличенным размером базы данных, легко персонализировать для каждого арендатора, затруднить резервное копирование / восстановление для каждого арендатора, легко кодировать.
- Общая база данных Общая схема:
- Низкая стоимость, нагрузка одного арендатора повлияет на других, безопасность и разработка приложений - это сложная задача, которую трудно персонализировать для каждого арендатора, трудно восстановить / создать резервную копию.
Я думаю, что вышеупомянутые пункты подходят для хостинга в помещении или в облаке. Если вы видите, что число арендаторов растет или данные становятся больше, то лучше 1) или 2). Я использовал вариант 2) и видел, как он помогает в разработке и обслуживании.