2012-05-30 15 views
8

Estoy en el proceso de crear una aplicación que hace un uso intensivo de las extensiones PostGIS para PostgreSQL. He encontrado esto:Opciones para probar PostgreSQL PostGIS en Heroku?

https://devcenter.heroku.com/articles/is-postgis-available

lo que sugiere a mí que sólo puedo conseguir PostGIS en Ronin y por encima de DB. Lo cual está totalmente de mi parte para la producción, mi plan era usar ese nivel de DB para mi sistema de producción de todos modos.

Sin embargo, también tengo un entorno de escenario y desarrollo en Heroku, lo que significa que también necesito tener una base de datos PostGIS habilitada para esos entornos, ya que no puedo ejecutar pruebas de un DB de producción. Necesito una opción para apoyar estos entornos y como tal me pregunto lo siguiente:

se puede conectar a una base de datos en Heroku, excepto a través del proceso de complementos?

Intenté agregar manualmente una configuración de var para un DB de prueba, pero no solo funciona mágicamente a través de pg: promover - hay otra cosa que controla cómo Heroku considera una base de datos válida.

Cualquier otra opción que la gente pueda pensar sería apreciada. Sé que hay una versión beta cerrada de SpacialDB que podría funcionar (ya se está investigando), pero ¿hay algo más que se pueda imaginar? Simplemente no estoy dispuesto a pagar $ 400 extra por mes por DB dedicados para prueba/etapa.

+0

¿Ha encontrado una solución a esto? – mea36

Respuesta

-1

Quizás se haya perdido los anuncios recientes de una base de datos de desarrollo restringida de la página 9.1 en Heroku?

https://postgres.heroku.com/blog/past/2012/4/26/heroku_postgres_development_plan/

También el nuevo plan de la grúa, http://blog.heroku.com/archives/2012/5/8/crane-production-database-plan-launched/ que también puede funcionar para usted.

+2

No me perdí ninguno de esos, si sigues mi enlace verás que ninguno de ellos ofrece extensiones PostGIS. No estoy seguro de por qué ... todavía estoy trabajando con el apoyo de Heroku en esa pregunta. – smyrgl

0

Utilizamos PostGIS en Heroku.

1) Puede conectarse a una aplicación heroku no compartida desde "cualquier lugar". Una vez que se ejecuta una base de datos más grande, puede usar la cadena de conexión para conectarse con cualquier aplicación o la línea de comandos de postgres. Hay muy poco que no puedas hacer en la base de datos. No puede hacer esto con un db compartido más pequeño.

2) Tenemos DB dedicado para nuestro entorno de ensayo. Si no haces esto, entonces no estás realmente probando en las mismas condiciones que prod y no podrás detectar problemas. Usamos Rails, por lo que queremos un DB "idéntico" para ejecutar migraciones en contra antes de ir a producción.

3) Ejecutamos Postgres localmente (y en Jenkins) para ejecutar nuestras pruebas en contra.

3

Puede crear (aprovisionar) y eliminar una base de datos de nivel de producción por necesidad. La base de datos de nivel de producción y nivel de entrada le costará $ 0.07/hora (o $ 1.67/día); mantiene la base de datos aprovisionada a tiempo completo que le costará $ 50 al mes. Ver Heroku Postgres Production Tier Technical Characterization.

disposición una base de datos

1. Esto puede hacerse en una o dos líneas.

-bash> heroku addons:add heroku-postgresql:crane --remote staging 
Adding heroku-postgresql:crane on cool-app-0007... done, v36 ($50/mo) 
Attached as HEROKU_POSTGRESQL_GOLD_URL 
The database should be available in 3-5 minutes. 
! The database will be empty. If upgrading, you can transfer 
! data from another database with pgbackups:restore. 
Use `heroku pg:wait` to track status.. 
Use `heroku addons:docs heroku-postgresql` to view documentation. 

A pesar de que el proceso de aprovisionamiento tarda 3-5 minutos, el símbolo del sistema volverá rápidamente.Según el mensaje, puede realizar un seguimiento del estado de aprovisionamiento:

-bash> heroku pg:wait --remote staging 
Waiting for database HEROKU_POSTGRESQL_GOLD_URL... available 

Tenga en cuenta que usted puede hacer los dos comandos anteriores en una sola toma (&& asegura que el segundo comando se ejecuta sólo después de las primeras declaraciones de éxito):

-bash> heroku addons:add heroku-postgresql:crane --remote staging && heroku pg:wait --remote staging 

2. Una vez completa ("disponible"), ajuste DATABASE_URL utilizando el nombre antes mencionado (es decir HEROKU_POSTGRESQL_GOLD_URL). Lo hago de una sola vez con el fin de evitar copiar/pegar:

-bash> heroku config:set DATABASE_URL=`heroku config:get HEROKU_POSTGRESQL_GOLD_URL --remote staging` --remote staging 
Setting config vars and restarting cool-app-0007... done, v37 
DATABASE_URL: postgres://i28asd172a3k2:[email protected]s.com:5562/eexf3mwha92jk6 

3. migrar o restaurar.

La primera vez que hace lo anterior, tendrá que configurar la base de datos (por ejemplo, mediante la ejecución de las migraciones: heroku run rake db:migrate --remote staging y posiblemente seguido por heroku restart --remote staging).

Posteriormente va a restaurar desde una copia de seguridad, y así poder continuar donde lo dejó:

-bash> heroku pgbackups:restore HEROKU_POSTGRESQL_GOLD_URL b001 --confirm cool-app-0007 

HEROKU_POSTGRESQL_GOLD_URL (DATABASE_URL) <---restore--- b001 
                  HEROKU_POSTGRESQL_ROSE_URL (DATABASE_URL) 
                  2014/01/12 03:19.29 
                  16.3KB 

Retrieving... done 
Restoring... done 

crear una copia de seguridad

-bash> heroku pgbackups:capture HEROKU_POSTGRESQL_ROSE_URL 

HEROKU_POSTGRESQL_ROSE_URL (DATABASE_URL) ----backup---> b001 

Capturing... done 
Storing... done 

eliminar la base de datos

-bash> heroku addons:remove HEROKU_POSTGRESQL_ROSE_URL 
Removing HEROKU_POSTGRESQL_ROSE_URL on cool-app-0007... done, v35 ($50/mo) 

Para obtener más información, consulte

Cuestiones relacionadas