В приложении, ориентированном на базу данных, которое разработано для нескольких клиентов, я всегда считал, что «лучше» использовать единую базу данных для ВСЕХ клиентов, связывая записи с соответствующими индексами и ключами. Слушая подкаст Stack Overflow, я слышал, как Джоэл упомянул, что FogBugz использует одну базу данных для каждого клиента (так что если бы было 1000 клиентов, было бы 1000 баз данных). Каковы преимущества использования этой архитектуры?
Я понимаю, что для некоторых проектов клиентам нужен прямой доступ ко всем их данным - в таком приложении очевидно, что каждому клиенту нужна собственная база данных. Однако для проектов, где клиенту не нужен прямой доступ к базе данных, есть ли какие-либо преимущества в использовании одной базы данных для каждого клиента? Кажется, что с точки зрения гибкости намного проще использовать единую базу данных с единственной копией таблиц. Легче добавлять новые функции, проще создавать отчеты и проще управлять.
Я был довольно уверен в методе «одна база данных для всех клиентов», пока не услышал, как Джоэл (опытный разработчик) упомянул, что его программное обеспечение использует другой подход - и я немного смущен его решением ...
Я слышал, как люди цитируют, что базы данных замедляются при большом количестве записей, но любая реляционная база данных с некоторыми достоинствами не будет иметь этой проблемы, особенно если используются правильные индексы и ключи.
Любой вклад приветствуется!