con*_*t47 11 mysql postgresql ruby-on-rails
我正在考虑从MySQL迁移到Postgres进行Rails开发,我只是想听听其他开发人员对此有何看法.
我正在寻找个人经历,而不是Mysql v Postgres枪战,只是你自己所获得的利弊.人们可能不一定会想到的东西.
随意解释你为什么一开始就搬家了.
我做了转换,坦率地说,不能更开心.虽然Postgres缺少MySQL的一些东西(主要是为我插入忽略,替换,Upsert和加载数据),但它确实具有的功能不仅仅是弥补.它的存储过程功能更强大,在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
Run Code Online (Sandbox Code Playgroud)
这将在不到两分钟的时间内将~500,000条记录插入数据库.大约在同一时间,如果我们添加更多字段.
PostgreSQL对MySQL的另一个好处:
LIKE语法是这样的email ~ 'hotmail|gmail',NOT LIKE就像email !~ 'hotmail|gmail'.的|指示或.总结一下:PostgreSQL就像砖头一样,MySQL就是Lego.选择适合自己的"感觉".这只是我个人的意见.
| 归档时间: |
|
| 查看次数: |
818 次 |
| 最近记录: |