SQL Academy · Pelajaran

Strategi Pembahagian: Julat, Hash, Direktori

Bandingkan pembahagian berasaskan julat, hash dan direktori, lalu pilih kunci bahagian yang mengimbangi beban dan kekal stabil.

Pelajaran 1 daripada 414 langkah

Strategi Pembahagian: Julat, Hash, Direktori ialah pelajaran SQL Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran SQL Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.

Apakah Itu Pemecahan?

Memisahkan satu pangkalan data logik merentas beberapa pelayan fizikal ("pecahan"), dengan setiap satunya menyimpan subset data. Langkah ini dilakukan apabila satu pelayan tidak lagi mampu mengendalikan beban kerja.

Pemecahan ≠ Replikasi

  • Replikasi — data yang sama pada banyak pelayan (untuk HA dan penskalaan bacaan)
  • Pemecahan — data yang berbeza pada pelayan yang berbeza (untuk penskalaan tulisan dan kapasiti)

Anda sering menggabungkan kedua-duanya: setiap pecahan direplikasi untuk HA.

Tiga Strategi Pemecahan

  • Julat — pecahkan berdasarkan julat nilai (id 1-1M pada pecahan A, 1M-2M pada pecahan B)
  • Cincangan — cincang kunci pecahan, kemudian ambil baki bahagi N
  • Direktori — jadual berasingan memetakan kunci → pecahan

Pemecahan Julat

Mudah dan berfungsi dengan baik untuk siri masa serta id tersusun. Risikonya ialah pecahan panas jika data terkini menerima semua trafik.

-- Conceptually:
-- Shard A: user_id 1 - 1,000,000
-- Shard B: user_id 1,000,001 - 2,000,000
-- Shard C: user_id 2,000,001 - 3,000,000

Pemecahan Cincangan

Secara lalai, pengagihan adalah sekata. Sukar untuk menambah pecahan (pemecahan semula akan memindahkan semua kunci):

-- shard_id = hash(user_id) % N
-- N=4: any user_id evenly distributed across 4 shards

Pemecahan Direktori

Jadual carian memetakan setiap kunci kepada pecahannya:

CREATE TABLE shard_routing (
  user_id BIGINT PRIMARY KEY,
  shard_id INT NOT NULL
);

-- Looking up a user costs a directory query first; cache it.

Pencincangan Konsisten

Pencincangan modulo rapuh apabila pecahan ditambah. Pencincangan konsisten meminimumkan kunci yang perlu dipindahkan:

-- Each shard owns a ring segment.
-- Adding a new shard moves only ~1/N of the keys.

Memilih Kunci Pecahan

Kunci pecahan menentukan segala-galanya. Kunci pecahan yang baik:

  • Mengagihkan data secara sekata
  • Wujud dalam kebanyakan query (mengelakkan penyebaran merentas pecahan)
  • Tidak berubah (atau jarang berubah)
<p>Common picks: user_id, tenant_id, customer_id. Avoid: timestamps for write-heavy workloads (creates hot shards).</p>

Satu Penyewa Setiap Pecahan

SaaS berbilang penyewa: setiap penyewa ditempatkan pada pecahan khusus. Mudah difahami dan memudahkan pengasingan penyewa yang menghasilkan beban tinggi.

Reka Bentuk yang Boleh Dipecahkan Semula

Reka bentuk dengan mengambil kira pemecahan semula pada masa hadapan:

  • Gunakan pecahan maya (contohnya, 1024 pecahan logik yang dipetakan kepada pecahan fizikal)
  • Permudahkan pemindahan pecahan logik ke pelayan fizikal yang lain
  • Elakkan kod aplikasi yang menetapkan bilangan pecahan secara keras

Query Merentas Pecahan

Masalah yang paling sukar. JOIN dan laporan merentas pecahan memerlukan logik penyebaran serta pengagregatan dalam aplikasi. Perkara ini akan dibincangkan dalam pelajaran seterusnya.

Transaksi Merentas Pecahan

Transaksi atomik merentas pecahan memerlukan komit dua fasa (2PC) atau saga. Nasihat lazim: reka bentuk supaya transaksi kekal dalam satu pecahan.

Ringkasan

Tiga strategi; pilih berdasarkan bentuk trafik anda.

  • Julat — mudah, berisiko menghasilkan pecahan panas
  • Cincangan — sekata tetapi tegar
  • Direktori — fleksibel tetapi menambah kelewatan
  • Pencincangan konsisten untuk pemecahan semula yang lancar

Semakan Pantas

Anda memecahkan jadual pengguna berdasarkan hash(user_id). Anda beralih daripada 4 pecahan kepada 5. Berapa banyak kunci yang mesti dipindahkan?

Percuma untuk bermula

Pelajari SQL dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
46
Pelajaran
183

Soalan Lazim

Adakah pelajaran “Strategi Pembahagian: Julat, Hash, Direktori” percuma?

Ya — teks penuh “Strategi Pembahagian: Julat, Hash, Direktori” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus SQL Academy, tingkat taraf kepada CoddyKit PRO. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Strategi Pembahagian: Julat, Hash, Direktori”?

Bandingkan pembahagian berasaskan julat, hash dan direktori, lalu pilih kunci bahagian yang mengimbangi beban dan kekal stabil. Anda berlatih SQL Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan SQL Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran SQL Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Strategi Pembahagian: Julat, Hash, Direktori” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Strategi Pembahagian: Julat, Hash, Direktori
  2. Pertanyaan Merentas Bahagian: Masalah Sukar
  3. Citus dan Postgres Teragih
  4. Bila TIDAK Perlu Membahagi
← Kembali ke SQL Academy