0Pricing
SQL Academy · Ders

Aralık, Liste ve Hash Bölümlendirmesi

Doğru bölümlendirme stratejisini seçin: zaman serileri için aralık, kiracılar için liste, eşit dağılım için hash.

Aralık, Liste ve Hash Bölümlendirmesi, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.

Aralık Bölümlendirmesi

Her bölüm, değerlerin kesintisiz bir aralığını kapsar. Zaman serileri için en yaygın yöntemdir:

CREATE TABLE events (
  id BIGSERIAL,
  ts TIMESTAMPTZ NOT NULL,
  data JSONB
) PARTITION BY RANGE (ts);

CREATE TABLE events_2024_q1 PARTITION OF events
  FOR VALUES FROM ('2024-01-01') TO ('2024-04-01');
CREATE TABLE events_2024_q2 PARTITION OF events
  FOR VALUES FROM ('2024-04-01') TO ('2024-07-01');

Aralık Sınırları Yarı Açık Aralıklardır

FROM dahil, TO hariçtir. Sınırlar temiz biçimde hizalanır; örtüşme veya boşluk oluşmaz.

Liste Bölümlendirmesi

Her bölüm belirli değerleri tutar:

CREATE TABLE customers (
  id BIGSERIAL,
  country TEXT NOT NULL,
  name TEXT
) PARTITION BY LIST (country);

CREATE TABLE customers_us PARTITION OF customers FOR VALUES IN ('US');
CREATE TABLE customers_eu PARTITION OF customers FOR VALUES IN ('DE','FR','IT','ES','NL');
CREATE TABLE customers_other PARTITION OF customers DEFAULT;

DEFAULT Bölümü

Başka hiçbir bölümle eşleşmeyen satırları yakalar. Böyle bir bölüm olmadığında eşleşmeyen satırların INSERT edilmesi başarısız olur.

Karma Bölümlendirmesi

Satırlar, bölüm anahtarının karması alınarak dağıtılır. Eşit dağılım istediğiniz ancak doğal bir aralık veya listeniz olmadığı durumlar için uygundur:

CREATE TABLE sessions (
  id UUID,
  user_id BIGINT,
  data JSONB
) PARTITION BY HASH (user_id);

CREATE TABLE sessions_0 PARTITION OF sessions FOR VALUES WITH (MODULUS 4, REMAINDER 0);
CREATE TABLE sessions_1 PARTITION OF sessions FOR VALUES WITH (MODULUS 4, REMAINDER 1);
CREATE TABLE sessions_2 PARTITION OF sessions FOR VALUES WITH (MODULUS 4, REMAINDER 2);
CREATE TABLE sessions_3 PARTITION OF sessions FOR VALUES WITH (MODULUS 4, REMAINDER 3);

Strateji Seçme

  • Aralık — zaman serileri, sürekli artan kimlikler
  • Liste — kiracılar, ülkeler, yoğun katmanlar
  • Karma — doğal bir çarpıklık olmadığında ve yalnızca paralellik istendiğinde

Alt Bölümlendirme

Bölümler kendi içlerinde de bölümlendirilebilir (çok düzeyli bölümlendirme):

CREATE TABLE events_2024 PARTITION OF events
  FOR VALUES FROM ('2024-01-01') TO ('2025-01-01')
  PARTITION BY HASH (user_id);
-- 2024 is a yearly range partition, internally hashed by user_id.

Bölümlendirilmiş Tablolardaki Dizinler

Üst tablo üzerindeki dizinler otomatik olarak tüm bölümlere yayılır. UNIQUE kısıtları bölüm anahtarını içermelidir:

CREATE INDEX events_user_idx ON events (user_id);
-- Creates one index per partition automatically.

ALTER TABLE events ADD CONSTRAINT events_uniq UNIQUE (id, ts);
-- ts must be in the constraint because it's the partition key.

Birincil Anahtarlar ve Bölümler

Bölümlendirilmiş bir tablonun PRIMARY KEY değeri bölüm sütununu içermelidir. Bu, bildirimsel bölümlendirmenin temel bir kısıtıdır.

Bölüm Ekleme ve Kaldırma

Ucuz işlemler:

CREATE TABLE events_2024_q3 PARTITION OF events
  FOR VALUES FROM ('2024-07-01') TO ('2024-10-01');

DROP TABLE events_2023_q1;
-- Instant; equivalent to deleting all old data.

Otomatik Bölüm Oluşturma

PostgreSQL gelecekteki bölümleri otomatik olarak oluşturmaz. Yaygın çözümler şunlardır:

  • pg_partman uzantısı — aylık bölümleri yönetir
  • Bir sonraki bölümü CREATE eden zamanlanmış görev

Yabancı Anahtarlar

Bölümlendirilmiş bir tabloya yönelik FK'ler için PG 12 veya sonraki sürümler gerekir. Bölümlendirilmiş bir tablodan normal bir tabloya giden FK'ler normal şekilde çalışır.

Özet

Üç bölümlendirme stratejisi çoğu durumu kapsar.

  • Zaman ve sıralı veriler için aralık
  • Ayrık kümeler için liste
  • Eşit dağılım için karma
  • PK, bölüm sütununu içermelidir

Hızlı Kontrol

sessions tablosunu user_id sütununa göre eşit dağılımla ve doğal bir sıralama olmadan bölümlendirmek istiyorsunuz. Hangi stratejiyi kullanmalısınız?

Sıkça Sorulan Sorular

“Aralık, Liste ve Hash Bölümlendirmesi” dersi ücretsiz mi?

Evet — “Aralık, Liste ve Hash Bölümlendirmesi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.

“Aralık, Liste ve Hash Bölümlendirmesi” dersinde ne öğreneceğim?

Doğru bölümlendirme stratejisini seçin: zaman serileri için aralık, kiracılar için liste, eşit dağılım için hash. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Aralık, Liste ve Hash Bölümlendirmesi” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Neden Bölümlendirme: Budama ve Bakım
  2. Aralık, Liste ve Hash Bölümlendirmesi
  3. Bölümleri Ayırma ve Ekleme
  4. Bölümler Arasında Verimli Sorgulama
← SQL Academy Sayfasına Dön