2010-03-16 73 views
18

我是相当新的都Rails和Heroku的,但我认真地考虑使用它作为一个平台来部署我的Ruby/Rails应用程序。DB管理的Heroku应用程式

我想使用Heroku的所有功能,所以我更喜欢Heroku管理的“嵌入式”PostgreSQL,而不是Amazon RDS for MySQL的插件,但我没有那么自信,没有可能访问我的数据SQL客户端...

我知道,在一个制作精良的应用程序,你有没有需要访问数据库,但也有一些情况下(行添加到一个配置表,看到在视图中没有映射数据,更新一些列调试问题,性能监控,运行报告查询等)时,这是很好的......

你怎么解决这个问题呢? Heroku提供的真实应用程序有什么体验?

谢谢!

+0

另一个与这个特定的线程无直接关系的问题,但是谈论Heroku部署和数据库是: 推向Heroku的一个坏处是我必须在运行我的数据库迁移之前推送代码(并自动重启服务器)。这可能会导致用户在浏览网站时出现一些错误...解决方案可能会使用维护模式,但我希望有一种方法不会造成任何负面影响,并且每次都会运行webapp!有没有办法?例如,与Capistrano: - 我准备部署在新目录中的代码 - 我运行(向后)迁移 - 我将服务器切换到新目录 ...并且我没有停机时间。 – zetarun 2010-03-22 11:10:41

回答

11

我一直在使用它了大约一年。我喜欢它提供的工作流程,但我发现无法访问数据是一件麻烦事。您使用数据库的选项有:

Taps:理论上讲,您可以创建数据库,但是您需要本地数据库并使用水龙头将模式和数据复制到Heroku。在实践中,大部分时间都非常棒。不过,我目前正在处理清理后,水龙头翻译了一些我的专栏很糟糕,并损坏了我的数据。

Heroku控制台:完全适用于所有常见的ActiveRecord,但最接近数据库的是ActiveRecord :: Base.connection.execute“some sql”。当你发现自己想知道做这样的alter table命令时,你会知道你有麻烦了。

它们还提供“捆绑”作为备份应用程序的方法。这可以让你下载所有的代码和数据库的sql转储。困难在于,由于没有直接的数据库访问,因此无法将相同的SQL转储加载回数据库,因此您可以从数据通道中恢复数据,对我而言,这就是让这些转储文件开始的地方。所有你可以使用的捆绑包是创建一个新的应用程序(heroku bundles:animate),而不是恢复当前的应用程序。

我很想对任何/所有这些错误。这似乎是我所了解的最好的服务中的一个奇怪的难点。当你所做的大部分工作变得如此简单的时候,数据库访问通常并不会让你放弃。

对我来说数据库访问就像一个灭火器。通常不是什么大事,但重要的时候,这很重要。

+0

嗨sleepycat,点击的问题是,只有在本地复制数据库才能运行一些查询,而不是将数据添加到生产数据库。你能更好地解释你用水龙头解决的问题吗? Heroku的SQL执行可以是一个很好的 - 虽然不舒服 - 解决方案(仅用于选择和插入,而不是改变或下降:))。 你对这个软件包的评价真的很让人伤心:Heroku不可能提供这样的“损坏的”备份服务......听到一些其他意见(或许是积极的:)),这真是太好了。 当然:您是否使用Heroku使用Amazon RDS,或者您使用的是PostGres? :) – zetarun 2010-03-22 11:05:38

+0

点击显然是将大量数据导入Heroku的唯一方法。我的问题是它似乎已经从十进制(11,0)(如迁移中指定的)改变为数字(11,0)为整数,并且改变为int(11),损坏的数据(在我的开发数据库)。我希望通过创建一个包含我的包中的所有数据的新应用来清理垃圾,但捆绑包:animate会创建一个新应用,但不会加载任何数据或代码!这意味着我又回到了使用Taps,导致问题开始。 我仍然很喜欢Heroku,但他们真的需要在这方面努力。 – mikewilliamson 2010-03-22 21:28:14

6

我用admin_data给我一些见解,以正在发生的事情。我已经成功地将它用于Heroku以及其他托管服务提供商。

4

首先让我说,的Heroku是真棒开始。我在部署我的应用程序并与其他服务(如websolr)集成方面有很好的经验。

虽这么说,你的问题:

获取你的数据

如果你希望能够得到你的数据,你可以使用taps拉低本地远程数据库。这对调试很有用。

性能监控

使用New Relic的RPM。这是作为heroku的一部分,您可以从加载项菜单启用它。

附加特殊的数据库查询

你可以写一个控制器,它可以让你执行任意SQL并查看结果,但是这不是我推荐。建议admin_data是管理数据的一个很好的解决方案,但是如果你想做更复杂的事情,你就得自己去编写代码。

+0

嗨jonnii,谢谢你的回答。我尝试过点击,但只有在本地复制数据库才能运行一些查询,而不是将数据添加到生产数据库(除了第一次初始化恢复)。 admin_data可以很好(如果它允许SQL代码的执行会很好:))但我不能添加行(想想要添加到配置表中的数据)...我必须尝试用ActiveRecord :: Base.connection.execute“一些sql”(如Sleepycat所说)。 – zetarun 2010-03-22 10:59:59