Rails 2.0:为什么不使用sqlite3?

时间:2008-12-10 18:30:29

标签: ruby-on-rails sqlite

我一直在阅读有关如何开始使用Rails 2.0的一些教程。

(超时:天才网站名称的想法来自我刚刚提出的错字:“tutoRAILS。”抱歉,回到我的问题。)

在我阅读的大多数教程中,似乎鼓励使用MySQL而不是sqlite3。有这样的理由,比如,表现方面还是其他什么?我现在只是使用InstantRails在我的电脑上测试Rails,并且他们已经足够好将MySQL包含在他们的设置中,但我一直在使用sqlite3制作我的实验应用程序。我是否遗漏了sqlite3的一些主要警告,或者这只是其他人对MySQL的一般偏好?

7 个答案:

答案 0 :(得分:11)

SQLite是一个很好的引擎,但它仍然是一个进程中(或桌面)风格的引擎。在流程引擎中,并发性方面存在固有的弱点,这使得它们在基于服务器的引擎(如用于网站的MySQL)或其他具有大量同时写入访问权限的场景中成为一个根本上较差的选择。

在SQLite网站上查看此页面:
http://www.sqlite.org/whentouse.html

  

SQLite通常可以很好地用作中低流量网站的数据库引擎

  

如果......您正在考虑将数据库组件拆分到单独的计算机上,那么您应该考虑使用企业级客户端/服务器数据库引擎而不是SQLite。

答案 1 :(得分:4)

SQLite非常棒,但它存在多个并发读者和编写者的性能问题。

与Joel引用的一样,如果您的网站流量较低,这很少会出现问题,但在中等活动时,我有时会遇到锁定的数据库(以及挂起的查询)。在这种情况下,更好地支持多个并发用户的数据库会更好。

就个人而言,如果我使用DB-agnostic层来访问数据库,那么很容易从一个数据库切换到另一个数据库,因此很容易从SQLite开始,并在必要时转移到另一个。

答案 2 :(得分:3)

我总是从SQLite开始。如果我需要对Rails项目进行原型设计,那么我可以毫不费力地启动并运行。建立一些脚手架,运行我的迁移,编写一些测试,然后我参加比赛。

但是,如果项目达到您要部署的程度,我建议使用MySQL或PostgreSQL以获得更好的性能。

SQLite还可以为小型嵌入式应用程序带来好处,或者如果您没有为只有少数人使用的工具运行数据库的开销。

答案 3 :(得分:2)

自Rails 2.0以来,sqlite3 的默认数据库,因此肯定没有偏见。许多Rails教程早于Rails 2.0,但默认数据库是MySQL。

正如其他几个人所提到的,sqlite3是一个很好的数据库,可以快速轻松地启动和运行应用程序。对于你的Rails开发环境,它有腿 - 它可能会正常工作,即使你的应用程序变得复杂。对于Rails测试环境,它也是一个非常好的选择 - 它非常快,并且大多数测试具有相对简单的数据库需求,并且往往不需要并发或以其他方式遇到sqlite3的限制。

但是,对于许多(如果不是大多数)生产网站,可能需要为更多并发性而设计的数据库--MySQL,Postgres等。

答案 4 :(得分:2)

对于像Rails博客引擎这样的东西,SQLite即使在非常高的卷上也能很好地工作,因为它的所有读取和很少的写入。事实上,你的大多数命中都是缓存页面 - 取决于你是否允许评论以及评论线程的活跃程度 - 你可能会使用单个rails进程,因为你的Web服务器几乎可以处理每个请求。

使用SQLite数据库,每个rails进程都必须对文件系统锁定文件进行写操作,这样如果你有很多进程写入,你最终会阻塞很多。考虑这个问题的一种方法是考虑你将拥有多少个rails进程...如果它需要超过3-4个,那么SQLite可能不是一个好的选择。

答案 5 :(得分:1)

我认为主要是在教程中保持较低的摩擦水平。如果你是一个新手,我会推荐MySql,因为它更容易做教程。 sqlite是一个很好的桌面解决方案。

答案 6 :(得分:0)

请注意,Sqlite是Camping框架的默认引擎。这是有道理的,因为两者都针对小而快,而不是大而企业