Perbandingan Database : MySQL - PostgreSQL - Oracle - 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:
Lisensi
Limitasi
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 PostgresSQL 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…
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 PostgresSQL 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…
[UPDATE]
Saya mempunyai database MySQL dan Postgre yang sama- sama besar, kira-kira 10GB filesize nya. Dari sisi performance Postgres lebih stabil, sedangkan MySQL sering kehabisan memory. Untuk MySQL saya kasih solusi instan dengan menambah 2 Server masing-masing dengan 64GB RAM. Saya buat replikasi ke dua server tersebut, sehingga untuk baca (SELECT) bisa ditangani di replika. Sudah terlanjur pakai MySQL dan males merubah ke Postgres (karena bukan saya yg bikin aplikasinya, hehehe)
Setelah saya selidiki dari lognya (dengan mencatat slow query ke dalam log) terlihat bahwa MySQL sangat tidak optimized dalam query yang melibatkan subquery atau join pada tabel yang isinya banyak (sebuah tabel saya bisa berisi jutaan rows).
Sedangkan Postgres dengan RAM 16 GB masih anteng2 aja, padahal di server tersebut banyak sekali aplikasi macem-macem.
Sumber : http://blog.iqbal.or.id/2011/11/11/perbandingan-database-engine-mysql-vs-postgresql-vs-oracle-vs-microsof-sql-server/
Saya mempunyai database MySQL dan Postgre yang sama- sama besar, kira-kira 10GB filesize nya. Dari sisi performance Postgres lebih stabil, sedangkan MySQL sering kehabisan memory. Untuk MySQL saya kasih solusi instan dengan menambah 2 Server masing-masing dengan 64GB RAM. Saya buat replikasi ke dua server tersebut, sehingga untuk baca (SELECT) bisa ditangani di replika. Sudah terlanjur pakai MySQL dan males merubah ke Postgres (karena bukan saya yg bikin aplikasinya, hehehe)
Setelah saya selidiki dari lognya (dengan mencatat slow query ke dalam log) terlihat bahwa MySQL sangat tidak optimized dalam query yang melibatkan subquery atau join pada tabel yang isinya banyak (sebuah tabel saya bisa berisi jutaan rows).
Sedangkan Postgres dengan RAM 16 GB masih anteng2 aja, padahal di server tersebut banyak sekali aplikasi macem-macem.
Sumber : http://blog.iqbal.or.id/2011/11/11/perbandingan-database-engine-mysql-vs-postgresql-vs-oracle-vs-microsof-sql-server/
Post a Comment