1. एटलस का परिचय

एटलस

एटलस एक भाषा-स्वतंत्र उपकरण है जो आधुनिक देवओप्स सिद्धांतों का उपयोग करके डेटाबेस स्कीमों का प्रबंधन और माइग्रेशन करने के लिए विशेष रूप से डिज़ाइन किया गया है। इसके दो वर्कफ़्लो विकल्प हैं:

  • सार्वकल्पिक: टेराफ़रॉर्म की तरह, एटलस वर्तमान डेटाबेस की स्थिति को HCL, SQL, या ORM स्कीमा का उपयोग करके परिभाषित चाहिए होने वाली स्थिति के साथ तुलना करता है। इस तुलना के आधार पर, यह एक माइग्रेशन प्लान बनाता है और डेटाबेस को इसकी चाहिए होने वाली स्थिति में लाने के लिए इसे क्रियान्वित करता है।
  • संस्करित: दूसरे उपकरणों की तरह, एटलस स्वचालित रूप से आपके लिए स्कीमा माइग्रेशन की योजना बनाता है। प्रयोक्ता HCL, SQL, या अपनी पसंद के ORM का उपयोग करके अपनी चाहिए होने वाली डेटाबेस स्कीमा को वर्णन कर सकते हैं, और एटलस के साथ, डेटाबेस पर आवश्यक माइग्रेशनों को योजना बना सकते हैं, समीक्षा कर सकते हैं, और लागू कर सकते हैं।

एटलस का एक महत्वपूर्ण लाभ डेटाबेस प्रबंधन की जटिलता को सरलीकृत करना है, जिससे संस्करण नियंत्रण, सहयोग, और क्रियान्वयन आसान हो जाता है।

2. एटलस का इंस्टॉलेशन

डेटाबेस संस्करणों को प्रबंधित करने के लिए एटलस का उपयोग करने से पहले, हमें इसे इंस्टॉल करना होगा। नीचे विभिन्न प्लेटफार्मों के लिए इंस्टॉलेशन कदम दिए गए हैं।

2.1 macOS + लिनक्स इंस्टॉलेशन

macOS या लिनक्स सिस्टमों पर, आप निम्नलिखित कमांड लाइन का उपयोग करके एटलस के नवीनतम संस्करण को डाउनलोड और इंस्टॉल कर सकते हैं:

curl -sSf https://atlasgo.sh | sh

यह कमांड स्वचालित रूप से ऑपरेटिंग सिस्टम संस्करण का पता लगाएगा, उपयुक्त बिल्ड संस्करण डाउनलोड करेगा, और एटलस बाइनरी फ़ाइल को क्रियात्मक पथ पर रखेगा।

2.2 होमब्रू के माध्यम से इंस्टॉलेशन

यदि आप macOS का उपयोग कर रहे हैं और पहले से ही होमब्रू पैकेज प्रबंधक इंस्टॉल किया है, तो एटलस को इंस्टॉल करना बहुत आसान है, केवल निम्नलिखित कमांड चलाएं:

brew install ariga/tap/atlas

यह होमब्रू के रिपॉज़िटरी से नवीनतम संस्करण को डाउनलोड करेगा और इंस्टॉल करेगा।

2.3 डॉकर इंस्टॉलेशन

डॉकर के माध्यम से एटलस को इंस्टॉल करना और चलाना एक तेज और सुविधाजनक विधि है, विशेष रूप से अस्थायी परीक्षण के लिए या उपयोक्ता जो अपने होस्ट सिस्टम पर अतिरिक्त सॉफ़्टवेयर इंस्टॉल करना नहीं चाहते।

सबसे पहले, एटलस डॉकर इमेज को पुल करें:

docker pull arigaio/atlas

फिर, आप एक मदद कमांड चला सकते हैं ताकि सफल इंस्टॉलेशन की पुष्टि की जा सके:

docker run --rm arigaio/atlas --help

