0Pricing
SQL Academy · Ders

Parçalar Arası Sorgular: Zor Problem

Parçalı dağıtık veritabanlarında parçalar arası birleştirmelerin ve işlemlerin neden en zor problem olduğunu ve bunları en aza indiren kalıpları anlayın.

Parçalar Arası Sorgular: Zor Problem, 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.

Parçalama Bedeli

Parçalama yazma işlemlerini ve kapasiteyi ölçeklendirir, ancak parçaları kapsayan sorguları zahmetli hâle getirir: parçalar arası her sorgu bir çoklu dağıtımdır.

Tek Parçalı Sorgular Kolaydır

Parça anahtarınız WHERE koşulundaysa yönlendirici tek bir sorguyu tek bir parçaya gönderir:

-- shard_id = hash(user_id) % N
SELECT * FROM orders WHERE user_id = 42;
-- Router computes shard, sends one query, gets one result.

Çoklu Dağıtım Sorguları

Parça anahtarı olmadan yönlendirici her parçayı sorgular ve sonuçları birleştirir:

-- WHERE status = 'paid' — no user_id
SELECT * FROM orders WHERE status = 'paid' ORDER BY created_at DESC LIMIT 100;
-- Must query all N shards, merge results, sort, take top 100.

Çoklu Dağıtım Toplulaştırmaları

COUNT/SUM/AVG için her parçadan kısmi sonuçları alın, ardından bunları yönlendiricide veya uygulamada birleştirin:

-- On each shard:
SELECT COUNT(*), SUM(total) FROM orders;

-- Aggregator:
final_count = SUM(counts), final_sum = SUM(sums)

-- AVG is trickier — need SUM and COUNT, can't average averages.

Parçalar Arası JOIN İşlemleri

Her iki taraf da aynı anahtara göre parçalanmışsa (birlikte konumlandırılmışsa) JOIN parça içinde gerçekleşir. Aksi hâlde büyük ölçekte bu işlem neredeyse imkânsızdır.

Başvuru Tabloları (Her Yerde Çoğaltılmış)

Küçük "arama" tabloları her parçaya çoğaltılır; böylece bunlarla yapılan JOIN işlemleri parça içinde kalır. Citus bunlara "başvuru tabloları" adını verir.

Parçalar Arası Desenlerden Kaçınma

Şema tasarımı için bazı yöntemler:

  • Normalleştirmeyi kaldırın — üst öğe verilerini alt öğenin bulunduğu parçaya kopyalayın
  • Parça anahtarını her yerde kullanın — "gereksiz" olsa bile
  • Raporları ayrı bir analitik veritabanında önceden hesaplayın

Parçalar Arası Sayfalama

Birçok parçada OFFSET 1000 LIMIT 10 kullanmak berbattır — her parça 1010 satır üretmelidir. Bunun yerine anahtar tabanlı sayfalama kullanın.

Dağıtık İşlemler

İki aşamalı kesinleştirme (2PC), parçalar arasındaki atomik kesinleştirmeleri koordine eder. Yavaştır ve bölümlenme sırasında kırılgandır. Uygulamada "saga" desenleri için tasarım yapın:

// Saga pattern (conceptual):
//   1. Local TX on shard A: mark as pending, log
//   2. RPC to shard B: do its part
//   3. Local TX on shard A: mark as committed
//   4. On failure: compensating transactions

Yoğun Parçalar

Ünlü bir kullanıcı veya viral bir ürün — tek bir parçada yoğunlaşan trafik, ölçeklendirme yaklaşımınızı başarısız kılar. Tespit edip bölün (alt parçalama) veya taşıyın.

Parçalar Arası Yabancı Anahtarlar

RDBMS yabancı anahtarları parçalar arasına yayılmaz. Başvuru bütünlüğünü uygulamada sağlayın veya parçalar arası ilişkiler için nihai tutarlılığı kabul edin.

Özet

Parçalama, zorluğu "yazma işlemlerini ölçeklendirmekten" "sorguları parça içinde kalacak şekilde biçimlendirmeye" taşır.

  • Tek parçalı sorgular hızlıdır
  • Çoklu dağıtım yavaştır
  • İşi parça içinde tutmak için normalleştirmeyi kaldırın
  • Paylaşılan boyutlar için başvuru tabloları
  • 2PC yerine saga'lar

Hızlı Kontrol

Parçalı bir veritabanında WHERE koşulunda parça anahtarı bulunmayan bir SELECT neden pahalıdır?

Sıkça Sorulan Sorular

“Parçalar Arası Sorgular: Zor Problem” dersi ücretsiz mi?

Evet — “Parçalar Arası Sorgular: Zor Problem” 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.

“Parçalar Arası Sorgular: Zor Problem” dersinde ne öğreneceğim?

Parçalı dağıtık veritabanlarında parçalar arası birleştirmelerin ve işlemlerin neden en zor problem olduğunu ve bunları en aza indiren kalıpları anlayın. 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.

“Parçalar Arası Sorgular: Zor Problem” 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. Parçalama Stratejileri: Aralık, Hash, Dizin
  2. Parçalar Arası Sorgular: Zor Problem
  3. Citus ve Dağıtık Postgres
  4. Ne Zaman Parçalamamalı
← SQL Academy Sayfasına Dön