在Mysql和PostgreSQL之间,这是一个非常大规模的数据套件......例如,数以百万计的记录......我想,我应该使用PostgreSQL ......任何建议的人?
答案 0 :(得分:5)
我在类似情况下都使用过这两种情况,并且数据库的庞大规模似乎并没有以截然不同的方式影响它们的缩放。 PostgreSQL更加完整和可靠,并且可以更好地支持复杂查询及其优化,而MySQL可以在极其简单的查询的检索速度方面发挥作用;但这些方面与庞大的问题无关。
答案 1 :(得分:4)
我认为这取决于你对“更好”的意思。你可能应该 在选择其中一个之前确定您的需求。
更快?更可靠?允许复制?可以做更复杂的查询吗? 您的应用程序是否适合“分片”,在这种情况下您可能 想要一个可以更容易聚类和管理的数据库,或者 你需要一个庞大的链接表中的所有东西,在这种情况下你 可能需要对许多内核和大内存的良好支持。你有没有 一个复杂的身份验证设置或它是一个简单的“一个用户”Web应用程序? 二进制对象中的大量数据,还是简单的数字和字符串? 你将如何进行备份?
MySQL和PostgreSQL似乎都是非常强大的数据库,两者兼而有之 已成功大规模使用,所以我建议你需要 首先确定您的应用程序的特定需求。
我倾向于PostgreSQL,但那主要是因为我有 几年前,MySQL发生了一些丢失数据的灾难,我还没来 再次相信它。 PostgreSQL在能力方面非常好 轻松备份。
答案 2 :(得分:4)
Postgres拥有更丰富的能力和更好的优化者;它能够进行散列连接通常比连接MySQL的速度快得多。据传,对于简单的表扫描,MySQL更快。您在下面使用的存储引擎也非常重要。
在某些时候,扩展成为两种选择之间的选择:通过购买更大的硬件进行扩展,或通过引入新机器(可以将数据分片,用作从属副本或尝试主 - 主设置)进行扩展 - Posgres和MySQL都为这些东西提供了各种质量水平的解决方案。
目前,数百万行表数据适合标准服务器的内存;如果这就是你所做的一切,你不需要担心这些东西 - 只需优化你最熟悉的数据库,以确保创建正确的索引,缓存所有内容(并在适当的地方使用memchached)等等。
人们提到Facebook使用MySQL;那是真的。有点因为他们实际上在做的是使用数百(现在数千?)的mysql数据库,所有这些都负责他们自己的小数据横截面。如果您认为可以将facebook加载到MySQL(或postgres或oracle)实例中......好吧,他们可能很乐意听取您的意见; - )。
一旦你进入太字节的土地,事情变得困难。有专门的解决方案,如Vertica,Greenplum,Aster Data。有各种“nosql”数据存储区,如Cassandra,Voldemort和HBase。但我怀疑你需要走到如此极端。只需购买更多内存。
答案 3 :(得分:2)
嗯,这最终取决于你最满意的是什么。根据MySQL的说法,对数据库的大小没有强加的理论限制......它取决于支持它的硬件的能力。根据行数,使用InnoDB,理论上的限制为256太字节。我不断抛弃理论的原因是,你可能很有可能索引256TB的数据,所以这就是他们近似可能的限制。如果达到最大值,你会遇到更大的问题。我能想到的当前MySQL生产用户是YouTube和Facebook。那些可能是两个最大的...而且它们似乎表现得很好。
但是,正如我上面所说的那样。这是你最舒服的。