Memahami bagaimana WordPress menggunakan MySQL

Diterbitkan: 2014-09-30

Secara garis besar, WordPress dapat dibagi menjadi dua segmen:

  • logika dan template yang menghasilkan tampilan dan nuansa situs WordPress
  • database MySQL yang menyimpan semua konten dan mendukung semuanya

Tapi apa itu MySQL?

MySQL sangat kuat, tetapi database stok yang mendukung WordPress juga ringan dan kuat. Salah satu bagian terbaik dari CMS yang kuat seperti WordPress adalah ia menangani semua manajemen basis data untuk pengguna dan mengabstraksikannya dari pengguna akhir. Pengguna WordPress, dan bahkan desainer, tidak perlu mengetahui secara mendalam cara kerja database. Namun, jika Anda tertarik untuk benar-benar memahami cara kerja WordPress, postingan ini cocok untuk Anda.

Pertama, mari kita bicara tentang apa itu MySQL. Secara khusus, MySQL adalah sistem manajemen basis data relasional, atau disingkat RDBMS. RDBMS adalah wadah yang dirancang untuk menangani dan menjalankan Structured Query Language (SQL). SQL adalah kekuatan database — SQL mengontrol struktur dan bentuk database, dan juga merekam penyisipan, penghapusan, modifikasi, dan sebagainya yang dilakukan pada database itu.

Bagaimana cara kerja MySQL?

Itu semua agak teknis, jadi mari kita mundur selangkah dan mempertimbangkan seperti apa database SQL itu.

SQL diatur ke dalam tabel informasi. Secara umum, pikirkan tabel sebagai spreadsheet di Excel. Baris dan kolom menyimpan informasi menurut struktur yang telah ditentukan. Namun, tidak seperti lembar bentang Excel, kolom (disebut kunci atau terkadang bidang ) dari database SQL telah ditentukan sebelumnya dan dikategorikan sebelumnya.

Struktur, atau kolom, tabel yang ditentukan di WordPress sudah diatur sebelumnya — mereka tidak akan berubah seiring pertumbuhan situs kecuali plugin atau pembaruan inti secara khusus mengubahnya. Kolom tidak hanya ditentukan terlebih dahulu, tetapi jenisnya juga ditentukan sebelum record dimasukkan ke dalamnya. Jenis seperti kotak kata angka (INT untuk bilangan bulat), (TEXT atau VARCHAR untuk bidang teks), dan lainnya (DATETIME untuk tanggal dan waktu) telah diatur sebelumnya dalam database. Jika WordPress (atau peretas) mencoba menambahkan data ke database yang tidak cocok dengan pola yang ditentukan sebelumnya, database tidak akan menerima data tersebut.

Fitur besar lainnya dari database SQL ditemukan dalam akronim RDBMS: fitur relasional.

Tabel SQL dan bahkan kunci tertentu dalam sebuah tabel memiliki kemampuan untuk berhubungan dengan tabel dan kunci lainnya. Hal ini memungkinkan pengguna untuk membangun database yang berhubungan erat satu sama lain, yang berarti organisasi yang lebih baik dan efisiensi yang lebih besar.

Katakanlah Anda ingin membangun database tweet untuk dilihat nanti. Anda dapat membuat tabel yang berisi informasi tentang tweet tertentu yang telah Anda simpan, seperti konten tweet, berapa banyak favorit yang dimilikinya, dan sebagainya. Anda juga ingin menyimpan data tentang orang yang menge-tweet — siapa nama mereka, berapa banyak pengikut yang mereka miliki, hal-hal seperti itu.

Menggunakan database relasional, Anda dapat membuat tabel tweet yang berisi semua data tentang tweet tertentu, dan kemudian Anda dapat membuat tabel pengguna yang berisi semua informasi tentang orang yang mengirim tweet yang dimaksud. Anda kemudian dapat menghubungkan kunci dalam dua tabel, sehingga database (dan karena itu Anda) mengetahui pengguna mana yang terkait dengan tweet mana.

WordPress menggunakan tabel relasional untuk menghubungkan banyak data. Misalnya, tabel wp_posts berisi semua data yang relevan tentang satu posting di WordPress. Tabel wp_comments berisi setiap komentar yang ditinggalkan siapa pun di posting WordPress, tetapi wp_posts dan wp_comments adalah dua tabel berbeda pada database yang sama. WordPress membangun hubungan antara kunci tertentu di tabel wp_comments dan tabel wp_posts sehingga WordPress dapat mengetahui komentar mana yang termasuk dalam posting blog mana.

Struktur database dan tabel ini dibangun di dalam database MySQL saat Anda pertama kali menyiapkan WordPress. Dari sana, WordPress hanya memanipulasi nilai, atau baris, di setiap tabel untuk membuat situs Anda beroperasi.

Misalnya, saat Anda membuat pengguna baru, baris yang berisi semua data tentang pengguna (seperti nama pengguna, kata sandi, dan tingkat izin) dimasukkan ke dalam tabel wp_users. Saat pengguna login, WordPress mengakses database dan memeriksa informasi yang diberikan di layar login terhadap database. Jika tidak cocok, login ditolak.

Bagaimana MySQL menggunakan caching

WP Tanpa Caching

WordPress & MySQL tanpa caching.

Konsep yang sama berlaku untuk posting: Saat Anda menulis dan menyimpan posting baru, WordPress menyimpannya sebagai baris di database wp_posts. Penting untuk dicatat bahwa kebalikan dari ini juga benar: Ketika seseorang melihat situs web mengakses halaman dengan konten di dalamnya, WordPress harus mengakses database, mengeluarkan data dari tabel, dan kemudian merendernya di layar mereka. Untuk beberapa pengunjung, server biasa dapat menangani beban ini dengan baik. Tetapi jika banyak orang yang meminta konten dari situs web, WordPress dan database tidak akan dapat memenuhi semua permintaan dan situs dapat terlipat. Itulah mengapa menggunakan mesin caching atau plugin sangat penting.

