MySQL : The overview

Preface

MySQL merupakan sebuah DBMS yang bersifat multithreading, multi-user, dan berbasiskan SQL (Structured Query Language) yang diperkirakan telah terinstalasi sebanyak 6 juta copy. MySQL AB membuat MySQL manjadi sebuah free-software di bawah lisensi GNU General Public License (GPL), tetapi mereka juga menyediakan lisensi lain jika ada user yang keberatan untuk memenuhi aturan pada lisensi GPL.

Tidak seperti proyek lain, mis:Apache, di mana software dikembangkan oleh sebuah komunitas publik, hak cipta dari code-nya dimiliki oleh penulisnya. MySQL dimiliki dan disponsori oleh firma tunggal dari Swedia bernama MySQL AB yang memiliki hak cipta hampir seluruh code-nya.

Platform

MySQL dapat berjalan dengan baik pada banyak jenis OS platform. Berikut adalah daftar dari platform yang dapat mendukung MySQL:

AIX, BSDi, FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD, Novell NetWare, OpenBSD, OS/2 Warp, QNX, SGI IRIX, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP dan versi-versi Windows selanjutnya.

Dapat dilihat pada daftar OS yang mendukung MySQL, bahwa sebenarnya MySQL mendapat dukungan cukup luas dalam hal OS. Hal ini merupakan salah satu faktor yang membuat perkembangan MySQL sangat pesat.

Price

MySQL adalah software yang termasuk kategori OpenSource. Hal ini berarti setiap orang dapat menggunakan bahkan memodifikasi software ini. Setiap orang dapat mendownload software MySQL dari Internet dan menggunakannya tanpa harus mengeluarkan biaya.

