Hal-hal yang seandainya saya ketahui tentang Postgres
- Luasnya dokumentasi Postgres: Dokumentasi resmi Postgres sangat bagus, tetapi jumlahnya sangat banyak sehingga sulit bagi engineer pemula untuk membacanya dari awal sampai akhir.
Normalisasi data
- Normalisasi data: Proses menghapus data duplikat dari skema database. Misalnya, lebih baik tidak menaruh kolom
user_email di tabel documents, lalu menghubungkannya ke tabel users dengan foreign key.
- Kebutuhan denormalisasi: Terkadang denormalisasi diperlukan agar data tertentu bisa dibaca lebih cepat. Namun, data yang didenormalisasi membawa biaya berupa ketidakkonsistenan data atau meningkatnya kompleksitas penulisan.
Ikuti saran para pembuat Postgres
- "Hal-hal yang tidak boleh dilakukan" di Wiki Postgres: Di Wiki Postgres resmi ada daftar "hal-hal yang tidak boleh dilakukan". Meski belum memahaminya sepenuhnya, itu tetap bisa membantu menghindari kesalahan.
- Rekomendasi: Gunakan tipe
text untuk menyimpan semua teks, gunakan tipe timestampz/time with time zone untuk semua timestamp, dan tulis nama tabel dalam snake_case.
Keanehan SQL yang umum
- SQL tidak peka huruf besar-kecil: Keyword SQL tidak membedakan huruf besar dan kecil. Ini tidak terbatas pada Postgres saja.
- Keanehan
NULL: NULL di SQL berarti "tidak diketahui", dan ketika digabungkan dengan sebagian besar operator hasilnya menjadi NULL. Anda bisa membandingkan NULL dengan operator seperti IS NULL dan IS NOT NULL.
Membuat psql lebih berguna
- Meningkatkan keterbacaan output: Anda bisa mengatur terminal pager agar output panjang lebih mudah dilihat.
less dapat disetel sebagai pager.
- Memperjelas NULL yang ambigu: Di
psql, Anda dapat mengatur string yang mewakili NULL agar NULL terlihat jelas di output.
- Menggunakan pelengkapan otomatis:
psql mendukung auto-complete sehingga keyword SQL atau nama tabel bisa diketik dengan lebih mudah.
Efek menambahkan indeks
- Definisi indeks: Indeks adalah struktur data yang membantu mengambil data dengan cepat.
- Batasan indeks: Jika database lokal hampir tidak memiliki baris, indeks mungkin tidak terlalu berguna. Saat mengindeks beberapa kolom, urutannya penting.
Pemanfaatan JSONB
- Kelebihan dan kekurangan JSONB: Postgres menyediakan kemampuan untuk menyimpan dan melakukan query pada JSON secara efisien, tetapi jika digunakan dengan keliru performanya bisa menurun.
- Batasan struktural JSONB: Kolom JSONB tidak menjamin struktur, sehingga tidak sedokumentatif skema tabel standar.
Tips berguna lainnya
- Masalah transaksi panjang: Jika transaksi berlangsung terlalu lama, hal itu dapat menghambat klien lain mengakses database.
- Fitur kuat Postgres: Postgres menawarkan kekuatan database berorientasi dokumen, dan melalui JSONB dapat menyimpan serta melakukan query data secara efisien.
2 komentar
Saya harus membacanya suatu saat nanti tentang hal-hal yang tidak boleh dilakukan.
Komentar Hacker News
Postgres membedakan huruf besar dan kecil, tetapi penulisan keyword dengan huruf besar dalam query dilakukan untuk meningkatkan keterbacaan. Ini tidak wajib, tetapi berguna untuk memformat query agar lebih mudah dibaca saat debugging
actuallyUsingCaseInIdentifiersSaya baru pertama kali menemukan entri wiki "Don't Do This", dan itu sangat berguna
Banyak isinya tidak terbatas pada Postgres saja (misalnya: keanehan
null, urutan kolom indeks, dll.)nullberinteraksi dengan indeks dan batasan unik juga tidak intuitif di MySQLnulldan kolom username yang bolehnull, lalu ada batasan unik seperti(email, username), maka email yang sama bisa dimasukkan beberapa kali dengan usernamenullSaran untuk menormalisasi data perlu disikapi dengan hati-hati
Saya berharap para developer lebih memperhatikan normalisasi dan berhenti memasukkan semuanya ke dalam kolom JSON(b)
Kata "journey" terasa menjengkelkan di blog karena terlalu sering dipakai
Bagian kode sangat tidak nyaman di mobile, sampai-sampai hampir tidak bisa di-scroll
Dalam spesifikasi JSON,
nulladalah nilai konstan, dan berbeda dari SQLNULLMenambahkan indeks bisa saja sama sekali tidak memberi efek apa pun
Membaca artikel seperti ini dan bisa memahami 90%-nya membuat saya merasa bangga pada pekerjaan yang pernah saya jalani