Совместное использование базы данных SQL для нескольких клиентов - PullRequest
0 голосов
/ 09 мая 2011

Я создаю приложение IPad, которое будет иметь бэкэнд SQL Server.Мой вопрос заключается в том, лучше ли мне создавать новую базу данных для каждого клиента, когда он регистрируется, или я должен создать сценарий SQL, который генерирует новые таблицы для клиента при регистрации.

например, сценарий 1 одинбаза данных на пользователя.Для 100 пользователей у сервера sql будет 100 отдельных БД.т.е. User1_DB, User2_DB ......

Сценарий 2 Новый набор таблиц для каждого пользователя.Для 100 пользователей сервер sql будет иметь 100 отдельных наборов таблиц в одной базе данных.например, база данных MyIPad - Table1_User1, Table2_User1, Table1_User2, Table2_User2

В обоих сценариях у нас будут автоматические сценарии, которые будут генерировать таблицы / базу данных при регистрации пользователя.

Так что мой вопрос - какой сценарийэффективнее?Или оба сценария неверны, поэтому как мне подойти к этой проблеме?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 09 мая 2011

Я бы вообще не пошел по этому пути, а скорее сделал бы это на уровне строк, где каждая строка каждой таблицы привязана к определенному пользователю (или компании / пользователю, если приложение может быть зарегистрировано для конкретной компании).со многими пользователями).Создание отдельных таблиц / баз данных просто невозможно масштабировать для значительного числа пользователей.

0 голосов
/ 09 мая 2011

Я бы сказал, что если у вас нет явной необходимости иметь такое большое разделение, я бы предложил использовать один набор таблиц и использовать таблицу клиентов с идентификатором клиента для дифференциации данных клиента.Вы по-прежнему можете ограничить доступ к базе данных с помощью хранимых процедур, так что ни один клиент не сможет увидеть данные другого клиента, но вам не придется иметь дело со всеми издержками нескольких баз данных или тысяч таблиц.

есть разделение, однако, использовать разные базы данных.Разделение базы данных дает вам возможность лучше контролировать безопасность данных.Если вам нужно использовать разные объекты для каждого клиента, вам нужна полная безопасность отдельных баз данных.Это также даст вам мобильность, необходимую для перемещения одного клиента на другой сервер и т. Д.

Уже есть аналогичный вопрос о SO, и они следовали моему основному совету.По сути, Wordpress начинал с одной базы данных, но по мере расширения они заканчивали тем, что использовали одну базу данных для каждого клиента, чтобы они также могли масштабироваться.Вот ссылка:

PHP Web Application: вопрос о наилучших методах проектирования баз данных mysql

...