2010-03-16 15 views
18

Soy bastante nuevo en Rails y Heroku, pero estoy pensando seriamente en usarlo como plataforma para implementar mis aplicaciones de Ruby/Rails.Administración de BBDD para aplicaciones de Heroku

Quiero usar todo el poder de Heroku, así que prefiero el PostgreSQL "incrustado" administrado por Heroku en lugar del complemento para Amazon RDS para MySQL, pero no estoy tan seguro sin la posibilidad de acceder a mis datos en un cliente SQL ...

Sé que en una aplicación bien hecha no necesita acceder al DB, pero hay algunas situaciones (agregar filas a una tabla de configuración, ver datos no mapeados en una vista, actualizar algunas columnas para problemas de depuración, monitoreo del rendimiento, consultas en ejecución para informes, etc.) cuando esto puede ser bueno ...

¿Cómo resuelve este problema? ¿Qué experiencia tienes en una aplicación de la vida real impulsada por Heroku?

Gracias!

+0

Otra pregunta no relacionada directamente sobre este tema específico, pero hablando de Heroku desplegar y DB es: un lado malo de empujar a Heroku es que tengo que empujar el código (y reiniciar el servidor de forma automática) antes de ejecutar mis migraciones db. Esto puede causar algunos errores en los usuarios que navegan por el sitio web ... Una solución podría ser utilizar el modo de mantenimiento, pero quiero una manera sin inconvenientes y dejando mi aplicación web en ejecución cada vez. ¿Hay alguna manera? Por ejemplo, con Capistrano: - Preparo el código para implementar en un nuevo directorio - Ejecuto migraciones (hacia atrás) - Conecto el servidor al nuevo directorio ... y no tengo tiempo de inactividad. – zetarun

Respuesta

11

Lo he estado utilizando durante aproximadamente un año. Me encanta el flujo de trabajo que proporciona, pero me parece que no tener acceso a los datos es una verdadera molestia. Sus opciones para trabajar con la base de datos son:

Taps: En teoría, crea su base de datos como desee localmente y usa los grifos para copiar tanto el esquema como los datos a Heroku. En la práctica, la mayoría de las veces es increíblemente genial. Sin embargo, actualmente estoy lidiando con la limpieza después de que los grifos tradujeron algunas de mis columnas mal y dañaron mis datos.

Consola Heroku: Totalmente adecuada para todas las cosas habituales de ActiveRecord, pero lo más cercano que se puede llegar a la base de datos es ActiveRecord :: Base.connection.execute "some sql". Cuando te encuentres preguntándote sobre cómo hacer comandos de alterar la tabla, sabrás que estás en problemas.

También proporcionan un "paquete" como método para hacer una copia de seguridad de su aplicación.Esto le permite descargar todo su código más un volcado sql de la base de datos. La dificultad es que, dado que no hay acceso directo a la base de datos, no hay forma de cargar ese mismo volcado sql en la base de datos para que pueda recuperarse de dataloss, que para mí es el punto de tener esos archivos de volcado para empezar. Todo lo que puede usar es para crear una nueva aplicación (heroku bundles: animate), no restaurar una aplicación actual.

Me encantaría estar equivocado sobre alguno/todos estos. Esto parece un punto difícil curioso en el mejor servicio que conozco. El acceso a la base de datos normalmente no se siente como algo a lo que renunciar cuando la mayoría de lo que haces se hace tan fácil.

Para mí el acceso a la base de datos es como un extintor de incendios. Por lo general, no es un gran problema, pero cuando importa, importa mucho.

+0

Hola sleepycat, el problema de los taps es que solo sirve para copiar localmente el archivo db para ejecutar algunas consultas y no para agregar datos a la base de datos de producción. ¿Puedes explicar mejor el problema que tienes con los grifos? La ejecución sql de Heroku puede ser una solución buena, aunque incómoda, (solo para seleccionar e insertar, no modificar o soltar :)). lo que dices sobre el paquete es realmente triste: no es posible que Heroku ofrezca un servicio de copia de seguridad "corrupto" como ese ... sería agradable escuchar algunas otras opiniones (quizás positivas :)) sobre esto. Definitivamente: ¿está usando Amazon RDS con Heroku o está bien con PostGres? :) – zetarun

+0

Taps es aparentemente la ÚNICA manera de obtener una gran cantidad de datos en Heroku. Mi problema con esto es que parece haber cambiado (en unas pocas operaciones push/pull) de decimal (11,0) (como se especifica en la migración) a Numérico (11,0) a entero, a int (11) con datos corruptos (en mi dev db). Tenía la esperanza de limpiar el desastre creando una nueva aplicación con todos los datos en mi paquete, pero bundles: animate crea una nueva aplicación pero no carga ningún dato o código. Lo que significa que volví a usar Taps nuevamente lo que causó que el problema comenzara. Todavía me gusta mucho Heroku, pero realmente necesitan trabajar en esto. – mikewilliamson

6

Uso admin_data para darme una idea de lo que está sucediendo. Lo he usado con éxito en Heroku, así como en otros proveedores de hosting.

4

En primer lugar, permítanme comenzar diciendo que heroku es impresionante. He tenido una gran experiencia al implementar mi aplicación e integrarme con sus otros servicios, como websolr.

Dicho esto, sus preguntas:

Conseguir a sus datos

Si usted quiere ser capaz de llegar a sus datos puede utilizar taps para tirar de su base de datos remota abajo localmente. Esto puede ser útil para la depuración.

El monitoreo del desempeño

Uso RPM nuevo reliquia. Esto viene como parte de heroku, puedes habilitarlo desde el menú de complementos.

base de datos de Add-hoc consulta

Se puede escribir un controlador que permite ejecutar SQL arbitrario y ver los resultados, pero esto no es algo que recomiendo. Como sugiere admin_data es una buena solución para administrar sus datos, pero si desea hacer algo más complicado, tendrá que recurrir a la escritura del código usted mismo.

+0

Hola jonnii, gracias por tu respuesta. Probé los grifos pero es bueno copiar localmente el archivo db para ejecutar algunas consultas y no agregar datos a la base de datos de producción (excepto la primera restauración inicial). admin_data puede ser bueno (sería genial si permitiera la ejecución del código SQL :)) pero no puedo agregar filas (piense en datos para agregar en una tabla de configuración) ... Tengo que probar cómo me siento con ActiveRecord :: Base.connection.execute "some sql" (como dijo Sleepycat). – zetarun

Cuestiones relacionadas