是否有一种简单的方法来托管带有小数据文件的程序(特别是在Heroku上)?

时间:2017-01-07 03:45:13

标签: database heroku yaml

如果您go to我的Heroku托管to do list program,您可以输入测试数据,但很快就会消失。这是因为,我了解到,Heroku有一个“短暂的”文件系统,并处理用户通过post写入的任何数据。我不知道如何设置PostgreSQL数据库或任何其他类型的数据库(虽然我很快就会,因为我正在通过Hartl的Rails教程)。我只是使用一个简陋的YAML文件。它在我当地的环境中运行良好。

对于初学者解决此问题的任何建议,仅仅是学习如何托管数据库?是否有其他免费服务我可以使用,无需进一步设置即可使用?任何建议都非常欢迎。

我完全理解我不能做我正在尝试用Heroku做的事情(参见例如questions like this one)。我只想更好地理解我的选择。

更新:看起来thisthis可能对使用Dropbox托管(读/写)平面文件有一些想法。

1 个答案:

答案 0 :(得分:1)

答案是否定的。但我会花一点时间来解释原因。

我意识到你还不熟悉构建Web应用程序,数据库和所有这些东西。那没关系!这是一个很好的问题。

然而,您需要知道的是,当您尝试构建可扩展的网站时,做您正在问的问题是一个非常糟糕的主意。 Heroku是一家平台公司,专门尝试帮助开发人员构建可扩展的网站。这就是平台擅长的目标。

虽然Heroku非常容易学习和使用,但它不适合初学者。它适用于经验丰富的开发人员。如果你看看Heroku的原则是什么,以及他们在他们的平台上执行什么策略,这一点就非常清楚了。

Heroku不遗余力地使构建可扩展的网站变得非常简单,并且使得构建可扩展网站变得更加困难的事情变得非常困难。

所以,让我们先谈谈为什么Heroku首先有一个短暂的文件系统!

此设计决策迫使您(应用程序的开发人员)将应用程序所需的文件存储在更安全,更快速,专用的文件存储服务(如Amazon S3)中。这种做法带来了很多可扩展性的好处:

  • 如果您的网络服务器不需要写入磁盘,则可以多次部署它们而无需担心存储限制。
  • 不需要在Web服务器之间共享磁盘。共享磁盘通常会导致IO争用,并可能对性能产生负面影响。
  • 可以轻松地在商用服务器上横向扩展Web应用程序,因为不需要磁盘资源。

因此,您无法在Heroku上存储平面文件的原因是因为这样做会导致可伸缩性和性能问题,并且Heroku几乎不可能帮助您轻松扩展应用程序(这是他们的主要目标)。 p>

这就是为什么建议使用文件存储服务来存储文件(如Amazon S3),或者使用数据库来存储数据(如Postgres)。

我建议(个人)正在使用Heroku Postgres。你提到你正在使用rails,并且rails内置了极好的Postgres支持。它有一个所谓的ORM,你可以使用一些非常简单的Ruby对象与数据库交谈,并删除几乎所有必备的数据库背景以使事情进展。一旦你试一试,它真的很有趣/轻松!

最后:Heroku Postgres还有一个很棒的免费计划,这意味着您可以免费存储todo应用程序的数据。

希望这有帮助!