2012-06-20 4 views
5

У меня есть приложение с несколькими арендаторами на Heroku (несколько учетных записей, которые ничего не знают друг о друге), и я не уверен, как лучше всего архитектор моей базы данных. Схемы Postgres look awesome, но heroku не обрабатывает large numbers of them well.Приложение Multi-Tenant Rails 3 на Heroku с использованием PostgreSQL

Теперь мое приложение Rails в основном обслуживает JSON, так как большинство шаблонов визуализируют клиентскую сторону (используя Backbone.js). Поэтому я рассматриваю возможность перехода на MongoDB, потому что 1) каждый арендатор может получить один документ «верхнего уровня», и все может быть вложен ниже, а 2) его формат хранения так близко напоминает JSON. Мы все еще в бета-версии, поэтому его можно было снять. Являются ли эти веские причины использовать Монго? Является ли бывший даже разумным способом использования Монго?

Если бы я должен был придерживаться postgres, должно ли все принадлежать на модель аккаунта верхнего уровня (с индексами)? Если да, то как мне обрабатывать соединения? Можно ли выполнять мультииндексные соединения (общее число postgres noob)?

У нас есть около 60 тыс. Записей за один стол, но у одной учетной записи может быть только 200-1000, поэтому я беспокоюсь о присоединении ко всей таблице.

Действительно оцените любую помощь.

Update:

Мы закончили переход к VPS (Rackspace Cloud) и внедрение схемы Postgres-х годов. Никаких сожалений с этим ходом, поскольку он работает много быстрее, чем это было на Heroku, и мы имеем больше контроля над сервером.

+2

При выполнении многопользовательскую приложения все все просто прицелы все под учетной записью типа таблицы, ничего нового о том, что это гораздо проще в обращении репликации и даже осколки, когда вы делаете это как это вместо решения с несколькими схемами. О присоединениях, это так, но объединение всегда дорого, несмотря ни на что. –

+1

В этом вопросе не хватает деталей, чтобы ответить на него. Просто сообщая нам, что у вас «есть многопользовательское приложение», недостаточно информации, чтобы помочь вам решить, какое хранилище данных использовать. Любой из них может быть вполне уместным. Сколько у вас таблиц? Как «реляционные» - ваши данные? –

+0

@ MaurícioLinhares благодарит. Итак, просто добавьте account_id в каждую таблицу и проиндексируйте их, что вы говорите? – kmurph79

ответ

Смежные вопросы