यदि कंटेनर को होस्ट नेटवर्क या स्थानीय निर्देशिकाओं तक पहुंच की आवश्यकता होती है, तो --net=host फ्लैग का उपयोग करें और आवश्यक निर्देशिकाओं को माउंट करें:

docker run --rm --net=host \
  -v $(pwd)/migrations:/migrations \
  arigaio/atlas migrate apply \
  --url "mysql://root:pass@:3306/test"

2.4 विंडोज़ इंस्टॉलेशन

बाइनरी फ़ाइल डाउनलोड करें, https://release.ariga.io/atlas/atlas-windows-amd64-latest.exe, और सिस्टम के PATH वातावरण चरणियों में इंस्टॉलेशन पथ जोड़ें।

3. अटलस का उपयोग करके मौजूदा डेटाबेस तालिका संरचना का निर्यात करें

अटलस atlas schema inspect कमांड प्रदान करता है, जिसका उपयोग मौजूदा डेटाबेस की संरचना को निर्यात करने के लिए किया जा सकता है। इस कमांड का समर्थन डेटाबेस URL से डेटाबेस विवरण पढ़ने और इन्हें तीन विभिन्न प्रारूपों में निकालता है: डिफ़ॉल्ट अटलस HCL प्रारूप, SQL प्रारूप और JSON प्रारूप। इस गाइड में, हम दिखाएँगे कि अटलस HCL और SQL प्रारूप का उपयोग कैसे करें, क्योंकि JSON प्रारूप सामान्यत: jq के साथ आउटपुट प्रसंस्करण के लिए किया जाता है।

स्थानीय रूप से चल रहे MySQL इंस्टेंस की जाँच करने और उत्पादन को schema.hcl नामक एक फ़ाइल में लिखने के लिए, निम्नलिखित कमांड का उपयोग करें:

atlas schema inspect -u "mysql://root:pass@localhost:3306/example" > schema.hcl

schema.hcl फ़ाइल खोलकर अटलस तालिका संरचना परिभाषा को देखें जो डाटाबेस का वर्णन करती है (HCL एक डेटाबेस स्वतंत्र तालिका संरचना कॉन्फ़िगरेशन प्रारूप है जो अटलस द्वारा परिभाषित होता है)। उदाहरण के लिए, यह फ़ाइल निम्नलिखित सामग्री रखेगी:

table "users" {
  schema = schema.example
  column "id" {
    null = false
    type = int
  }
  column "name" {
    null = true
    type = varchar(100)
  }
  primary_key {
    columns = [column.id]
  }
}

यह कोड ब्लॉक id और name कॉलम के साथ एक तालिका संरचना को दर्शाता है। परिभाषा फ़ील्ड इस डोकेकर की मिसाल मानक परिभाषानिक दर्शाता है जो इस दस्तावेज़ के अन्य क्षेत्र में विभाजित होता है। साथ ही, primary_key सब-ब्लॉक तालिका के मूल कॉलम के रूप में id कॉलम को निर्दिष्ट करता है। अटलस डेटाबेस के वाक्य-रचना की संरचना को नकल करने का प्रयास करता है। इस उदाहरण में, id कॉलम का प्रकार int है, जबकि name कॉलम का प्रकार varchar(100) है।

इसी तरह, डेटाबेस की SQL मॉडल परिभाषा को निर्यात करने के लिए आप निम्नलिखित कमांड का उपयोग कर सकते हैं:

atlas schema inspect -u "mysql://root:pass@localhost:3306/example" --format '{{ sql . }}' > schema.sql

schema.sql फ़ाइल खोलकर डेटाबेस का SQL विवरण देखें, जिसमें सामान्यत: कुछ CREATE TABLE विधानन शामिल होते हैं।

यह उपाय मौजूदा डेटाबेस तालिका संरचना के विवरण को समझने को सुविधाजनक बनाता है और आगामी संस्करणित माइग्रेशन के लिए सटीक संदर्भ प्रदान करता है।

4.2.1 अंतर की गणना करें

