Для базы данных:
А. расставит все на той же базе данных, поместите столбец tenant_id на ваших столах
Плюсы: Легко сделать
Минусы: Очень склонны к ошибкам: легко просачивать данные от одного арендатора к другому.
B. Поместите все на той же базе данных, но поставить каждого арендатора в своем собственном пространстве имен (PostgreSQL называет их схемы)
Плюсы: Обеспечивает лучшие утечки данных защиты, чем вариант A
Минусы: Не поддерживаемых всеми базами данных. AFAIK PostgreSQL и Oracle поддерживают его.
C. Установка одна базы данных на арендатор
Плюсы: Абсолютно нет шансов данных протекающих от одного арендатора к другим
Минусов: Создание новых арендаторов является более сложным. Подключение к базе данных дорого.
Я только выучил вышеупомянутые идеи от Гая Наора. Вот ссылка на его презентацию: http://aac2009.confreaks.com/06-feb-2009-14-30-writing-multi-tenant-applications-in-rails-guy-naor.html
В #B, все схемы поддержки баз данных, но с различной терминологией. В MySQL, схема и база данных являются синонимами. MSSQL также поддерживает схемы. Наше многопользовательское приложение в производстве работает с ~ 4000 (на данный момент) баз данных/схем MySQL. –