Sqlite3 vs Postgres vs Mysql - Rails

时间:2013-01-14 16:00:45

标签: mysql ruby-on-rails database postgresql sqlite

我想这已经多次提出了,但我再次提起它! 无论如何......在Ruby on Rails中,Sqlite3已经设置好了,不需要额外的拾取和切片,但...... 在这里和其他地方经过多次阅读之后,有人说它不具有可扩展性,而另一些人则认为它实际上可以很好。有人说MySQL对于更大的项目要好得多,而另一些人认为,只需要使用PostgreSQL。 我很想听听你对此的看法。在两个场景中。您正在为新闻发布网站(例如CNN新闻)开设一个小网站,以及您正在创建类似于Twitter的网站的另一个场景吗?

4 个答案:

答案 0 :(得分:9)

在很大程度上取决于您的申请。

一般来说,对sqlite数据库的任何 write 操作都很慢。即使是普通的:update_attribute或:create也可能需要0.5秒。但是如果你的应用程序写得不多(杀手反对 sqlite:在每次请求时写入数据库!),SQlite是大多数网络应用程序的坚实选择。它被证明可以处理中小量的流量。此外,它在开发过程中是一个非常好的选择,因为它需要零配置。它在您的测试套件中也可以通过内存模式执行得非常好(除了您有数千次迁移,因为它每次都从头开始重建)。此外,如果它的性能不再足够,从sqlite切换到例如MySQL是无缝的。

MySQL目前是一个坚如磐石的选择。未来将告诉Oracle在MySQL下会发生什么。

据我所知,PostgreSQL是最快的,但我没有在生产中使用它。也许其他人可以说更多。

答案 1 :(得分:5)

我投票给Postgres,它一直在变得更好,特别是表现明智,如果这是一个问题。通过CNN和Twitter的例子,您可以尽可能地站稳脚跟。以后你会很高兴。

答案 2 :(得分:3)

对于网站,SQLite3足以满足任何高级中产阶级流量场景的需求。因此,除非您开始受到每小时数百万次请求的攻击,否则无需担心SQLite3的性能或可伸缩性。

也就是说,SQLite3并不支持专用SQL服务器所具有的所有典型功能。访问控制仅限于您可以使用数据库文件为机器上的UNIX帐户设置的任何文件权限,没有守护程序可用,并且内置函数集相当小。此外,没有任何类型的存储过程,尽管您可以模拟具有视图和触发器的过程。

如果你担心这些问题,你应该选择PostgreSQL。 MySQL已经(间接地)被Oracle收购,并且考虑到他们在获取MySQL之前也有自己的数据库,我不会把它放在它们之前,只是将它放在某个地方。我过去在维护PostgreSQL方面也有过更顺畅的经验,而且 - 有趣的是 - 它总是感觉有点快,更可靠。

答案 3 :(得分:0)

<强>声明:   我的观点是完全偏见的,因为我从第一次出来就使用了mysql。

您的问题引入了另一个关于如何设置开发环境的论点。许多人会争辩说,您应该在开发中使用与测试/生产中相同的dbms。这完全取决于您首先要做的事情。在大多数情况下,Sqlite在开发时都可以正常工作。

我个人使用MySql和MsSql参与了比Postgres更多的网站。

我参与了一个针对客户编号擦除National Do-Not-Call列表的项目。我们在本地存储了这些数据一些区号很容易有超过500万条记录。该应用程序最初是使用MsSql以.Net编写的。它“不那么快”。我改为使用PHP和MySql(Sad在我发现Ruby之前说过)。它将在(大约)3秒内插入/消化500万行。这比通过MsSql处理它的速度快得多。我们还将呼叫日志数据存储在表中,这些表将在不到一天的时间内增长到2000万条记录。 MySql像一个冠军一样处理我们扔的所有东西。当我们设置复制时,处理自然受到了影响,但它是如此之小,我们忽略了它。

这实际上取决于您的项目以及适合项目需求的解决方案。