SQL Academy · पाठ

रेंज, सूची और हैश पार्टीशनिंग

सही पार्टीशनिंग रणनीति चुनें: टाइम-सीरीज़ के लिए रेंज, टेनेंट के लिए सूची और समान वितरण के लिए हैश

पाठ 2, कुल 4 में से14 चरण

रेंज, सूची और हैश पार्टीशनिंग, CoddyKit पर SQL Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

रेंज पार्टिशनिंग

हर पार्टिशन मानों की एक सतत सीमा को समेटता है। समय-श्रृंखला के लिए यह सबसे सामान्य तरीका है:

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');

रेंज की सीमाएँ अर्ध-खुली होती हैं

FROM समावेशी है और TO बहिष्कृत। सीमाएँ साफ़-सुथरे ढंग से संरेखित होती हैं — न कोई ओवरलैप, न कोई अंतराल।

सूची पार्टिशनिंग

हर पार्टिशन विशिष्ट मान रखता है:

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 पार्टिशन

ऐसी पंक्तियों को समेटता है जो किसी अन्य पार्टिशन से मेल नहीं खातीं। इसके बिना, मेल न खाने वाली पंक्तियों के INSERT विफल हो जाते हैं।

हैश पार्टिशनिंग

पंक्तियों को पार्टिशन कुंजी पर हैश लागू करके वितरित किया जाता है। जब आपको समान वितरण चाहिए, लेकिन कोई स्वाभाविक रेंज या सूची उपलब्ध न हो, तब यह उपयोगी है:

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);

रणनीति चुनना

  • रेंज — समय-श्रृंखला और लगातार बढ़ने वाली आईडी के लिए
  • सूची — ग्राहकों, देशों और हॉट स्तरों के लिए
  • हैश — जब कोई स्वाभाविक असंतुलन न हो और केवल समानांतरता चाहिए

उप-पार्टिशनिंग

पार्टिशन को स्वयं भी पार्टिशन किया जा सकता है, यानी कई स्तर बनाए जा सकते हैं:

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.

पार्टिशन की गई तालिकाओं पर इंडेक्स

पैरेंट पर बनाए गए इंडेक्स अपने-आप सभी पार्टिशन तक पहुँच जाते हैं। UNIQUE बाधाओं में पार्टिशन कुंजी शामिल होना आवश्यक है:

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.

प्राथमिक कुंजियाँ और पार्टिशन

पार्टिशन की गई तालिका की PRIMARY KEY में पार्टिशन कॉलम शामिल होना आवश्यक है। यह घोषणात्मक पार्टिशनिंग की मूलभूत बाधा है।

पार्टिशन जोड़ना और हटाना

कम लागत वाले संचालन:

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.

पार्टिशन का स्वचालित निर्माण

Postgres भविष्य के पार्टिशन अपने-आप नहीं बनाता। सामान्य समाधान:

  • pg_partman एक्सटेंशन — प्रबंधित मासिक पार्टिशन
  • अगला पार्टिशन CREATE करने वाला निर्धारित कार्य

विदेशी कुंजियाँ

पार्टिशन की गई तालिका पर जाने वाले FKs के लिए PG 12+ आवश्यक है। पार्टिशन की गई तालिका से सामान्य तालिका पर जाने वाले FKs सामान्य रूप से काम करते हैं।

पुनरावलोकन

तीन पार्टिशनिंग रणनीतियाँ अधिकांश परिस्थितियों को संभाल लेती हैं।

  • समय या क्रमिक डेटा के लिए रेंज
  • अलग-अलग मानों के समूहों के लिए सूची
  • समान वितरण के लिए हैश
  • PK में पार्टिशन कॉलम शामिल होना आवश्यक है

त्वरित जाँच

आप user_id के आधार पर sessions तालिका का समान वितरण के साथ और किसी स्वाभाविक क्रम के बिना विभाजन करना चाहते हैं। कौन-सी रणनीति अपनाएँगे?

शुरुआत निःशुल्क

एआई शिक्षक के साथ SQL सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
46
पाठ
183

अक्सर पूछे जाने वाले प्रश्न

क्या “रेंज, सूची और हैश पार्टीशनिंग” पाठ निःशुल्क है?

हाँ—“रेंज, सूची और हैश पार्टीशनिंग” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“रेंज, सूची और हैश पार्टीशनिंग” में मैं क्या सीखूँगा?

सही पार्टीशनिंग रणनीति चुनें: टाइम-सीरीज़ के लिए रेंज, टेनेंट के लिए सूची और समान वितरण के लिए हैश आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या SQL Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“रेंज, सूची और हैश पार्टीशनिंग” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस SQL Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर SQL Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. पार्टीशन क्यों करें: प्रूनिंग, रखरखाव
  2. रेंज, सूची और हैश पार्टीशनिंग
  3. पार्टीशन अलग करना और जोड़ना
  4. पार्टीशन में कुशलता से क्वेरी करना
← SQL Academy पर वापस जाएँ