माइग्रेशन की शुरुआत से पहले, वर्तमान डेटाबेस संरचना को आवश्यकतानुसार देखकर तथा दोनों के बीच अंतर निर्धारित करना आवश्यक होता है। इसे atlas migrate diff कमांड चलाकर किया जा सकता है।

atlas migrate diff create_blog_posts \
  --dir "file://migrations" \
  --to "file://schema.hcl" \
  --dev-url "docker://mysql/8/example"

--dir माइग्रेशन फोल्डर का URL निर्दिष्ट करता है, जो यहां पर file://migrations पर डिफ़ॉल्ट हो जाता है। --to वांछित स्थिति का URL निर्दिष्ट करता है (जैसे कि, आपके विकास वातावरण डेटाबेस), और --dev-url विकास डेटाबेस के लिए अंतर निकासी करने के लिए एक URL प्रदान करता है (ध्यान दें कि इस --dev-url में एक खाली डेटाबेस का निर्दिष्ट करने की आवश्यकता होती है जो अंतर निकासी के लिए Atlas उपयोग करता है)।

सुझाव: यदि आप SQL फ़ाइल जेनरेट करना चाहते हैं, तो --format पैरामीटर का उपयोग करके पूर्व अनुभाग में स्थापित करने के लिए प्रारूप निर्धारित करने के लिए संदर्भित हों।

4.2.2 माइग्रेशन परिवर्तन लागू करें

अंतर की गणना पूर्ण होने के बाद, Atlas migrations फोल्डर में दो माइग्रेशन फ़ाइलें उत्पन्न करेगा। उदाहरण के लिए, यदि चयनित प्रारूप SQL है, तो निम्नलिखित SQL फ़ाइल, diff कमांड द्वारा उत्पन्न फ़ाइलें, एक नए तालिका बनाने के लिए माइग्रेशन कमांड शामिल करती हैं:

-- तालिका "blog_posts" बनाएं
CREATE TABLE `blog_posts` (
  `id` int NOT NULL,
  `title` varchar(100) DEFAULT NULL,
  `body` text DEFAULT NULL,
  `author_id` int NULL REFERENCES `users`(id),
  PRIMARY KEY (`id`)
);

जब माइग्रेशन फ़ाइलें उत्पन्न हो जाती हैं, तो आप इन परिवर्तनों को प्रबंधित करने के लिए संस्करण नियंत्रण उपकरण (जैसे, Git) का उपयोग कर सकते हैं। इस दृष्टिकोण से, विकास वातावरण में कई डेटाबेस तालिका संरचना संशोधन करने की अनुमति देता है और, जब रिलीज का समय होता है, Atlas कमांड का उपयोग करके विकास वातावरण और UAT वातावरण की तुलना करने के लिए संदर्भनुसार डेटाबेस तालिका संरचना माइग्रेशन फ़ाइलें उत्पन्न करने के लिए। इन माइग्रेशन फ़ाइलों को फिर UAT और उत्पादन वातावरण में लागू किया जा सकता है ताकि डेटाबेस को अपग्र

5.5 primary_key ऑब्जेक्ट

primary_key table का एक सब-संसाधन है जो तालिका की प्राथमिक कुंजी को परिभाषित करता है।

primary_key {
  columns = [column.id]
}

5.6 foreign_key ऑब्जेक्ट

foreign_key table का एक सब-संसाधन है जो अन्य तालिकाओं में स्तंभों को संदर्भित करने वाले स्तंभों को परिभाषित करता है।

table "orders" {
  schema = schema.market
  // ...
  column "owner_id" {
    type = integer
  }
  foreign_key "owner_id" {
    columns     = [column.owner_id]
    ref_columns = [table.users.column.id]
    on_update   = NO_ACTION
    on_delete   = NO_ACTION
  }
}

5.7 index ऑब्जेक्ट

index ऑब्जेक्ट तालिका पर एक सूचकांक को प्रतिनिधित्व करता है।

index "idx_name" {
  columns = [
    column.name
  ]
  unique = true
}