Я разработал CRM для своей компании.Далее я хотел бы взять эту систему и сделать ее доступной для использования другими в размещенном формате.Очень похоже на salesforce.com.Вопрос в том, какой тип структуры базы данных я бы использовал.Я вижу два варианта:
Вариант 1. Каждый раз, когда компания регистрируется, я клонирую основную базу данных для них.
Недостатком этого является то, что я могу закончитьс тысячами баз данных.Это много баз данных для резервного копирования каждую ночь.Мой CRM использует задания cron для обслуживания, эти задания должны выполняться во всех базах данных.
Каждый раз, когда я обновляю систему с новой функцией, и мне нужно добавить новый столбец в базу данных, мне придетсядобавьте этот столбец к тысячам баз данных.
Вариант 2. Используйте только одну базу данных.
В начале КАЖДОЙ таблицы добавьте "CompanyID".В КАЖДОМ выражении SQL добавьте «and companyid = {companyid}».
Преимущество этого метода заключается в простоте только одной базы данных.Всего одна база данных для резервного копирования каждую ночь.Только одна база данных для обновления, когда это необходимо.
Недостатком является то, что если я получу подписку от 1000 компаний, и каждая из них хочет сохранить данные по 100 000 заявок, то есть 100 000 000 строк в таблице заявок, что меня беспокоит.
Кто-нибудь знает, как это делают размещенные в Интернете CRM, такие как salesforce.com?
Спасибо