converting from mysql to postgresql
DESCRIPTION
How to convert from MySQL to PostgreSQL: discuss history of each, current status, when you might wish to convert, what might motivate you to convert, & how to do so. With references.TRANSCRIPT
PostgreSQL
John AshmeadMySQL
MySQL vs PostgreSQL• MySQL covered basics
• But a bit flaky in practice, under load
• Had looked at PostgreSQL before, but relooked
• Others have had similar problems
http://tapoueh.org/blog/2013/08/08-MySQL-to-PostgreSQL
• Clay tablets
• For taxes (but you knew that)
• The map replaces the territory
The First Database
Size matters!
• Ad hoc tools
• SQLite
• MySQL
• PostgreSQL
MySQL History• Named after Widenius’s daughter ‘My’!
• Version 5.0 with relational integrity, transactions, & stored procedures (i.e. real) in 2005
• Bought by Sun in 2008
• Eaten by Oracle in 2010
• Forks: MariaDB (by Widenius), Drizzle
PostgreSQL• Ingres
• Postgres a seQUEL to Ingres
• Postgres95 - released on web
• Open source version 1996
• Has caught up with MySQL on speed & reliability, still ahead on features
• MySQL is open source, PostgreSQL is open project
Decision Points
• New Project
• Organizational changes
• Accumulated stress
• Feature lust
• Strategic planning
Why• Features: i.e. PostGIS, FDW, Stored procedure
languages
• Performance
• Reliability
• Plays nice with others
• Others: culture, fear of Larry Ellison, kool-factor, …
MySQL Gotchas
• Nulls->default
• Case insensitivity
• Select 1/0 -> Null
• February 31st
http://sql-info.de/mysql/gotchas.html
Approachs• hack & go
• pivot with frameworks
• migration assistants
• plan & persevere (step at a time)
• halfway houses, i.e. with ODBC
Hack & go• Schema level
• Data
• Application level
• Configuration level
• Tools
• Documentation
• Culture
Pivot with a framework• SQL Alchemy on
Python
• Ruby on Rails/ActiveRecord on Ruby
• DBI on Perl
• Pear DB on PHP
Migration Assistants
Plan & persevere
• EnterpriseDB
• Internal task force
• Culture: desperate late night appeals for help often answered
Summary
• PostgreSQL makes sense for new projects
• For specific features
• As operational core
• Should be familiar with alternatives: relational, graph, noSQL, and so on.
Further information• http://www.wikivs.com/wiki/MySQL_vs_PostgreSQL
• https://wiki.postgresql.org/wiki/How_to_make_a_proper_migration_from_MySQL_to_PostgreSQL
• http://www.enterprisedb.com/solutions/mysql-vs-postgresql
• http://www.slideshare.net/akmed13/converting-from-mysql-to-postgresql