Для базы данных:
A. Поместите все в одну базу данных, поместите столбец 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