Jika diperlukan user dapat mempelajari source code-nya dan memodifikasinya sesuai dengan kebutuhannya. MySQL mempergunakan lisensi GPL (GNU General Public License). Jika kita merasa tidak nyaman dengan lisensi ini atau kita ingin untuk memakai code MySQL untuk aplikasi komersial, kita dapat membeli versi berlisensi komersialnya dari website resmi MySQL ( http://www.mysql.org ). Hingga bulan Maret 2006, harga lisensi untuk MySQL dengan basic feature berkisar $600 per server.

Speed

MySQL sangat cepat dalam menjalankan query SELECT baik yang sederhana maupun yang rumit, tetapi dibutuhkan konversi tipe data dari MyISAM ke InnoDB untuk menjalankan query UPDATE. MySQL menangani masalah koneksi dengan sangat cepat, sehingga sangat mendukung untuk digunakan pada aplikasi web.

Jika kita memiliki ratusan CGI yang terus melakukan melakukan koneksi, kita sebaiknya kita tidak menggunakan prosedur startup yang lama. Berikut ini adalah data yang kami dapat untuk menggambarkan performa MySQL dalam hal kecepatan:

Inserts pada MySQL : 0.71sec/1000 rows

Inserts pada PostgreSQL:10.78sec/1000 rows (15 kali lebih lambat)

Modify pada MySQL : 0.67sec/1000 rows

Modify pada PostgreSQL:10.20sec/1000 rows (15 kali lebih lambat)

Delete pada MySQL : 1.04sec/1000 rows

Delete pada PostgreSQL:20.40sec/1000 rows (hampir 20 kali lebih lambat)

Dari data diatas dapat dilihat bahwa kecepatan MySQL jauh lebih cepat jika dibandingkan dengan PostgreSQL.

Storage and Indexing

Storage Engine

MySQL mendukung beberapa storage engine yang berperan untuk menangani berbagai tipe tabel yang ada. Berikut adalah berbagai storage engine yang tersedia pada MySQL:

è  MyISAM mengatur non-transactional tabel. Engine ini dapat melakukan penyimpanan dan pengambilan data dengan cepat. MyISAM adalah default storage engine pada MySQL.

MyISAM memiliki beberapa karakteristik sebagai berikut:

–      Seperti panjang key maksimum adalah 1000 bytes, maksimum jumlah kolom per indeks adalah 16.

–      Nilai numerik disimpan pada high byte sehingga dapat melakukan kompresi secara lebih baik, dapat melakukan AUTO_INCREMENT, dan masih banyak yang lainnya, yang tidak akan kita bahas satu per satu di sini.

–      Dapat menaruh data file dan index file dalam direktori yang berbeda untuk meningkatkan kecepatan akses.

è  MEMORY menghasilkan in-memory table. Storage engine MERGE dapat mengatur beberapa tabel MyISAM sebagai sebuah tabel tunggal. Storage engine MEMORY dan MERGE khusus untuk mengatur non-transactional tabel. Memory storage engine ini dahulu dikenal dengan nama Heap engine.Memori membuat tabel dengan isinya disimpan di memori.Setiap tabel memori memiliki satu buah file yang akan disimpan dalam disk, ekstensinya adalah .frm.

MEMORY memiliki beberapa karakteristik sebagai berikut:

–      Menggunakan 100% dynamic hashing untuk operasi insert, sehingga lebih hemat karena tidak perlu tempat tambahan untuk menyimpan key.

–      Kita dapat memiliki non-unique keys di tabel MEMORY.

–      Dapat memiliki NULL values, menggunakan panjang yang tetap dalam hal penyimpanan, kolom tidak bisa mengandung BLOB atau TEXT.

è  InnoDB dan BDB menghasilkan transaction-safe table. Maksud dari transaction safe table adalah tabel yang memiliki kemampuan commit, rollback, crash recovery. Namun dengan kemampuan yang tersebut, tentu saja ada overhead yang dimiliki.Kita dapat mengaktifkan atau menon-aktifkan engine bertipe ini.

è  EXAMPLE adalah engine yang tidak melakukan apa-apa. Kita dapat membuat tabel dengan tipe ini, tetapi tidak ada data yang dapat disimpan atau dibaca dari tabel ini, sesuai dengan namanya, engine ini hanya sekedar memberikan contoh bagaimana kode dari MySQL digunakan. Tujuan dari engine ini adalah untuk menunjukkan bagaimana cara memulai untuk menulis sebuah storage engine.

è NDB cluster adalah engine yang digunakan MySQL untuk mengimplementasi tabel yang terpisah di lebih dari satu komputer. Saat ini NDB hanya didukung pada sistem Linux, Solaris dan Mac OS X. Namun pada versi-versi selanjutnya akan akan dikembangkan versi selanjutnya (hingga saat paper ini ditulis, MySQL terakhir adalah versi 5.1) yang akan mendukung NDB pada Windows, dan juga platform lainnya.

è ARCHIVE digunakan untuk menyimpan data dengan ukuran yang sangat besar tanpa memerlukan index. Engine ini mensupport operasi INSERT dan SELECT, namun tidak untuk operasi DELETE, REPLACE, dan UPDATE. Dalam engine ini juga dikenal dengan menggunakan row-level locking.

è CSV digunakan untuk menyimpan data dalam text-file dimana antara satu nilai dengan nilai yang lainnya dibatasi oleh koma. Saat kita membuat tabel CSV, selain membuat file yang berisikan table format, storage engine juga membuat data file yang berupa teks file biasa. Ketika kita menyimpan data, storage engine menyimpannya ke dalam data file dengan menggunakan koma untuk memisahkan nilai-nilai yang ada.

è BLACKHOLE menerima setiap data yang diberikan, tetapi tidak menyimpan data dan selalu mengembalikan data berupa himpunan kosong. Blackhole mendukung semua jenis pengindeksan., kegunaan dari blackhole ini antara lain:

–      verifikasi dari syntax dump file

–      pengukuran overhead yang terjadi dengan membandingkan dengan ketika menggunakan blackhole

–      mencari performance bottlenecks yang tidak terkait dengan storage engine itu sendiri.

è FEDERATED menyimpan data di database dengan akses terbatas (jarak jauh). Saat ini engine ini hanya dapat bekerja dengan menggunakan MySQL C Client API. Dengan menggunakan Federated storage engine, tidak akan ada lagi lokal data files, melainkan remote database menyimpan data yang umumnya akan ada di tabel. Alur informasi yang terjadi adalah sebagai berikut:

  1. SQL calls issued locally
  2. MySQL handler API (data in handler format)
  3. MySQL client API (data converted to SQL calls)
  4. Remote database -> MySQL client API
  5. Convert result sets (if any) to handler format
  6. Handler API -> Result rows or rows-affected count to local

Partitioning

Partitioning memungkinkan kita untuk mendistribusikan data-data di suatu tabel yang sama ke filesystem yang berbeda di tempat yang berbeda pula. MySQL mendukung horizontal partitioning yang berarti row-row yang berbeda akan didistribusikan ke partisi yang berbeda. Ada empat tipe partition yang didukung oleh MySQL, berikut adalah deskripsi dari keempat tipe tersebut:

è  RANGE partitioning

Tabel yang dipartisi menggunakan range dipartisi dimana setiap partisinya memiliki row yang mengandung variabel yang berada pada rentang nilai tertentu. Rentang nilai (range) dapat kontinu tetapi tidak overlap dan didefinisikan melalui operator VALUES LESS THAN.

Partisi jenis ini akan berguna pada kondisi sebagai berikut:

–         jika kita ingin menghapus data lama, terutama untuk data yang besar, kita dapat melakukan penghapusan ataupun perubahan secara efisien, contoh: DELETE FROM employees WHERE YEAR(separated) <= 1990;.

–         jika kita ingin menggunakan kolom berisikan tanggal atau waktu

–         jika kita akan sering menjalan query yang bergantung pada kolom yang dipartisi.

è  LIST partitioning

Pada list partitioning, setiap partisi didefinisikan dan diklasifikasikan berdasarkan keanggotaan sebuah nilai suatu kolom terhadap suatu daftar nilai. Partisi dilakukan oleh perintah PARTITION BY LIST(expr) di mana expr adalah nama kolom yang hendak dijadikan dasar partisi dan setiap partisi didefinisikan melalui perintah VALUES IN (value_list) di mana value_list adalah daftar bilangan bulat yang dipisahkan oleh koma.

è  HASH partitioning

Partisi dengan hash dilakukan untuk menjamin pendistribusian yang adil (seragam) pada setiap data yang dimasukkan. Dengan partisi jenis ini, kita tidak perlu mendefinisikan keanggotaan setiap partisi. Kita hanya perlu menspesifikasi suatu ekspresi yang memiliki input suatu nilai kolom dan mempunyai output nomor partisi dari data tersebut. MySQL juga mendukung suatu varian dari hash partitioning yaitu LINEAR HASH partitioning.

è  KEY partitioning

Partisi dengan key memiliki prinsip yang hampir sama dengan hash partitioning. Yang menjadi perbedaan adalah fungsi hashing untuk partisi jenis ini dibuat langsung oleh server MySQL dengan fungsi MD5() pada MySQL Clusters. Untuk storage engine yang lain, server telah mengembangkan fungsi yang menerapkan algoritma yang hampir sama bernama PASSWORD().

Indexing

Index adalah fitur dalam database yang membuat kita dapat mengakses row pada tabel. Index dapat digunakan untuk optimasi proses searching, biasanya melalui balanced tree. DBMS yang ada saat ini dapat melakukan indexing melalui R-/R+ tree, hash, expression, partial, reverse, bitmap, dan GiST.

Dari berbagai metode indexing diatas, MySQL hanya dapat mengimplementasikan B/B+ tree dan hash dimana B/B+ tree digunakan oleh tabel MyISAM, InnoDB dan HEAP dan hash digunakan oleh tabel HEAP.

Storage Engine Allowable Index Types
MyISAM BTREE
InnoDB BTREE
MEMORY/HEAP HASH, BTREE

Administrative Tools and Security

Administrative Tools

Untuk mengelola database dengan MySQL, kita dapat menggunakan comand-line tool yang disertakan pada software ini dengan perintah: mysql dan mysqladmin. Bila kita ingin menggunakan administration tool yang berbasis GUI kita dapat mendownload tool-tool seperti MySQL Administrator dan MySQL Query Browser dari website MySQL.

Selain tool-tool yang disebutkan diatas terdapat alternatif lain yang sangat populer, yaitu berupa free software berbasis web yang ditulis dalam PHP bernama phpMyAdmin.

Security

MySQL menggunakan sistem privilege dan password yang sangat fleksibel dan aman. Sistem ini memungkinkan verifikasi berbasis host. Ketika kita melakukan koneksi ke server, password akan dienkripsi sehingga seluruh transportasi password kita akan terjamin sekuritasnya.

Fungsi utama dari sistem privilege adalah untuk mengautentifikasi user yang melakukan koneksi dari suatu host dan untuk memilih wewenang user tersebut terhadap database seperti SELECT, INSERT, UPDATE dan DELETE. Fungsi tambahan meliputi kemampuan untuk memiliki user yang tidak memiliki account dan untuk memeriksa wewenang dari suatu fungsi yang spesifik pada MySQL seperti LOAD DATA INFILE dan operasi administratif lainnya.

Sistem privilege pada MySQL menjamin setiap user hanya diizinkan untuk menjalankan operasi yang diizinkan atas mereka. Sebagai user, ketika kita melakukan koneksi ke MySQL server, identitas kita ditentukan berdasarkan dari host mana kita melakukan koneksi dan username yang kita pakai. Ketika kita memberi request setelah melakukan koneksi, sistem akan memberikan wewenang sesuai identitas kita.

Ketika kita menjalankan client program yang terhubung ke server, MySQL melakukan kontrol terhadap akses yang ada pada dua tahap:

è  Tahap 1: Server memeriksa apakah kita diizinkan untuk melakukan koneksi.

è  Tahap 2: Asumsikan kita telah terkoneksi, server akan memeriksa untuk setiap statement yang akan kita jalankan apakah kita memiliki wewenang yang cukup untuk menjalankannya.

MySQL menggunakan sistem keamanan yang berdasarkan pada Access Control List (ACL) untuk setiap koneksi, query, dan operasi lainnya. MySQL juga mendukung koneksi yang terenkripsi menggunakan SSL antara client dan server.

Concurrency Control

MySQL dapat melakukan table locking pada tabel bertipe ISAM/MyISAM dan HEAP. Untuk tabel bertipe BDB, locking dilakukan pada level page (page-level locking), sedangkan untuk InnoDB dapat dilakukan locking pada level row (row-level locking). Tidak ada ukuran yang pasti yang menentukan metode mana yang lebih baik. Semuanya bergantung pada aplikasi, dan setiap bagian aplikasi yang berbeda dapat membutuhkan tipe lock yang berbeda pula.

Table locking pada MySQL bebas dari deadlock untuk storage engine yang menggunakan locking pada level tabel. Pencegahan deadlock di atur dengan cara selalu meminta seluruh lock yang dibutuhkan tepat satu kali yaitu ketika di awal query dan selalu mengunci tabel di tahapan yang sama.

Metode table locking pada MySQL menggunakan WRITE lock dengan cara:

è  Jika tidak ada lock pada tabel, maka letakkan write lock pada tabel tersebut.

è  Selain itu, letakkan lock request pada antrian write lock.

Metode table locking pada MySQL menggunakan READ lock dengan cara:

è  Jika tidak ada write lock pada tabel, maka letakkan read lock pada tabel tersebut.

è  Selain itu, letakkan lock request pada antrian read lock.

Ketika lock dilepaskan, lock akan dibuat tersedia untuk thread-thread yang ada antrian lock write setelah itu untuk thread-thread yang ada di antrian lock read. Hal ini berarti jika terdapat banyak update untuk sebuah tabel, statement SELECT harus menunggu hingga tak ada lagi update yang terjadi.

InnoDB melakukan  row-level locking dan BDB pada page-level locking. Pada kedua storage engine tersebut, deadlock mungkin saja terjadi karena mereka secara otomatis mendapatkan lock di tengah pemrosesan statement SQL, tidak di awal transaksi.

Keuntungan dari row-level locking:

è  Lebih sedikit konflik yang terjadi ketika banyak thread ingin mengakses row yang berbeda.

è  Lebih sedikit terjadinya pergantian saat terjadinya rollback.

è  Memungkinkan untuk mengunci sebuah row tunggal untuk waktu yang lama.

Kerugian dari row-level locking:

è  Membutuhkan lebih banyak memory dibandingkan locking pada level page maupun tabel.

è  Lebih lambat dibanding locking pada level page maupun tabel ketika menggunakan bagian yang besar dari sebuah tabel karena membutuhkan banyak lock.

è  Jauh lebih lambat dibanding metode locking yang lain jika kita sering melakukan operasi GROUP BY pada bagian yang besar atau jika kita ingin memeriksa seluruh isi tabel.

Untuk memperoleh kecepatan lock yang tinggi, MySQL menggunakan table locking untuk seluruh storage engine kecuali InnoDB dan BDB. Untuk kedua engine tersebut, MySQL hanya akan melakukan table locking jika kita secara explisit mengunci tabel dengan perintah LOCK TABLE. Untuk engine jenis ini, disarankan untuk memakai LOCK TABLE untuk seluruh transaksi, karena secara default InnoDB menggunakan row-level locking dan BDB menggunakan page-level locking.

Untuk ukuran tabel yang besar, table locking  lebih baik untuk digunakan dibanding row-level locking untuk kebanyakan aplikasi, tetapi terdapat beberapa kelemahan, yaitu:

è  Table locking mengizinkan banyak thread untuk membaca tabel pada saat yang sama, tetapi jika sebuah thread ingin menulis, maka ia harus memdapatkan akses eksklusif. Selama proses update, seluruh thread lain yang ingin mengakses suatu bagian dari tabel ini harus menunggu hingga update selesai.

è  Peng-update-an tabel mempunyai prioritas yang lebih tinggi dibanding pengambilan data dari tabel. Hal ini harus menjamin bahwa peng-update-an tidak akan menunggu terlalu lama jika sedang terjadi proses SELECT yang sangat berat.

è  Table locking menyebabkan masalah ketika thread harus menunggu karena disk sedang penuh, dan dibutuhkan space yang cukup untuk memproses thread tersebut. Pada kasus ini, seluruh thread yang ingin mengakses tabel ini juga akan ditempatkan pada waiting state hingga tersedia disk space yang cukup.

Stored Procedure

Stored Procedure adalah kumpulan dari SQL statements yang dapat disimpan pada server. Dengan adanya stored procedure, client tidak perlu memanggil SQL statement secara individual, tetapi dapat memanggil procedure-nya saja. Strored procedure dapat berguna pada kondisi berikut:

è  Ketika ada banyak aplikasi client yang menggunakan bahasa berbeda atau berjalan pada platform yang bebeda, tetapi mereka hendak menjalankan operasi database yang sama.

è  Ketika sekuritas sangat dibutuhkan. Stored procedure menciptakan kondisi yang aman dan konsisten untuk menjalankan operasi database. Dengan konfigurasi tertentu, user tidak dapat memilki akses langsung ke tabel pada database, tetapi mereka hanya dapat menjalankan stored procedure yang spesifik.

Stored procedure dapat dapat meningkatkan performa karena informasi data yang dikirim antara server dan client menjadi lebih sedikit. Stored procedure memungkinkan user untuk menggnakan library dari fungsi yang terdapat pada server database. Hal ini sangat menguntungkan bagi para programmer.

MySQL mengikuti aturan SQL:2003 pada stored procedure-nya, seperti yang digunakan pada DB2 milik IBM. Ada tiga privilege yang terkait dengan penggunaan stored procedure, yaitu:

è  CREATE ROUTINE dibutuhkan untuk membuat procedure baru.

è  ALTER ROUTINE dibutuhkan untuk merubah atau menghapus procedure yang tersedia.

è  EXECUTE dibutuhkan untuk mengeksekusi procedure yang tersedia.

Untuk mencegah masalah ketika berinteraksi dengan banyak thread pada server, ketika client mengirim suatu statement, server menggunakan snapshot dari procedure yang tersedia untuk dieksekusi pada statement tersebut. Server mendaftar procedure yang dapat digunakan pada statement itu, mengambilnya dan mengeksekusinya. Hal ini mengakibatkan selama pengeksekusian statement, perubahan procedure yang terjadi oleh statement ini tidak akan berpengaruh pada thread lain.

Ada beberapa ketentuan dalam penyusunan procedure pada MySQL, diantaranya:

è  Statement-statement berikut tidak diizinkan:

  1. Statement untuk melakukan locking, yaitu: LOCK TABLES, UNLOCK TABLES.
  2. LOAD DATA dan LOAD TABLE.
  3. PREPARE, EXECUTE dan DEALLOCATE PREPARE.

è  Tidak tersedia fasilitas untuk men-debug suatu stored procedure.

è  Loop dalam bentuk FOR tidak diizinkan.

è  Tidak mendukung UNDO.

è  Untuk keterangan sintaks yang lebih detail silahkan kunjungi:

http://dev.mysql.com/doc/refman/5.1/en/

Berikut ini disertakan contoh sederhana dari pembuatan procedure berikut cara pemakaiannya yang dijalankan melalui command-line yang disediakan oleh MySQL:

Portability and Internal Characteristic

MySQL ditulis dalam bahasa C dan C++, namun MySQL menyediakan APIs untuk tidak hanya untuk C, C++, melainkan menyediakan juga untuk Eiffel, Java, Perl, PHP, Pythonm Ruby dan Tcl. SQL menggunakan GNU Automake, Autoconf, dan Libtool yang sangat mendukung portabilitas. Berikut ini adalah beberapa karakterisik internal dari MySQL secara umum:

è  Full multi-threading dengan menggunakan kernel threads. Dapat dengan mudah menggunakan banyak CPU jika tersedia.

è  Menggunakan B-Tree disk tables yang sangat cepat, Relative mudah untuk menambahkan storage engine lain. Menyediakan storage engine baik untuk transactional maupun non-transactional.

è  Memiliki system alokasi memori yang sangat cepat berbasis thread

è  Fungsi–fungsi SQL diimplementasikan menggunakan class library yang sudah sangat optimal dan memiliki performa yang cepat.

è  Server tersedia sebagai program terpisah yang digunakan untuk client/server dalam jaringan. Dan juga tersedia sebagai library yang bisa tertanam(embedded) dalam aplikasi standalone. Seperti aplikasi yang dapat digunakan dalam lingkungan terisolasi dimana tidak ada jaringan

Statement and Function

Dalam MySQL kita mengenal adanya beberapa query yang bersifat umum, berikut ini adalah statement dan fungsi yang umum sering digunakan:

è  Mensupport semua operator dan fungsi dalam klausa SELECT dan WHERE pada query. Command SHOW (MySQL-specific) dapat digunakan untuk mengambil informasi tentang database, database engines, table dan index.

è  Mensupport penuh untuk klausa SQL GROUP BY dan ORDER BY. Mensupport juga fungsi–fungsi yang berhubungan dengan group (misalnya: COUNT(), COUNT(DISTINCT …), AVG(), STD(), SUM(), MAX(), MIN(), and GROUP_CONCAT()).

è  Mendukung LEFT OUTER JOIN dan RIGHT OUTER JOIN dengan keduanya merupakan syntax standard untuk SQL dan ODBC. Selain itu juga mendukung adanya alias pada tabel dan kolom, seperti yang dibutuhkan dalam standard SQL.

è  Query DELETE, INSERT, REPLACE, and UPDATE akan mengembalikan baris-baris nilainya yang berubah (diupdate).

Kita dapat menggabungkan table dari database yang berbeda dengan query yang sama. Hal ini sangat memudahkan user dalam mengolah dan me-mantained database.

Connectivity

Dalam hal konektivitas, MySQL server menggunakan TCP/IP sockets semua platform yang didukung olehnya. Dalam hal interface, MySQL mendukung dua buah interface, yakni Interface ODBC (MyODBC) yang memampukan MySQL untuk mendukung program dari client yang menggunakan koneksi ODBC (Open DataBase Connectivity). Selain itu dikenal juga adanya J Interface yang memungkinkan MySQL mendukung program Java client yang menggunakan koneksi JDBC.

Summary

MySql merupakan salah satu software DBMS (Database Management System) yang sangat populer, adapun alasannya adalah sebagai berikut:

è  Software yang open source dengan berbasiskan lisensi GPL(GNU Public License).

è  Memiliki keunggulan dalam hal kecepatan menangani masalah koneksi sehingga sangat cocok untuk diaplikasikan pada web.

è  Kompatibilitas terhadap variasi tipe tabel yang ada terbilang cukup tinggi karena MySql mendukung beberapa storage engine seperti misalnya MyISAM, Memory, InnoDB, dll. – Fitur Index pada MySql yang mengoptimasi proses searching.

è  MySql menawarkan sistem privilege dan password yang sangat fleksibel dan aman.

è  Concurrency control yang diterapkan dengan cukup baik oleh MySql.

è  Konsep stored procedure yang ada di MySql dapat meningkatkan performa karena informasi data yang dikirim antara server dan client menjadi lebih sedikit.

Reference

Silberschatz, Abraham.2002.Database System Concept 4th Edition.McGraw-Hill

Comparison of Relational Database Management System.

http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems [24 Februari 2006.17.12]

MySQL.

http://en.wikipedia.org/wiki/MySQL [24 Februari 2006, 17:15]

PostgreSQL or MySQL?

http://www-css.fnal.gov/dsg/external/freeware/pgsql-vs-mysql.html [24 Februari 2006, 17:48]

MySQL 5.1 Reference Manual.

http://dev.mysql.com/doc/refman/5.1/en/ [24 Februari 2006, 18:00]

PostgreSQL vs. MySQL vs. Commercial Databases: It’s All About What You Need.

http://www.devx.com/dbzone/Article/20743 [24 Februari 2006, 18:35]

MySQL and PostgreSQL speed compare.

http://archives.postgresql.org/pgsql-general/2000-12/msg00895.php. [24 Februari 2006, 18:19]

~ oleh Thomas pada Maret 22, 2010.

Satu Tanggapan to “MySQL : The overview”

  1. wah.. saya belum mempelajarri Database. jadi belum terlalu ngerti. hehehe.. tapi pasti nti sangat berguna. makasih infonya.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

 
%d blogger menyukai ini: