Heroku应用程序的数据库管理

时间:2010-03-16 18:14:38

标签: ruby-on-rails ruby database deployment heroku

我对Rails和Heroku都很陌生,但我正在考虑将它作为一个平台来部署我的Ruby / Rails应用程序。

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

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

你如何解决这个问题?你在Heroku的真实应用程序中有什么经验?

谢谢!

3 个答案:

答案 0 :(得分:11)

我已经使用它大约一年了。我喜欢它提供的工作流程,但我发现无法访问数据是一个真正的麻烦。您使用数据库的选项是:

点击:理论上,您可以在本地创建数据库,并使用点击将模式和数据复制到Heroku。在实践中,大多数时候它非常棒。但是我目前正在处理清理后,我的一些列很糟糕并且损坏了我的数据。

Heroku控制台:对于所有常见的ActiveRecord内容完全没问题,但最接近数据库的是ActiveRecord :: Base.connection.execute“some sql”。当你发现自己想要做那样的alter table命令时,你就会知道你遇到了麻烦。

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

我很想对任何/所有这些做错。在我所知道的最好的思考服务中,这似乎是一个奇怪的粗糙点。当您执行的大部分工作变得如此简单时,数据库访问通常不会让您放弃。

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

答案 1 :(得分:6)

我使用admin_data给我一些关于发生了什么的见解。我已成功在Heroku以及其他托管服务提供商上使用它。

答案 2 :(得分:4)

首先让我先说 heroku很棒。我在部署应用程序和与其他服​​务(如websolr)集成方面有很好的经验。

话虽如此,你的问题:

获取您的数据

如果您希望能够获取数据,可以使用taps在本地提取远程数据库。这对调试很有用。

效果监控

使用新的遗物RPM。这是heroku的一部分,您可以从附加组件菜单中启用它。

Add-hoc数据库查询

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