Sqlite3 vs Postgres vs Mysql – Rails

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

很大程度上取决于您的应用。

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

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

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

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

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

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

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

免责声明:我的观点是完全偏见的,因为我第一次出现时使用了mysql。

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

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

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

它真正归结为您的项目以及适合项目需求的解决方案。