Untuk mendapatkan sedikit teknis lagi, penting untuk memahami biaya komputasi. Dalam hal ini, biaya tidak berarti menghabiskan uang atau membeli sesuatu. Ini berarti mengevaluasi beberapa faktor berbeda yang penting untuk kecepatan komputasi, seperti waktu, memori yang tersedia, dan jumlah operasi disk yang perlu dilakukan.

MySQL menyimpan semua informasi ini pada database di hard drive komputer tempat penyimpanannya. Ini adalah sistem yang sangat hebat karena tahan terhadap kegagalan, memiliki banyak ruang penyimpanan, dan tidak merusak memori komputer yang dijalankannya. Dibandingkan dengan database seperti Redis yang menyimpan semua yang ada di RAM komputer yang sedang dijalankannya, MySQL menawarkan banyak stabilitas dan menghilangkan kekhawatiran kehilangan data.

Namun, stabilitas MySQL datang dengan biaya: kecepatan. Membuat WordPress terus-menerus mengakses kunci yang sama dalam database berulang kali harus dipandang sebagai “mahal.” Sangat mahal untuk mengakses database, melakukan operasi disk, mengembalikan data itu, lalu merendernya.
Caching WP

WordPress & MySQL dengan caching. Catatan: web, MySQL, dan server caching umumnya dijalankan secara bersamaan di server yang sama. Diagram ini memisahkan mereka untuk tujuan ilustrasi.

Caching adalah solusi yang bagus untuk masalah ini. Dibutuhkan HTML yang dirender terakhir dan mempertahankannya untuk waktu yang singkat, mungkin sekitar 30 detik. Jika seseorang meminta halaman yang sama, mesin caching akan menyajikan halaman yang sudah dirender kepada mereka, melewati seluruh proses interaksi dengan database. Itulah mengapa sangat penting untuk menginstal plugin caching WordPress atau menggunakan layanan hosting terkelola yang menangani caching untuk Anda saat membangun situs web. Jika sebuah posting berakhir di halaman depan Reddit, misalnya, situs Anda akan terlipat di bawah tekanan semua lalu lintas baru tanpa caching diinstal.

Sebelas tabel MySQL di WordPress

WP3.8-ERD

WordPress 3.8 tabel MySQL default. Gambar milik WordPress Codex, dilisensikan di bawah GPL

Sekarang setelah kita memahami bagaimana beberapa database dan tabel ini benar-benar bekerja, mari kita bicara tentang sebelas tabel spesifik yang dibuat dan digunakan WordPress secara default:

  • wp_commentmeta – Semua metadata yang terkait dengan komentar, seperti kunci dan nilai, disimpan dalam database ini. Itu tidak menyimpan metadata seperti penulis dan tanggal pengiriman, melainkan data lain-lain yang kadang-kadang digunakan WordPress. Data ini terkadang opsional atau tidak digunakan. Ini berhubungan langsung dengan wp_comments.

  • wp_comments – Tabel ini berisi semua komentar yang dibuat di postingan dan halaman WordPress, serta semua data terkait seperti penulis, alamat email, tanggal pengiriman, dan postingan tempat komentar ditinggalkan.

  • wp_links – Basis data ini digunakan untuk memuat data tautan di postingan WordPress, tetapi sudah dihentikan sejak beberapa versi WordPress yang lalu. Meskipun masih ada, diragukan Anda akan melihat yang ini digunakan.

  • wp_options – Opsi apa pun yang telah diatur di panel pengaturan disimpan dalam database ini.

  • wp_postmeta – Seperti wp_commentmeta, wp_postmeta menyertakan data opsional tentang posting. Kecuali ada kasus penggunaan khusus, yang satu ini kemungkinan besar tidak akan banyak digunakan.

  • wp_posts – wp_posts berisi semua data tentang posting dan data terkaitnya. Tabel ini sangat sering digunakan dan berisi semua konten situs.

  • wp_terms – Tabel ini menyimpan konten seperti tag dan kategori tempat posting diklasifikasikan.

  • wp_term_relationships – Tabel ini bertanggung jawab untuk menjaga hubungan antara posting dan kategori serta tag yang terkait. Ada hubungan MySQL yang diatur di sini juga: tabel sebenarnya terhubung ke posting dan istilah melalui tabel wp_term_taxonomy.

  • wp_term_taxonomy – Ini menangani pelacakan jenis taksonomi apa yang terkait dengan posting. Ini menautkan kembali ke wp_terms serta wp_term_relationships dan hanya mencatat asosiasi dengan kategori, tag, dan sebagainya.

  • wp_usermeta – Tabel meta lain, wp_usermeta menangani metadata opsional apa pun yang terkait dengan wp_users.

  • wp_users – wp_users berisi semua data yang berkaitan dengan pengguna WordPress, termasuk info seperti nama pengguna, hak admin, dan kata sandi terenkripsi.

MySQL dapat tampak menakutkan pada awalnya, tetapi dengan WordPress, tabel ditata sedemikian rupa sehingga tidak hanya masuk akal tetapi juga meningkatkan kecepatan dan efisiensi. Lain kali Anda mengerjakan situs WordPress, pikirkan tentang struktur database MySQL yang mendukung situs tersebut. Pemahaman menyeluruh tentang basis data situs dapat memastikan situs Anda aman, kokoh, dan sangat efisien.