2012-06-20 22 views
5

Tengo una aplicación para varios inquilinos en Heroku (varias Cuentas que no saben nada de la otra), y no estoy seguro de cómo diseñar mejor mi base de datos. Los esquemas de Postgres look awesome, pero heroku no maneja large numbers of them well.Aplicación Multi-Tenant Rails 3 en Heroku usando PostgreSQL

Ahora, mi aplicación Rails está sirviendo principalmente a JSON, ya que la mayoría de las plantillas se muestran en el lado del cliente (usando Backbone.js). Así que estoy considerando mudarme a MongoDB porque 1) cada inquilino podría obtener un documento de "cuenta" de nivel superior, y todo podría anidarse a continuación y 2) su formato de almacenamiento se parece tanto a JSON. Todavía estamos en versión beta, por lo que podría retirarse. ¿Son esas razones válidas para usar Mongo? ¿Es el primero una forma inteligente de usar Mongo?

Si tuviera que seguir con postgres, ¿todo debería pertenecer al modelo de cuenta de nivel superior (con índices)? Si es así, ¿cómo manejaría las uniones? ¿Es posible realizar uniones de múltiples índices (total de postgres novatos)?

Tenemos aproximadamente 60k entradas en una tabla hasta el momento, sin embargo, una sola cuenta solo puede tener 200-1000, por lo que me preocupa unirme a toda la tabla.

Realmente agradezco cualquier ayuda.

Actualización:

Terminamos cambiando a un VPS (Rackspace nube) y la implementación de esquemas de Postgres. No me arrepiento de este movimiento, ya que ejecuta mucho más rápido que lo hizo en Heroku, y tenemos más control del servidor.

+2

Al hacer múltiples usuarios apps de todo el mundo todo el mundo sólo alcances todo bajo una tabla de cuentas parecido, nada nuevo en eso, es mucho más sencillo de manejar replicación e incluso fragmentación cuando lo haces así en lugar de la solución de varios esquemas. Acerca de las uniones, sí, pero las uniones son siempre caras, no importa qué. –

+1

No hay suficiente detalle en la pregunta para responderlo. Solo decirnos que tienes una aplicación para varios inquilinos no es suficiente para ayudarte a decidir qué tipo de almacén de datos usar. Cualquiera puede ser perfectamente apropiado. ¿Cuántas mesas tienes? ¿Qué tan "relacional" son sus datos? –

+0

@ MaurícioLinhares gracias. Entonces, solo agregue un account_id a cada tabla e indexe lo que está diciendo? – kmurph79

Respuesta

Cuestiones relacionadas