2014-11-01 54 views
1

我很接近使用我的Rails应用程序部署到数字海洋VPS this guide使用Rails生产哪些数据库?

但是对数据库部分存在一些困惑。在我的开发中,我使用了SQLite3数据库。但该指南仅显示MySQL和PostgreSQL。那是因为SQLite3不适用于生产服务吗?我是否需要将我的SQLite3数据库转换为MySQL数据库才能传输表等?

回答

2

如果您的网站是为简单的数据存储和检索那么你可以做sqlite3,但是对于mysql或pgsql,它缺少对多用户,并发性的支持。除此之外,如果您想一次插入10k数据,那么可能需要gooogle并回到SO才能得到答案,以及如何在最短的时间内插入很多记录。 SQLite是大多用于移动游戏(数据存储),通过浏览器(如Firefox)来存储数据single用户(大部分)

现在,如果你是Postrgres和MySQL之间的决定,我会建议PGSQL因为不是mysql是坏的,但取决于你使用的引擎,你可能或可能没有某些功能,我真的很不喜欢mysql处理NOT NULL和DEFAULT值的方式。

如果您有一个使用多租户的应用程序,例如银行应用程序,您有一个用户表,然后您想在database级别区分您的用户数据,pgsql的效果最好,因为它的模式支持。例如在大学入学申请中,每所大学可以有其独立的模式结构。

为了在数据库之间进行切换,您只需要修改yor database.yml文件然后迁移它就可以了。

1

你说得对,SQLite不适合生产。 Postgres或MySQL更适合生产环境。 你必须编辑您的database.yml:

production: 
    adapter: postgresql (or mysql2) 
    encoding: utf8 
    database: databasename 
    username: yourusername 
    password: yourpassword 
    host: yourhost 
    pool: 5 

然后,在控制台,用命令迁移数据库结构:

rake db:migrate RAILS_ENV="production" 
2

SQLite通常会工作得很好,因为数据库引擎的流量低到 中等流量网站(也就是说,所有网站的99.9%)。

http://www.sqlite.org/whentouse.html

然而,上述SQLite是不是托管或SaaS的平台常用的。 由于@raulchopi已经表示Postgres是一个非常不错的选择,在Ruby/Rails社区中有很多牵引力。它通常比MySQL更受青睐,因为它使用了更严格的SQL标准解释,并且拥有一个运行该项目的功能性开源社区(与已知试图杀死MySQL的Oracle相比)。

我会建议您设置ENV变量与您的数据库的详细信息,并添加到您的database.yml

production: 
    adapter: postgresql 
    encoding: utf8 
    database: <%= ENV["MYAPP_DATABASE_NAME"] %> 
    password: <%= ENV["MYAPP_DATABASE_PASSWORD"] %> 
    host: <%= ENV["MYAPP_DATABASE_HOST"] %> 
    pool: 5 

这允许你提交database.yml(你应该,因为它是一个核心部分配置),即使你的代码是公开的。

您可能还想考虑在测试和开发环境中运行Postgres,因为它可以帮助您在部署之前捕获边缘案例。

相关问题