PostgreSQL vs
MySQL
Saat ini dengan mudah kita bisa mengatakan, dua produk database open source
paling terkenal dan banyak digunakan adalah MySQL dan PostgreSQL. “Mana yang
lebih bagus?” adalah pertanyaan yang hingga akhir zaman nanti akan selalu
terlontar. Kami tahu pertanyaan ini tidak ada artinya, dan tidak membantu sama
sekali. Namun di artikel ini kami mencoba menyusun beberapa aspek dari kedua
database yang berbeda satu sama lain. Harapan kami, perbandingan ini membantu
Anda menjawab pertanyaan “mana yang sebaiknya dipakai untuk [sebutkan kebutuhan
Anda di sini].” Jangan lupa pula, sebelum memutuskan selalu ceklah dulu
homepage kedua database sebab dari waktu ke waktu fitur tiap database
berubah/bertambah. Perbandingan di artikel ini sendiri menggunakan versi MySQL
3.23.49/4.0.1 dan PostgreSQL 7.2.
Dari semula latar belakang dikembangkannya kedua database ini sudah
berbeda. MySQL berkembang dari solusi yang dipakai oleh pembuatnya, TcX AB,
dalam memroses data untuk aplikasi Web. Fokusnya adalah pada kecepatan.
PostgreSQL, di lain pihak, berkembang dari riset akademik. Fokus pengembangan
PostgreSQL adalah pada fitur OO, reliabilitas, dan dukungan SQL yang mantap.
Namun, seiring kedua produk ini bertambah matang, keduanya semakin banyak
memiliki sifat-sifat ini. MySQL versi 4.x misalnya, berjanji menambahkan
fitur-fitur yang sejak lama diidamkan pemakainya: subselect, view, dsb.
Sementara PostgreSQL, yang sempat memiliki masalah stabilitas dan skalabilitas
di seri awal versi 6.x, juga kini telah amat menarik dari segi kecepatan.
Pengembangan MySQL diatur secara sentral oleh perusahaan komersial di
Swedia bernama MySQL AB (sebelumnya TcX AB). Perusahaan ini memperoleh
pemasukan utamanya dari menjual layanan support dan konsultasi MySQL.
PostgreSQL dikembangkan secara lebih terdesentralisasi dan merakyat, namun
tetap diatur oleh sebuah kelompok online bernama PostgreSQL Development Group.
MySQL dirilis dalam satuan yang lebih sering (sebulan bisa lebih dari satu
kali), sementara PostgreSQL sekitar 4–6 bulan sekali.
Menurut MySQL AB, saat ini jumlah instalasi MySQL sekitar 3 juta.
PostgreSQL sendiri tidak diketahui pasti berapa jumlah penggunanya; kemungkinan
masih berada di bawah MySQL karena banyaknya situs Web dan perusahaan
webhosting yang hanya menggunakan MySQL. Plus secara keseluruhan popularitas
MySQL (trafik milis, tutorial/artikel yang membahas, dsb) lebih besar daripada
PostgreSQL. Tapi karena PostgreSQL juga disertakan secara default di
distro-distro Linux seperti Red Hat dan SuSE, jumlah penggunanya pun sudah
pasti banyak.
- Arsitektur dan
Portabilitas
MySQL memiliki arsitektur multithreading, sementara PostgreSQL multiproses
(forking). Ini berarti PostgreSQL potensial memiliki stabilitas yang lebih
tinggi, sebab satu proses anak yang mati tidak akan menyebabkan seluruh daemon
mati—meskipun pada kenyataannya, dulu ini sering terjadi. Di sisi lain,
arsitektur dengan forking ini sulit diterapkan ke Windows, sebab Windows amat
thread-oriented. Karena itulah, baru MySQL yang memiliki port natif ke Windows.
PostgreSQL sendiri saat ini bisa dijalankan di Windows, tapi melalui lapisan
emulasi Cygwin.
Sampai sekarang masih banyak yang bilang MySQL itu tidak ACID-compliant.
Padahal sejak 2 tahun lalu MySQL sudah mempunyai handler tabel BerkeleyDB, dan
belakangan ini InnoDB, sehingga MySQL sudah mendukung transaksi. Handler tabel
MySQL yang lama, ISAM dan MyISAM, tidak ACID-compliant. PostgreSQL sendiri
sejak lama telah ACID-compliant.
Lisensi PostgreSQL lebih liberal. Inilah sebabnya ada banyak produk
closed-source dan komersial yang bisa dikembangkan dari source code PostgreSQL.
MySQL, karena dilisensi di bawah GPL, tidak boleh dimodifikasi menghasilkan
produk turunan yang closed-source.
Soal kecepatan ini relatif dan kadang juga jadi isu sensitif. Baik kedua
pihak, maupun pihak ketiga, pernah menerbitkan benchmark yang lalu ditepis atau
dicibir karena tidak objektif.
Pada dasarnya perbandingan kecepatan keduanya seperti ini: MySQL terkenal
cepat dalam melakukan query sederhana. Dengan kata lain, dapat memroses lebih
banyak SQL per satuan waktu. Tapi dalam kondisi load tinggi (jumlah koneksi
simultan besar), PostgreSQL sering mengalahkan MySQL untuk query dengan klausa
JOIN yang kompleks, seperti dialami Tim Perdue saat mencoba kedua database
untuk diimplementasikan di SourceForge.net. Penyebab utamanya adalah karena
MySQL menggunakan locking level table dalam UPDATE, sehingga koneksi yang
lain tidak bisa membaca table ybs sama sekali. Locking inilah juga sebabnya
mengapa pada banyak benchmark, MySQL menunjukkan penurunan kinerja yang cukup
drastis untuk kondisi jumlah klien simultan tinggi. PostgreSQL mendukung
locking di level yang lebih rendah, yaitu row. Table handler baru di MySQL,
InnoDB, juga mendukung row level locking. Benchmark InnoDB pada jumlah koneksi
tinggi menunjukkan hasil yang cukup menjanjikan (www.innodb.com/bench.html).
Masalah locking tabel bisa diakali dengan membelah-belah tabel, agar satu
kelompok row dapat dilock tanpa mengganggu kelompok row lain. Bahkan ada
pengguna MySQL yang membelah sebuah tabel besar berisi jutaan record menjadi
ribuan tabel kecil-kecil.
Keduanya sudah bisa dibilang cukup hingga amat stabil. Tapi perlu diingat
bahwa database manapun—bahkan Oracle—sesekali dapat menyebabkan kerusakan data.
Karena itu backup/history periodik dan incremental tetap diperlukan.
MySQL terkenal kaya fungsi built-in, seperti modifikasi string (REPLACE, RIGHT, LTRIM, LCASE), matematika (LOG, LOG10), tanggal, dsb. Dalam
hal ini MySQL lebih unggul.
Keduanya sudah amat solid. Mulai dari API C/C++, driver database
Perl/Python/PHP/Tcl, ODBC, JDBC telah didukung. Anda tidak akan kesulitan
menggunakan database ini dari berbagai sistem dan bahasa pemrograman. MySQL
juga mendukung OLEDB dan memiliki versi embedded untuk dilink bersama aplikasi
buatan Anda sendiri.
MySQL mendukung indeks full text secara natif. PostgreSQL mendukung full
text searching lewat program lain (contohnya: OpenFTS, openfts.sourceforge.net)
yang memanfaatkan tipe data arraynya untuk menyimpan indeks dokumen. Secara
umum dapat dikatakan bahwa indexing dengan MySQL lebih praktis, tapi dengan
program ketiga lebih banyak fitur dan opsi yang bisa diatur (mis: stemming,
parsing kata non-Inggris, dsb). MySQL juga, tentu saja, dapat dipakai sebagai
backend bagi program search eksternal (contoh: DBIx::KwIndex, search.cpan.org/search?dist=DBIx-KwIndex),
meski mungkin tidak seefisien dibandingkan array di PostgreSQL.
Keduanya sudah memiliki replikasi, meski replikasi di MySQL barulah satu
arah. Replikasi di PostgreSQL sendiri belum disertakan dalam distribusi
standarnya, namun Anda dapat mengunjungi situsgborg.postgresql.org/project/pgreplication/ (proyek
pgreplication).
- Manajemen User dan
Keamanan
Kedua database menyimpan informasi user di sebuah database khusus. Sistem
perizinan MySQL lebih mendetil daripada PostgreSQL. Misalnya, kita dapat
mengeset agar user tertentu yang datang dari host tertentu hanya bisa membaca
tabel saja tanpa bisa UPDATE. Di PostgreSQL ini masih bisa dilakukan dengan
VIEW misalnya.
MySQL AB mengklaim lebih banyak tool grafis/web yang tersedia untuk MySQL,
dan ini nampaknya cukup benar.
PostgreSQL lebih kaya dalam hal tipe data (terutama yang domain-specific
seperti tipe data geometris dan MONEY), tapi MySQL sudah
mendukung semua tipe data umum.
Di PostgreSQL sebelum 7.1, masih ada keterbatasan yang cukup menyesakkan
yaitu ukuran data BLOB maksimum adalah 8–32KB. Sejak 7.1, PostgreSQL juga dapat
menyimpan data BLOB besar.
CHAR dan VARCHAR di PostgreSQL
dapat menampung hingga 8 juta karakter (bandingkan dengan MySQL yang hanya
255).
MySQL lebih fleksibel dalam ALTER TABLE. PostgreSQL sendiri
terbatas hanya bisa melakukan penambahan kolom, penggantian nama kolom, dan
penggantian nama tabel. MySQL mendukung penambahan/penghapusan kolom,
penggantian definisi kolom, dsb.
Dalam waktu beberapa tahun PostgreSQL akan tetap memiliki fitur yang lebih
lengkap dibandingkan MySQL. Lebih banyak fitur dari standar SQL92 yang
diimplementasi oleh PostgreSQL. MySQL bahkan belum mendukung subselek. View,
trigger, foreign key checking (meski ini sudah ada di InnoDB) dan stored
procedure semua hanya ada di PostgreSQL. Sebagai pengembang yang memutuskan
memilih salah satu database, Anda perlu menanyakan kepada diri sendiri dulu
apakah ingin lebih bersusah-payah melakukan code around fasilitas-fasilitas
yang tidak ada di MySQL tersebut melalui bahasa pemrograman (misalnya, stored
procedure diganti dengan user-defined function, subselek diganti beberapa kali
SQL yang dibungkus dengan locking, dan tidak ada “trigger” berarti Anda harus
melakukan pengecekan secara manual). Jika tidak ingin repot, lebih baik memilih
PostgreSQL. Tapi jika tidak butuh fitur SQL yang rumit-rumit, Anda masih punya
kebebasan memilih satu dari dua.
Di samping itu MySQL pun tidak memiliki fitur OO seperti pewarisan tabel
dan tipe data, atau tipe data array yang kadang praktis untuk menyimpan banyak
item data di dalam satu record.
MySQL memiliki arsitektur yang memungkinkan sebuah database terdiri dari
beberapa jenis tabel, misalnya: yang transaksional dan tidak, yang berbasis di
memori atau di disk, yang terkompresi dan yang read-only. MySQL mendukung
protokol terkompresi yang bisa menghemat bandwidth dan mengurangi latensi.
PostgreSQL memiliki tipe data
array, pewarisan tabel dan tipe data, serta sistem rule. PostgreSQL memiliki
tipe-tipe data “antik.” Di PostgreSQL Anda dapat menulis stored procedure (atau
procedural language, istilah di PostgreSQL) dalam beberapa bahasa: PL/Perl,
PL/Tcl, atau PL/PgSQL. PostgreSQL mendukung set/himpunan.
KEUNGGULAN MySQL
- Portabilitas.
MySQL dapat berjalan stabil pada berbagai sistem operasi seperti Windows,
Linux, FreeBSD, Mac Os
X Server, Solaris, Amiga, dan masih banyak lagi.
- Perangkat
lunak sumber terbuka. MySQL didistribusikan sebagai perangkat lunak sumber
terbuka, dibawah lisensi GPL sehingga dapat digunakan secara gratis.
- Multi-user.
MySQL dapat digunakan oleh beberapa pengguna dalam waktu yang bersamaan
tanpa mengalami masalah atau konflik.
- Performance
tuning', MySQL memiliki kecepatan yang menakjubkan dalam menangani query
sederhana, dengan kata lain dapat memproses lebih banyak SQL per satuan
waktu.
- Ragam
tipe data. MySQL memiliki ragam tipe data yang sangat kaya,
seperti signed / unsigned integer, float, double, char, text, date,
timestamp, dan lain-lain.
- Perintah
dan Fungsi. MySQL memiliki operator dan fungsi secara penuh yang mendukung
perintah Select dan Where dalam perintah (query).
- Keamanan.
MySQL memiliki beberapa lapisan keamanan seperti level subnetmask, nama host,
dan izin akses user dengan sistem perizinan yang mendetail serta sandi
terenkripsi.
- Skalabilitas
dan Pembatasan. MySQL mampu menangani basis data dalam skala besar, dengan
jumlah rekaman (records) lebih dari 50 juta dan 60 ribu tabel serta 5
milyar baris. Selain itu batas
- Konektivitas.
MySQL dapat melakukan koneksi dengan klien menggunakan protokol TCP/IP,
Unix soket (UNIX), atau Named Pipes (NT).
- Lokalisasi.
MySQL dapat mendeteksi pesan kesalahan pada klien dengan menggunakan lebih
dari dua puluh bahasa. Meski pun demikian, bahasa Indonesia belum termasuk
di dalamnya.
- Antar
Muka. MySQL memiliki antar muka (interface)
terhadap berbagai aplikasi dan bahasa pemrograman dengan menggunakan
fungsi API (Application Programming Interface).
- Klien
dan Peralatan. MySQL dilengkapi dengan berbagai peralatan (tool)yang dapat
digunakan untuk administrasi basis data, dan pada setiap peralatan yang
ada disertakan petunjuk online.
- Struktur
tabel. MySQL memiliki struktur tabel yang lebih fleksibel dalam menangani
ALTER TABLE, dibandingkan basis data lainnya semacam PostgreSQL ataupun Oracle.
KELEMAHAN MySQL
Kelemahan MySQL dari dulu
sampai sekarang itu adalah 'feature-creep', artinya MySQL berusaha kompatibel
dengan beberapa standard serta berusaha memenuhinya. Sampai sini terdengar
bagus, namun kalau diungkapkan kenyataannya bahwa fitur-fitur itu belum lengkap
dan berperilaku sesuai standar.
Selain itu kelemahan MySQL yang pantas disorot
adalah dari sisi security , atau keamanan, yang agak terlalu sederhana bagi
sebuah SQL Engine , meskipun tidak sesederhana SQLite yang juga
datang dari dunia Open Source dan cukup digemari para Web Developer . Proyek
pengembangan software MySQL diprakarsai, dan sampai sekarang masih tetap
diketuai oleh Michael ''Monty'' Widenious. Software MySQL memiliki sistem
lisensi ganda, yaitu Anda bisa memilih lisensi Open Source/Free Software di
bawah GPL ( General Public Licence ) atau Anda juga bisa membeli lisensi
komersial dari MySQL AB.[BR]
Kelebihan Postgre SQL
1. PostgreSQL
memiliki arsitektur multiproses (forking) yang berarti memiliki stabilitas yang
lebih tinggi, sebab satu proses anak yang mati tidak akan menyebabkan seluruh
daemon mati—meskipun pada kenyataannya, dulu ini sering terjadi.
2. Dalam
kondisi load tinggi (jumlah koneksi simultan besar), kecepatan PostgreSQL
sering mengalahkan MySQL untuk query dengan klausa JOIN yang kompleks, hal ini
dikarenakan PostgreSQL mendukung locking di level yang lebih rendah, yaitu row.
3.
PostgreSQL memiliki fitur OO seperti pewarisan tabel dan tipe
data, atau tipe data array yang kadang praktis untuk menyimpan banyak item data
di dalam satu record.Dengan adanya kemampuan OO ini maka di PostgreSQL, kita
dapat mendefinisikan sebuah tabel yang mewarisi definisi tabel lain.
4. PostgreSQL
menyediakan hampir seluruh fitur-fitur database seperti yang terdapat dalam
produk database komersial pada umumnya.
5. PostgreSQL pun
memiliki tipe data geometri (seperti titik, garis, lingkaran, poligon) yang
mungkin berguna bagi aplikasi ilmiah tertentu
6. PostgreSQL
memberikan kita kemampuan mendefinisikan sebuah field sebagai array.
7. PostgreSQL
memiliki hampir semua fasilitas standar yang biasanya diinginkan: view (tabel
virtual), trigger, subselek, stored procedure (dalam beberapa bahasa), dan
foreign key constraint
8. PostgreSQL
juga memiliki apa yang disebut rule, yaitu tindakan custom yang bisa kita
definisikan dieksekusi saat sebuah tabel di-INSERT, UPDATE, atau DELETE
9. Postgres
juga mempunayai kemampuan untuk membuat konektifitas dengan database lain
seperti pgdump, Interbase, pgaccess dan hampir semua database pada Linux.
Kekurangan Postgre SQL
1. Kurang
begitu populer dan cocok bekerja di lingkungan web jika
dibandingkan dengan mysql.
2. Kurang
fokus dalam hal kelangsingan dan kecepatan.
3. Arsitektur
dengan multiproses ini sulit diterapkan ke Windows, sebab Windows amat
thread-oriented.
4. PostgreSQL
sendiri saat ini bisa dijalankan di Windows, tapi melalui lapisan emulasi
Cygwin.
5. Kurang
unggul dalam hal ketersediaan fungsi built-in.
6. Replikasi
di PostgreSQL sendiri belum disertakan dalam distribusi standarnya.
7. PostgreSQL
sendiri terbatas hanya bisa melakukan penambahan kolom, penggantian nama kolom,
dan penggantian nama tabel.
BAB IV
PENUTUP
KESIMPULAN
kesimpulannya, semua software memiliki kelebihan dan kekurangan masing - masing. punya fungsi tersendiri yang mana bisa membantu kita melakukan sesuatu. dengan istilah lain, software - software bisa membantu pekerjaan kita, mempermudah pekerjaan kita nantinya.
Yaa, semoga dengan informasi ini, bisa membuat kita lebih paham belajar DBD secara langsung. ^
akhir wassalam, terimakasih..
DAFTAR PUSTAKA
id.wikipedia.org/wiki/MySQL
id.wikipedia.org/wiki/PostgreSQL
http://toromorphosist.wordpress.com/2010/02/06/teori-dasar-basis-data/
http://blog.ub.ac.id/ninda/2010/03/09/contoh-kasus-desain-data-menggunakan-erd/