我很接近使用我的Rails应用程序部署到数字海洋VPS this guide使用Rails生产哪些数据库?
但是对数据库部分存在一些困惑。在我的开发中,我使用了SQLite3数据库。但该指南仅显示MySQL和PostgreSQL。那是因为SQLite3不适用于生产服务吗?我是否需要将我的SQLite3数据库转换为MySQL数据库才能传输表等?
我很接近使用我的Rails应用程序部署到数字海洋VPS this guide使用Rails生产哪些数据库?
但是对数据库部分存在一些困惑。在我的开发中,我使用了SQLite3数据库。但该指南仅显示MySQL和PostgreSQL。那是因为SQLite3不适用于生产服务吗?我是否需要将我的SQLite3数据库转换为MySQL数据库才能传输表等?
如果您的网站是为简单的数据存储和检索那么你可以做sqlite3,但是对于mysql或pgsql,它缺少对多用户,并发性的支持。除此之外,如果您想一次插入10k数据,那么可能需要gooogle并回到SO才能得到答案,以及如何在最短的时间内插入很多记录。 SQLite是大多用于移动游戏(数据存储),通过浏览器(如Firefox)来存储数据single
用户(大部分)
现在,如果你是Postrgres和MySQL之间的决定,我会建议PGSQL因为不是mysql是坏的,但取决于你使用的引擎,你可能或可能没有某些功能,我真的很不喜欢mysql处理NOT NULL和DEFAULT值的方式。
如果您有一个使用多租户的应用程序,例如银行应用程序,您有一个用户表,然后您想在database
级别区分您的用户数据,pgsql的效果最好,因为它的模式支持。例如在大学入学申请中,每所大学可以有其独立的模式结构。
为了在数据库之间进行切换,您只需要修改yor database.yml文件然后迁移它就可以了。
你说得对,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"
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,因为它可以帮助您在部署之前捕获边缘案例。