我正在考虑从MySQL迁移到Postgres进行Rails开发,我只是想听听其他开发人员所做的事情。
我正在寻找个人经历,而不是Mysql v Postgres枪战,只是你自己所获得的利弊。人们可能不一定会想到的东西。
随意解释你为什么一开始就搬家了。
我正在考虑从MySQL迁移到Postgres进行Rails开发,我只是想听听其他开发人员所做的事情。
我正在寻找个人经历,而不是Mysql v Postgres枪战,只是你自己所获得的利弊。人们可能不一定会想到的东西。
随意解释你为什么一开始就搬家了。
我做了转换,坦率地说,不能更开心。虽然Postgres缺少MySQL的一些东西(主要是插入忽略,替换,Upsert和加载数据Infile),但它确实具有的功能不仅仅是弥补。它的存储过程功能更强大,在Postgres中编写复杂的函数和聚合要容易得多。
性能方面,如果你比较InnoDB(由于MVCC这是公平的),那么它感觉至少同样快,可能更快 - 由于某些限制,我们无法在这里做一些真正的测量,但那里当然不是性能问题。具有多个连接的复杂查询肯定更快,更快。
我发现你更有可能从Postgres社区得到你问题的正确答案。每个人和他们的祖母都有50种不同的方式在MySQL中做某事。使用Postgres,点击邮件列表,你可能会得到很多非常好的帮助。
任何语法等差异都有点微不足道。
总的来说,Postgres对我来说感觉更“成熟”。我使用MySQL多年了,现在我不顾一切地避开它。
亲爱的,这可能会以泪水结束。
仅从个人经验来看,我们仅仅因为我们的生产系统(Heroku)正在运行PostgreSQL而从MySQL迁移。我们为PostgreSQL打破了定制的MySQL查询。所以我想这里的故事的士气是在同一个DBMS上运行,否则你可能会遇到问题。
我们有时也需要插入快速的记录。为此,我们使用PostgreSQL的内置功能 COPY
函数,在我们的应用程序中与此类似使用:
query = "COPY users(email) FROM STDIN WITH CSV"
values = users.map! do |user|
# Be wary of the types of the objects here, they matter.
# For instance if you set the id to a string it will error.
%Q{#{user["email"]}}
end.join("\n")
raw_connection.exec(query)
raw_connection.put_copy_data(values)
raw_connection.put_copy_end
这将在不到两分钟的时间内将~500,000条记录插入到数据库中。大约在同一时间,如果我们添加更多字段。
PostgreSQL对MySQL的另一个好处:
LIKE
语法是这样的 email ~ 'hotmail|gmail'
, NOT LIKE
就好像 email !~ 'hotmail|gmail'
。该 |
表示或。总结一下:PostgreSQL就像砖块,其中MySQL是Lego。选择适合自己的“感觉”。这只是我个人的意见。
我们在2007年初转为PostgreSQL有几个原因(或者是前一年?)。主要原因是:
// 约翰
没有自己做过切换,但是由于MySQL缺乏显然Postgre支持的事务架构变化而被咬了几次。
这将解决当您从具有sqlite的开发环境迁移到MySQL服务器并且意识到您的迁移被搞砸并且完成了一半时所遇到的那些令人讨厌的问题! (不,我没有在生产服务器上这样做,但它确实弄乱了我们的共享测试服务器!)