7 पॉइंट द्वारा GN⁺ 2024-11-13 | 2 टिप्पणियां | WhatsApp पर शेयर करें

Postgres के बारे में जानने लायक बातें

  • Postgres दस्तावेज़ों का विशाल दायरा: Postgres का आधिकारिक documentation बहुत बेहतरीन है, लेकिन इसकी मात्रा इतनी अधिक है कि शुरुआती engineers के लिए इसे शुरू से अंत तक पढ़ना मुश्किल हो सकता है.

डेटा normalization

  • डेटा normalization: यह database schema में duplicate data को हटाने की प्रक्रिया है. उदाहरण के लिए, documents table में user_email column रखने के बजाय users table से foreign key के माध्यम से जोड़ना बेहतर है.
  • denormalization की ज़रूरत: कुछ मामलों में किसी खास data को तेज़ी से पढ़ने के लिए denormalization की आवश्यकता हो सकती है. लेकिन denormalized data के साथ data inconsistency या writes की बढ़ी हुई complexity जैसी लागतें आती हैं.

Postgres निर्माताओं की सलाह मानें

  • Postgres Wiki में "क्या नहीं करना चाहिए": आधिकारिक Postgres Wiki में "क्या नहीं करना चाहिए" की एक सूची है. भले ही आप सब कुछ न समझें, फिर भी इससे गलतियों से बचा जा सकता है.
  • सिफारिशें: सभी text store करने के लिए text type का उपयोग करें, सभी timestamps store करने के लिए timestampz/time with time zone type का उपयोग करें, और table names को snake_case में लिखें.

आम SQL विशेषताएँ

  • SQL case-sensitive नहीं है: SQL keywords में बड़े और छोटे अक्षरों का फर्क नहीं किया जाता. यह केवल Postgres तक सीमित नहीं है.
  • NULL की खासियत: SQL में NULL का मतलब "अज्ञात" होता है, और अधिकतर operators के साथ मिलकर इसका परिणाम NULL ही बनता है. IS NULL, IS NOT NULL जैसे operators का उपयोग करके NULL की तुलना की जा सकती है.

psql को और उपयोगी बनाना

  • output की readability बेहतर करना: terminal pager का उपयोग करके लंबे output को अधिक स्पष्ट रूप से देखा जा सकता है. less को pager के रूप में सेट किया जा सकता है.
  • अस्पष्ट NULL को स्पष्ट करना: psql में NULL दिखाने वाली string सेट करके output में NULL को स्पष्ट किया जा सकता है.
  • auto-complete का उपयोग: psql auto-complete को support करता है, जिससे SQL keywords या table names को आसानी से टाइप किया जा सकता है.

index जोड़ने का असर

  • index की परिभाषा: index एक data structure है जो data को तेज़ी से lookup करने में मदद करता है.
  • index की सीमाएँ: अगर local database में rows बहुत कम हैं, तो index उपयोगी न भी हो सकता है. कई columns पर indexing करते समय उनका क्रम महत्वपूर्ण होता है.

JSONB का उपयोग

  • JSONB के फायदे और नुकसान: Postgres JSON को कुशलता से store और query करने की सुविधा देता है, लेकिन गलत तरीके से इस्तेमाल करने पर performance गिर सकती है.
  • JSONB की संरचनात्मक सीमा: JSONB column में structure की कोई गारंटी नहीं होती, इसलिए यह standard table schema जितना self-documenting नहीं होता.

अन्य उपयोगी सुझाव

  • लंबे transactions की समस्या: अगर transaction बहुत लंबे समय तक चलता है, तो यह अन्य clients को database access करने से रोक सकता है.
  • Postgres की शक्तिशाली क्षमताएँ: Postgres document-oriented database जैसी खूबियाँ भी देता है, और JSONB के माध्यम से data को कुशलता से store और query किया जा सकता है.

2 टिप्पणियां

 
bbulbum 2024-11-19

क्या नहीं करना चाहिए, इसे कभी न कभी एक बार पढ़ना पड़ेगा।

 
GN⁺ 2024-11-13
Hacker News राय
  • Postgres case-sensitive है, लेकिन query में keywords को uppercase में लिखना सिर्फ readability बढ़ाने के लिए होता है। यह ज़रूरी नहीं है, लेकिन debugging के समय query को आसानी से पढ़ने लायक बनाना उपयोगी होता है

    • दूसरी भाषाओं में code formatting की तरह, consistent indentation आदि समझने में लगने वाला समय कम करते हैं ताकि महत्वपूर्ण हिस्सों पर ध्यान केंद्रित किया जा सके
    • actuallyUsingCaseInIdentifiers जैसे identifiers में uppercase letters का उपयोग करने से बचना चाहेंगे
  • "Don't Do This" wiki entry पहली बार मिली, और यह बहुत उपयोगी है

  • बहुत-सी बातें सिर्फ Postgres तक सीमित नहीं हैं (जैसे null की विचित्रता, index column order आदि)

    • उदाहरण के लिए, null का index और unique constraints के साथ interact करने का तरीका MySQL में भी intuitive नहीं है
    • अगर user table में एक non-nullable email column और एक nullable username column हो, और (email, username) जैसा unique constraint हो, तो same email को null username के साथ कई बार insert किया जा सकता है
  • data normalization करने की सलाह को सावधानी से लेना चाहिए

    • लेखक ने normalization के 10 अलग-अलग types का ज़िक्र किया, लेकिन ज़्यादातर लोगों को उनमें से 7 का इस्तेमाल करने की ज़रूरत नहीं होती
  • उम्मीद है कि developers normalization पर ज़्यादा ध्यान देंगे और JSON(b) columns में सब कुछ ठूँसना बंद करेंगे

  • "journey" शब्द का overuse होने की वजह से blogs में यह चिढ़ पैदा करता है

  • code sections mobile पर इतने असुविधाजनक हैं कि लगभग scroll ही नहीं किए जा सकते

  • JSON spec में 'null' एक constant value है, और यह SQL के NULL से अलग है

  • index जोड़ने पर भी संभव है कि उसका कोई असर न हो

    • Postgres की philosophy कुछ ज़्यादा ही प्रबल लगती है या उसके कुछ हिस्से समझना कठिन हैं
    • उम्मीद है कि future versions में hint support जुड़ सकता है
  • ऐसे लेख पढ़कर 90% समझ आ जाना, इससे अपने किए गए काम पर गर्व महसूस होता है