11 Nov 2011
Perbandingan Database Engine: MySQL vs PostgreSQL vs Oracle vs Microsoft SQL Server
Saat ini sedang mikir-mikir database mana yang paling cocok dengan aplikasi yang akan saya buat. Kebutuhan saya adalah: skalabilitas, biaya, dan performa. Skalabilitas menjadi prioritas pertama mengingat database aplikasi tersebut kemungkinan besar akan tumbuh pesat seiring pengguna dan data yang disimpan di dalamnya.
Setelah mengumpulkan dari berbagai sumber, berikut ini rangkuman yang dapat saya peroleh:
Operating System yang bisa menjalankan:
| RDBMS | Windows | Mac OS X | Linux | BSD | Unix |
| Microsoft SQL Server | Ya | - | - | - | - |
| MySQL | Ya | Ya | Ya | Ya | Ya |
| Oracle | Ya | Ya | Ya | - | Ya |
| PostgreSQL | Ya | Ya | Ya | Ya | Ya |
Lisensi
| RDBMS | Maintainer | Lisensi |
| Microsoft SQL Server | Microsoft | Proprietary |
| MySQL | Sun Microsystems (sekarang dibeli Oracle Corporation) | GPL dan Proprietary |
| Oracle | Oracle Corporation | Proprietary |
| PostgreSQL | PostgreSQL Global Development Group | PostgreSQL licence (Free and Open Source) |
Limitasi
| RDBMS | Max DB Size | Max Table Size | Max Row Size | Max Column per Row | Max Blob/Clob Size | Max Char Size | Max Number Size | Min Date Value | Max Date Value | Max Column Name Size |
| Microsoft SQL Server | 524 258 TB (32 767 files * 16 TB max file size) | 524 258 TB | Unlimited | 30000 | 2 GB | 2 GB | 126 bits | 0001 | 9999 | 128 |
| MySQL | Unlimited | MyISAM storage limits: 256 TB; Innodb storage limits: 64 TB | 64 kB | 4096 | 4 GB (longtext, longblob) | 64 kB (text) | 64 bits | 1000 | 9999 | 64 |
| Oracle | Unlimited (4 GB * block size per tablespace) | 4 GB * block size (with BIGFILE tablespace) | 8 kB | 1000 | Unlimited | 4000 B | 126 bits | -4712 | 9999 | 30 |
| PostgreSQL | Unlimited | 32 TB | 1.6 TB | 250-1600 depending on type | 1 GB (text, bytea) – stored inline or 2 GB (stored in pg_largeobject) | 1 GB | Unlimited | -4713 | 5874897 | 63 |
Setelah melihat rangkuman di atas, Microsoft SQL Server mempunyai limitasi yang lebih baik, namun sayang harus dijalankan di Windows dan ada biaya lisensi. Oracle sebenarnya skalable, namun Max Row Size hanya 8kB. Saya belum tahu apa aja yang dihitung dalam max row size oracle ini. Mysql cukup menjanjikan walaupun hanya mempunyai max row size 64kB, namun seperti dalam dokumentasinya text dan blob disimpan terpisah sehingga tidak dalam perhitungan max row size tersebut.
Mysql lebih unggul 2 kali lipat dari mysql untuk max table size. namun PostgreSQL sepertinya lebih baik dari sisi performa dibanding MySQL jika mengelola database yang besar dan diakses oleh user yang banyak secara stimultan. Ini PR berikutnya untuk memutuskan apakah memakai MySQL atau PostgreSQL. Pencarian belum berakhir…