0Pricing
SQL Academy · Pelajaran

Strategi Sharding: Rentang, Hash, Direktori

Bandingkan sharding berbasis rentang, hash, dan direktori, lalu pilih kunci shard yang menyeimbangkan beban dan tetap stabil

Strategi Sharding: Rentang, Hash, Direktori adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Apa Itu Pemecahan Data?

Memisahkan satu basis data logis ke beberapa server fisik ("pecahan"), yang masing-masing menyimpan sebagian data. Hal ini dilakukan ketika satu server tidak lagi mampu menangani beban kerja.

Pemecahan Data ≠ Replikasi

  • Replikasi—data yang sama pada banyak server (untuk HA dan penskalaan pembacaan)
  • Pemecahan data—data yang berbeda pada server yang berbeda (untuk penskalaan penulisan dan kapasitas)

Anda sering menggabungkan keduanya: setiap pecahan direplikasi untuk HA.

Tiga Strategi Pemecahan Data

  • Rentang—memecah berdasarkan rentang nilai (id 1-1M pada pecahan A, 1M-2M pada pecahan B)
  • Hash—melakukan hash pada kunci pecahan, modulo N
  • Direktori—tabel terpisah memetakan kunci → pecahan

Pemecahan Berdasarkan Rentang

Sederhana, dan bekerja dengan baik untuk deret waktu serta ID yang berurutan. Risikonya adalah pecahan dengan trafik tinggi jika data terbaru menerima seluruh 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 Berdasarkan Hash

Secara bawaan memberikan distribusi yang merata. Sulit menambahkan pecahan (pemecahan ulang memindahkan semua kunci):

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

Pemecahan Berdasarkan Direktori

Tabel pencarian memetakan setiap kunci ke 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.

Hashing Konsisten

Hashing modulo rapuh ketika pecahan ditambahkan. Hashing konsisten meminimalkan jumlah 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 segalanya. Kunci pecahan yang baik:

  • Mendistribusikan data secara merata
  • Hadir dalam sebagian besar kueri (menghindari penyebaran lintas 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 per Pecahan

SaaS multipenyewa: setiap penyewa berada pada pecahan khusus. Mudah dipahami dan mudah mengisolasi penyewa yang menghasilkan trafik berlebihan.

Desain yang Dapat Dipecah Ulang

Rancang dengan mempertimbangkan pemecahan ulang di masa mendatang:

  • Gunakan pecahan virtual (misalnya, 1024 pecahan logis yang dipetakan ke pecahan fisik)
  • Permudah pemindahan pecahan logis ke server fisik lain
  • Hindari kode aplikasi yang menetapkan jumlah pecahan secara langsung

Kueri Lintas Pecahan

Ini adalah masalah tersulit. JOIN dan laporan lintas pecahan memerlukan logika penyebaran dan agregasi di aplikasi. Akan dibahas pada pelajaran berikutnya.

Transaksi Lintas Pecahan

Transaksi lintas pecahan yang atomik memerlukan komit dua fase (2PC) atau saga. Saran umum: rancang agar transaksi tetap berada dalam satu pecahan.

Ringkasan

Ada tiga strategi; pilih berdasarkan pola trafik Anda.

  • Rentang—sederhana, berisiko menimbulkan pecahan dengan trafik tinggi
  • Hash—merata, tetapi kaku
  • Direktori—fleksibel, tetapi menambah latensi
  • Gunakan hashing konsisten untuk pemecahan ulang yang bertahap

Pemeriksaan Singkat

Anda memecah tabel pengguna berdasarkan hash(user_id). Anda beralih dari 4 pecahan menjadi 5. Berapa banyak kunci yang harus dipindahkan?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Strategi Sharding: Rentang, Hash, Direktori” gratis?

Ya — teks lengkap “Strategi Sharding: Rentang, Hash, Direktori” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Strategi Sharding: Rentang, Hash, Direktori”?

Bandingkan sharding berbasis rentang, hash, dan direktori, lalu pilih kunci shard yang menyeimbangkan beban dan tetap stabil Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Strategi Sharding: Rentang, Hash, Direktori” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Strategi Sharding: Rentang, Hash, Direktori
  2. Kueri Lintas Shard: Masalah yang Sulit
  3. Citus dan Postgres Terdistribusi
  4. Kapan TIDAK Melakukan Sharding
← Kembali ke SQL Academy