शनिवार, 21 फ़रवरी 2026

MySQL + Neo4j AI वर्कलोड्स के लिए: क्यों रिलेशनल डेटाबेस अभी भी महत्वपूर्ण हैं

This article was originally published in English at AnotherMySQLDBA.

तो मैंने सोचा कि अब समय आ गया है कि मैं दस्तावेजीकृत करूं कि कैसे पहले से ज्ञात डेटाबेस का उपयोग करके AI एजेंट्स के लिए पर्सिस्टेंट मेमोरी बनाई जाए। वेक्टर डेटाबेस नहीं - MySQL और Neo4j।

यह सैद्धांतिक नहीं है। मैं इस आर्किटेक्चर का रोजाना उपयोग करता हूं, कई प्रोजेक्ट्स में AI एजेंट मेमोरी को हैंडल करने के लिए। यह रहा वास्तव में काम करने वाला स्कीमा और क्वेरी पैटर्न।

द आर्किटेक्चर

AI एजेंट्स को दो प्रकार की मेमोरी की आवश्यकता होती है:

  • संरचित मेमोरी - क्या हुआ, कब, क्यों (MySQL)
  • पैटर्न मेमोरी - क्या किससे जुड़ा है (Neo4j)

वेक्टर डेटाबेस समानता खोज के लिए होते हैं। वे वर्कफ्लो स्टेट या निर्णय इतिहास को ट्रैक करने के लिए नहीं हैं। इसके लिए आपको ACID ट्रांजेक्शन्स और उचित रिलेशनशिप्स की आवश्यकता होती है।

MySQL स्कीमा

यह रहा AI एजेंट पर्सिस्टेंट मेमोरी के लिए वास्तविक स्कीमा:

-- Architecture decisions the AI made
CREATE TABLE architecture_decisions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    project_id INT NOT NULL,
    title VARCHAR(255) NOT NULL,
    decision TEXT NOT NULL,
    rationale TEXT,
    alternatives_considered TEXT,
    status ENUM('accepted', 'rejected', 'pending') DEFAULT 'accepted',
    decided_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    tags JSON,
    INDEX idx_project_date (project_id, decided_at),
    INDEX idx_status (status)
) ENGINE=InnoDB;

-- Code patterns the AI learned
CREATE TABLE code_patterns (
    id INT AUTO_INCREMENT PRIMARY KEY,
    project_id INT NOT NULL,
    category VARCHAR(50) NOT NULL,
    name VARCHAR(255) NOT NULL,
    description TEXT,
    code_example TEXT,
    language VARCHAR(50),
    confidence_score FLOAT DEFAULT 0.5,
    usage_count INT DEFAULT 0,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_project_category (project_id, category),
    INDEX idx_confidence (confidence_score)
) ENGINE=InnoDB;

-- Work session tracking
CREATE TABLE work_sessions (
    id INT AUTO_INCREMENT PRIMARY KEY,
    session_id VARCHAR(255) UNIQUE NOT NULL,
    project_id INT NOT NULL,
    started_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    ended_at DATETIME,
    summary TEXT,
    context JSON,
    INDEX idx_project_session (project_id, started_at)
) ENGINE=InnoDB;

-- Pitfalls to avoid (learned from mistakes)
CREATE TABLE pitfalls (
    id INT AUTO_INCREMENT PRIMARY KEY,
    project_id INT NOT NULL,
    category VARCHAR(50),
    title VARCHAR(255) NOT NULL,
    description TEXT,
    how_to_avoid TEXT,
    severity ENUM('critical', 'high', 'medium', 'low'),
    encountered_count INT DEFAULT 1,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_project_severity (project_id, severity)
) ENGINE=InnoDB;

फॉरेन कीज। चेक कंस्ट्रेंट्स। उचित इंडेक्सिंग। यही रिलेशनल डेटाबेस की ताकत है।

क्वेरी पैटर्न्स

यह रहा AI एजेंट मेमोरी के लिए इसे वास्तव में कैसे क्वेरी करें:

-- Get recent decisions for context
SELECT title, decision, rationale, decided_at
FROM architecture_decisions
WHERE project_id = ?
  AND decided_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
ORDER BY decided_at DESC
LIMIT 10;

-- Find high-confidence patterns
SELECT category, name, description, code_example
FROM code_patterns
WHERE project_id = ?
  AND confidence_score >= 0.80
ORDER BY usage_count DESC, confidence_score DESC
LIMIT 20;

-- Check for known pitfalls before implementing
SELECT title, description, how_to_avoid
FROM pitfalls
WHERE project_id = ?
  AND category = ?
  AND severity IN ('critical', 'high')
ORDER BY encountered_count DESC;

-- Track session context across interactions
SELECT context
FROM work_sessions
WHERE session_id = ?
ORDER BY started_at DESC
LIMIT 1;

ये सीधे-सादे SQL क्वेरीज़ हैं। EXPLAIN सटीक रूप से अपेक्षित इंडेक्स उपयोग दिखाता है। कोई सरप्राइज नहीं।

Neo4j लेयर

MySQL संरचित डेटा को हैंडल करता है। Neo4j रिलेशनशिप्स को हैंडल करता है:

// Create nodes for decisions
CREATE (d:Decision {
  id: 'dec_123',
  title: 'Use FastAPI',
  project_id: 1,
  embedding: [0.23, -0.45, ...]  // Vector for similarity
})

// Create relationships
CREATE (d1:Decision {id: 'dec_123', title: 'Use FastAPI'})
CREATE (d2:Decision {id: 'dec_45', title: 'Used Flask before'})
CREATE (d1)-[:SIMILAR_TO {score: 0.85}]->(d2)
CREATE (d1)-[:CONTRADICTS]->(d3:Decision {title: 'Avoid frameworks'})

// Query: Find similar past decisions
MATCH (current:Decision {id: $decision_id})
MATCH (current)-[r:SIMILAR_TO]-(similar:Decision)
WHERE r.score > 0.80
RETURN similar.title, r.score
ORDER BY r.score DESC

// Query: What outcomes followed this pattern?
MATCH (d:Decision)-[:LEADS_TO]->(o:Outcome)
WHERE d.title CONTAINS 'Redis'
RETURN d.title, o.type, o.success_rate

वे एक साथ कैसे काम करते हैं

फ्लो कुछ इस तरह दिखता है:

  1. AI एजेंट कंटेंट जेनरेट करता है या निर्णय लेता है
  2. MySQL में संरचित डेटा स्टोर करें (क्या, कब, क्यों, पूरा संदर्भ)
  3. एम्बेडिंग जेनरेट करें, Neo4j में समान आइटम्स के साथ रिलेशनशिप्स के साथ स्टोर करें
  4. अगली सेशन: Neo4j प्रासंगिक समान निर्णय ढूंढता है
  5. MySQL उन निर्णयों का पूरा विवरण प्रदान करता है

MySQL सत्य का स्रोत है। Neo4j पैटर्न फाइंडर है।

क्यों सिर्फ वेक्टर डेटाबेस नहीं?

मैंने टीम्स को सिर्फ Pinecone या Weaviate से AI एजेंट मेमोरी बनाने की कोशिश करते देखा है। यह अच्छा काम नहीं करता क्योंकि:

वेक्टर DBs अच्छे हैं:

  • क्वेरी से समान दस्तावेज ढूंढने के लिए
  • सीमांटिक सर्च (RAG)
  • "इस तरह की चीजें"

वेक्टर DBs बुरे हैं:

  • "15 मार्च को हमने क्या निर्णय लिया?"
  • "मुझे वे निर्णय दिखाएं जो आउटेज का कारण बने"
  • "इस वर्कफ्लो की वर्तमान स्थिति क्या है?"
  • "किन पैटर्न्स का कॉन्फिडेंस > 0.8 AND usage_count > 10 है?"

ये क्वेरीज़ को संरचित फिल्टरिंग, जॉइन्स, और ट्रांजेक्शन्स की आवश्यकता होती है। यह रिलेशनल डेटाबेस का क्षेत्र है।

MCP और भविष्य

मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) AI सिस्टम्स द्वारा कॉन्टेक्स्ट को हैंडल करने के तरीके को स्टैंडर्डाइज कर रहा है। शुरुआती MCP इम्प्लीमेंटेशन्स वो खोज रही हैं जो हम पहले से जानते थे: आपको संरचित स्टोरेज और ग्राफ रिलेशनशिप्स दोनों की आवश्यकता है।

``````html

MySQL MCP "resources" और "tools" कैटलॉग को हैंडल करता है। Neo4j संदर्भ आइटम्स के बीच "relationships" को हैंडल करता है। Vector embeddings सिर्फ पहेली का एक टुकड़ा हैं।

Production Notes

वर्तमान सिस्टम जो इस आर्किटेक्चर को चला रहा है:

  • MySQL 8.0, 48 tables, ~2GB data
  • Neo4j Community, ~50k nodes, ~200k relationships
  • Query latency: MySQL <10ms, Neo4j <50ms
  • Backup: Standard mysqldump + neo4j-admin dump
  • Monitoring: Same Percona tools I've used for years

परिचालन जटिलता कम है क्योंकि ये परिपक्व databases हैं जिनके ऑपरेशनल पैटर्न अच्छी तरह समझे जाते हैं।

When to Use What

Use CaseDatabase
Workflow state, decisions, audit trailMySQL/PostgreSQL
Pattern detection, similarity, relationshipsNeo4j
Semantic document search (RAG)Vector DB (optional)

State के लिए MySQL से शुरू करें। Pattern recognition की जरूरत हो तो Neo4j जोड़ें। केवल semantic document retrieval कर रहे हों तो ही vector DBs जोड़ें।

Summary

AI agents को persistent memory की जरूरत है। सिर्फ vector database में embeddings नहीं - structured, relational, temporal memory जिसमें pattern recognition हो।

MySQL structured state को हैंडल करता है। Neo4j graph relationships को हैंडल करता है। साथ में ये वही प्रदान करते हैं जो vector databases अकेले नहीं कर सकते।

AI workloads के लिए relational databases को न छोड़ें। हर काम के लिए सही tool इस्तेमाल करें, जो दोनों को साथ में इस्तेमाल करना है।

इस आर्किटेक्चर के AI agent perspective पर और जानने के लिए, 3k1o पर companion post देखें।

MySQL 8.0 JSON Functions: व्यावहारिक उदाहरण और इंडेक्सिंग

This article was originally published in English at AnotherMySQLDBA.

यह पोस्ट MySQL 8.0 के JSON functions का हाथों-हाथ walkthrough कवर करती है। JSON support MySQL में 5.7 से है, लेकिन 8.0 ने एक सार्थक सुधारों का सेट जोड़ा — बेहतर indexing strategies, नए functions, और multi-valued indexes — जो JSON data के साथ काम करना काफी अधिक व्यावहारिक बनाते हैं। निम्नलिखित सबसे आमतौर पर आवश्यक patterns को दस्तावेज करता है, जिसमें EXPLAIN output और performance observations शामिल हैं जो जानने लायक हैं।

यह "JSON vs. relational" बहस पोस्ट नहीं है। यदि आप MySQL में JSON स्टोर कर रहे हैं, तो आपके पास पहले से ही आपके कारण हैं। यहाँ का लक्ष्य यह सुनिश्चित करना है कि आप उपलब्ध tooling का प्रभावी ढंग से उपयोग कर रहे हैं।

परिवेश

mysql> SELECT @@version, @@version_comment\G
*************************** 1. row ***************************
        @@version: 8.0.36
@@version_comment: MySQL Community Server - GPL

टेस्टिंग एक VM पर की गई जिसमें 8GB RAM था और innodb_buffer_pool_size को 4G पर सेट किया गया था। एक housekeeping नोट जो उल्लेख करने लायक है: query_cache_type 8.0 में अप्रासंगिक है क्योंकि query cache को पूरी तरह हटा दिया गया था। यदि आपने 5.7 instance को migrate किया है और आपके my.cnf में अभी भी वह variable है, तो इसे हटा दें — MySQL 8.0 startup error फेंकेगा।

टेस्ट टेबल सेटअप करना

टेस्ट टेबल एक काफी सामान्य pattern को simulate करती है — एक application जो user profile data और event metadata को JSON blobs के रूप में स्टोर करती है:

CREATE TABLE user_events (
  id          INT UNSIGNED NOT NULL AUTO_INCREMENT,
  user_id     INT UNSIGNED NOT NULL,
  event_data  JSON NOT NULL,
  created_at  DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  INDEX idx_user (user_id)
) ENGINE=InnoDB;

INSERT INTO user_events (user_id, event_data) VALUES
(1, '{"action":"login","ip":"192.168.1.10","tags":["mobile","vpn"],"score":88}'),
(1, '{"action":"purchase","ip":"192.168.1.10","tags":["desktop"],"score":72,"amount":49.99}'),
(2, '{"action":"login","ip":"10.0.0.5","tags":["mobile"],"score":91}'),
(3, '{"action":"logout","ip":"10.0.0.9","tags":["desktop","vpn"],"score":65}'),
(2, '{"action":"purchase","ip":"10.0.0.5","tags":["mobile"],"score":84,"amount":129.00}');

बेसिक एक्सट्रैक्शन: JSON_VALUE बनाम JSON_EXTRACT

JSON_VALUE() को MySQL 8.0.21 में पेश किया गया था और यह scalar values को निकालने का साफ़-सुथरा तरीका है जिसमें built-in type casting है। उसके पहले, आप JSON_EXTRACT() (या -> shorthand) का उपयोग कर रहे थे और manually casting कर रहे थे, जो काम करता है लेकिन आपकी queries में noise जोड़ता है।

-- Pre-8.0.21 approach
SELECT user_id,
       JSON_EXTRACT(event_data, '$.action') AS action,
       CAST(JSON_EXTRACT(event_data, '$.score') AS UNSIGNED) AS score
FROM user_events;

-- Cleaner 8.0.21+ approach
SELECT user_id,
       JSON_VALUE(event_data, '$.action') AS action,
       JSON_VALUE(event_data, '$.score' RETURNING UNSIGNED) AS score
FROM user_events;

दूसरी query का आउटपुट:

+---------+----------+-------+
| user_id | action   | score |
+---------+----------+-------+
|       1 | login    |    88 |
|       1 | purchase |    72 |
|       2 | login    |    91 |
|       3 | logout   |    65 |
|       2 | purchase |    84 |
+---------+----------+-------+
5 rows in set (0.00 sec)

RETURNING clause वास्तव में उपयोगी है। यह awkward double-cast pattern को समाप्त करता है और बाद में query code पढ़ते समय intent को स्पष्ट बनाता है।

Multi-Valued Indexes: असली गेम चेंजर

यहीं 8.0 ने वास्तव में JSON workloads के लिए सुई को हिलाया। Multi-valued indexes, जो MySQL 8.0.17 से उपलब्ध हैं, आपको JSON column के अंदर array elements को सीधे index करने की अनुमति देते हैं। यह practice में कैसा दिखता है:

ALTER TABLE user_events
  ADD INDEX idx_tags ((CAST(event_data->'$.tags' AS CHAR(64) ARRAY)));

यहाँ EXPLAIN tag value से filter करने वाली query पर before और after दिखाता है:

-- Without the multi-valued index:
EXPLAIN SELECT * FROM user_events
WHERE JSON_CONTAINS(event_data->'$.tags', '"vpn"')\G

*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: user_events
   partitions: NULL
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 5
     filtered: 100.00
        Extra: Using where

-- After adding the multi-valued index:
EXPLAIN SELECT * FROM user_events
WHERE JSON_CONTAINS(event_data->'$.tags', '"vpn"')\G

*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: user_events
   partitions: NULL
         type: range
possible_keys: idx_tags
          key: idx_tags
      key_len: 67
          ref: NULL
         rows: 2
     filtered: 100.00
        Extra: Using where

Full table scan से range scan तक। 5 rows पर यह trivial है, लेकिन लाखों rows वाली table और frequent tag-based filtering पर, वह अंतर महत्वपूर्ण है। सुधार table size और query frequency के साथ सीधे scale करता है।

एक महत्वपूर्ण gotcha: MEMBER OF() और JSON_OVERLAPS() भी multi-valued indexes से लाभान्वित होते हैं, लेकिन JSON_SEARCH() नहीं। यह design time पर query pattern चुनते समय मायने रखता है:

-- This WILL use the multi-valued index:
SELECT * FROM user_events
WHERE 'vpn' MEMBER OF (event_data->'$.tags');

-- This will NOT use it:
SELECT * FROM user_events
WHERE JSON_SEARCH(event_data->'$.tags', 'one', 'vpn') IS NOT NULL;

JSON को Aggregate और Transform करना

कुछ aggregation functions जो अच्छी तरह जानने लायक हैं:

``````html
-- Build a JSON array of actions per user
SELECT user_id,
       JSON_ARRAYAGG(JSON_VALUE(event_data, '$.action')) AS actions
FROM user_events
GROUP BY user_id;

+---------+----------------------+
| user_id | actions              |
+---------+----------------------+
|       1 | ["login","purchase"] |
|       2 | ["login","purchase"] |
|       3 | ["logout"]           |
+---------+----------------------+
3 rows in set (0.01 sec)

-- Summarize into a JSON object keyed by action
SELECT user_id,
       JSON_OBJECTAGG(
         JSON_VALUE(event_data, '$.action'),
         JSON_VALUE(event_data, '$.score' RETURNING UNSIGNED)
       ) AS score_by_action
FROM user_events
GROUP BY user_id;

+---------+--------------------------------+
| user_id | score_by_action                |
+---------+--------------------------------+
|       1 | {"login": 88, "purchase": 72}  |
|       2 | {"login": 91, "purchase": 84}  |
|       3 | {"logout": 65}                 |
+---------+--------------------------------+
3 rows in set (0.00 sec)

JSON_OBJECTAGG() त्रुटि फेंकेगा यदि किसी समूह में डुप्लिकेट कुंजियाँ हों। यह जानना उपयोगी है इससे पहले कि आप इसे प्रोडक्शन ETL पाइपलाइन में सामना करें। उस स्थिति में, आपको अपस्ट्रीम में डुप्लिकेट हटाने होंगे या एप्लिकेशन लॉजिक में इसे हैंडल करना होगा इससे पहले कि डेटा इस एग्रीगेशन स्टेप तक पहुँचे।

JSON-हैवी क्वेरीज़ के बाद SHOW STATUS चेक करना

क्वेरी पैटर्न का मूल्यांकन करते समय, हैंडलर मेट्रिक्स चेक करना एक उपयोगी आदत है:

FLUSH STATUS;

SELECT * FROM user_events
WHERE JSON_VALUE(event_data, '$.score' RETURNING UNSIGNED) > 80;

SHOW STATUS LIKE 'Handler_read%';

+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Handler_read_first         | 1     |
| Handler_read_key           | 0     |
| Handler_read_last          | 0     |
| Handler_read_next          | 4     |
| Handler_read_prev          | 0     |
| Handler_read_rnd           | 0     |
| Handler_read_rnd_next      | 6     |
+----------------------------+-------+
7 rows in set (0.00 sec)

Handler_read_rnd_next मान पूर्ण स्कैन की पुष्टि करता है — आश्चर्य की कोई बात नहीं क्योंकि score मान पर कोई फंक्शनल इंडेक्स नहीं है। स्केल पर score-आधारित फिल्टरिंग के लिए, एक जेनरेटेड कॉलम जिसमें इंडेक्स हो, सही उत्तर है:

ALTER TABLE user_events
  ADD COLUMN score_val TINYINT UNSIGNED
    GENERATED ALWAYS AS (JSON_VALUE(event_data, '$.score' RETURNING UNSIGNED)) VIRTUAL,
  ADD INDEX idx_score (score_val);

उसे जोड़ने के बाद, वही क्वेरी एक उचित इंडेक्स रेंज स्कैन पर आ जाती है। JSON फील्ड्स पर जेनरेटेड कॉलम MySQL 8.0 और Percona Server 8.0 दोनों में उपलब्ध हैं, और वे किसी भी सार्थक स्केल पर स्केलर JSON फील्ड फिल्टरिंग के लिए सबसे विश्वसनीय मार्ग बने रहते हैं।

यदि आप Percona Server चला रहे हैं, तो Percona Toolkit से pt-query-digest अभी भी सबसे व्यावहारिक तरीका है जिससे आप यह पहचान सकें कि कौन सी JSON-हैवी क्वेरीज़ वास्तव में प्रोडक्शन में दर्द पैदा कर रही हैं इससे पहले कि आप सट्टेबाजी में इंडेक्स जोड़ना शुरू करें।

व्यावहारिक अवलोकन

  • मल्टी-वैल्यूड इंडेक्स (8.0.17+) एक लंबे समय से लंबित सुधार हैं और अच्छा काम करते हैं जब आपके क्वेरी पैटर्न JSON_CONTAINS() या MEMBER OF() के साथ संरेखित हों
  • JSON_VALUE() with RETURNING (8.0.21+) पुराने cast-after-extract पैटर्न से साफ-सुथरा है और इसे लगातार अपनाना चाहिए
  • जेनरेटेड कॉलम प्लस इंडेक्स स्केल पर स्केलर JSON फील्ड फिल्टरिंग के लिए सबसे विश्वसनीय मार्ग बने रहते हैं
  • ग्रुप्ड डेटा में JSON_OBJECTAGG() डुप्लिकेट कुंजी त्रुटियों पर नजर रखें — यह ETL पाइपलाइनों में कठोर त्रुटि के रूप में उभरता है और टेस्टिंग में आसानी से छूट सकता है यदि आपका सैंपल डेटा संयोग से साफ हो
  • हमेशा EXPLAIN से इंडेक्स उपयोग की जाँच करें — ऑप्टिमाइज़र हमेशा जटिल WHERE क्लॉज़ में मल्टी-वैल्यूड इंडेक्स को नहीं चुनता, और मान लेने के बजाय पुष्टि करना उचित है

सारांश

MySQL 8.0 के JSON सुधार वास्तव में उपयोगी हैं, विशेष रूप से मल्टी-वैल्यूड इंडेक्स और JSON_VALUE() टाइप कास्टिंग के साथ। वे अच्छे स्कीमा डिज़ाइन की जगह नहीं लेते, लेकिन उन मामलों के लिए जहाँ JSON स्टोरेज उचित है या विरासत में मिला है, आपके पास अब वास्तविक टूल्स हैं काम करने के लिए बजाय सिर्फ आशा करने के कि ऑप्टिमाइज़र इसे समझ लेगा। विशेष रूप से जेनरेटेड कॉलम पैटर्न का मूल्यांकन जल्दी करना चाहिए यदि आपको पता है कि कुछ JSON फील्ड्स WHERE क्लॉज़ में नियमित रूप से उपयोग होंगे।

उपयोगी संदर्भ:

गुरुवार, 3 जुलाई 2025

MySQL विश्लेषण: AI-संचालित CLI टूल के साथ

MySQL विश्लेषण: AI-संचालित CLI टूल के साथ

स्रोत लेख (Source): https://anothermysqldba.blogspot.com/2025/07/mysql-analysis-with-ai-powered-cli-tool.html यह हिंदी अनुवाद है।

MySQL के साथ DBA के रूप में हम अक्सर Linux टर्मिनल विंडो पर काम करते हैं। हमें मुफ्त विकल्प भी पसंद हैं जब वे उपलब्ध हों। यह पोस्ट एक ऐसा दृष्टिकोण दिखाता है जो हमें अपनी टर्मिनल विंडो पर रहने और फिर भी AI-संचालित टूल का उपयोग करने की अनुमति देता है। आप अन्य प्रत्यक्ष AI प्रदाताओं का उपयोग करने के लिए अपडेट कर सकते हैं लेकिन मैंने इस उदाहरण को aimlapi.com का उपयोग करने के लिए सेट किया है क्योंकि यह सीमित उपयोग के लिए मुफ्त या अधिक परीक्षण के लिए बहुत कम लागत के साथ कई AI मॉडल आपके टर्मिनल पर लाता है।

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

समस्या

आप सैकड़ों टेबल के साथ एक legacy डेटाबेस को देख रहे हैं, जिसमें से प्रत्येक में जटिल संबंध और वर्षों पहले किए गए संदिग्ध डिज़ाइन निर्णय हैं। सामान्य प्रक्रिया में शामिल है:

  • मैनुअल स्कीमा निरीक्षण
  • क्रॉस-रेफरेंसिंग दस्तावेज (यदि यह मौजूद है)
  • कई EXPLAIN क्वेरी चलाना
  • सर्वोत्तम अभ्यास गाइड से सलाह लेना
  • सहयोगियों से दूसरी राय मांगना

इसमें समय लगता है और आप अक्सर चीजों को मिस कर देते हैं।

CLI-आधारित दृष्टिकोण

हम AI का लाभ सीधे अपनी CLI से उठा सकते हैं और कई काम कर सकते हैं। MySQL विश्लेषण में मदद करना केवल एक उदाहरण है कि यह दृष्टिकोण हमारे दैनिक डेटाबेस कार्यों के साथ कैसे काम कर सकता है। MySQL की मूल क्षमताओं को AI मॉडल के साथ जोड़कर, सभी एक साधारण कमांड-लाइन इंटरफेस के माध्यम से पहुंच योग्य, हम अपनी टर्मिनल छोड़े बिना अंतर्दृष्टि प्राप्त कर सकते हैं। AIMLAPI सीमित उपयोग के साथ 100+ AI मॉडल तक मुफ्त पहुंच प्रदान करता है, जिससे यह दृष्टिकोण सुलभ हो जाता है। भारी परीक्षण के लिए, लागत बहुत उचित रहती है।

टूल: AIMLAPI CLI

तो यहां एक bash स्क्रिप्ट है जो एक एकल इंटरफेस के माध्यम से 100+ AI मॉडल तक पहुंच प्रदान करती है:

#!/bin/bash
# 100+ AI मॉडल तक पहुंच के साथ AIMLAPI CLI टूल
# फ़ाइल: ~/.local/bin/aiml

# कॉन्फ़िगरेशन
DEFAULT_MODEL=${AIMLAPI_DEFAULT_MODEL:-"gpt-4o"}
MAX_TOKENS=${AIMLAPI_MAX_TOKENS:-2000}
TEMPERATURE=${AIMLAPI_TEMPERATURE:-0.7}
BASE_URL="https://api.aimlapi.com"
ENDPOINT="v1/chat/completions"

# आउटपुट के लिए रंग कोड
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
NC='\033[0m' # कोई रंग नहीं

# रंगीन आउटपुट प्रिंट करने के लिए फ़ंक्शन
print_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
print_success() { echo -e "${GREEN}[SUCCESS]${NC} $1"; }
print_warning() { echo -e "${YELLOW}[WARNING]${NC} $1"; }
print_error() { echo -e "${RED}[ERROR]${NC} $1"; }
print_model() { echo -e "${PURPLE}[MODEL]${NC} $1"; }

# लोकप्रिय मॉडल शॉर्टकट
declare -A MODEL_SHORTCUTS=(
    # OpenAI मॉडल
    ["gpt4"]="gpt-4o"
    ["gpt4o"]="gpt-4o"
    ["gpt4mini"]="gpt-4o-mini"
    ["o1"]="o1-preview"
    ["o3"]="openai/o3-2025-04-16"
    
    # Claude मॉडल  
    ["claude"]="claude-3-5-sonnet-20241022"
    ["claude4"]="anthropic/claude-sonnet-4"
    ["opus"]="claude-3-opus-20240229"
    ["haiku"]="claude-3-5-haiku-20241022"
    ["sonnet"]="claude-3-5-sonnet-20241022"
    
    # DeepSeek मॉडल
    ["deepseek"]="deepseek-chat"
    ["deepseek-r1"]="deepseek/deepseek-r1"
    ["reasoner"]="deepseek-reasoner"
    
    # Google मॉडल
    ["gemini"]="gemini-2.0-flash"
    ["gemini2"]="gemini-2.0-flash"
    ["gemini15"]="gemini-1.5-pro"
    
    # Meta Llama मॉडल
    ["llama"]="meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo"
    ["llama405b"]="meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo"
    
    # Qwen मॉडल
    ["qwen"]="qwen-max"
    ["qwq"]="Qwen/QwQ-32B"
    
    # Grok मॉडल
    ["grok"]="x-ai/grok-beta"
    ["grok3"]="x-ai/grok-3-beta"
    
    # विशेषीकृत मॉडल
    ["coder"]="Qwen/Qwen2.5-Coder-32B-Instruct"
)

# मॉडल शॉर्टकट को हल करने के लिए फ़ंक्शन
resolve_model() {
    local model="$1"
    if [[ -n "${MODEL_SHORTCUTS[$model]}" ]]; then
        echo "${MODEL_SHORTCUTS[$model]}"
    else
        echo "$model"
    fi
}

# उचित escaping के लिए jq का उपयोग करके JSON payload बनाने के लिए फ़ंक्शन
create_json_payload() {
    local model="$1"
    local prompt="$2"
    local system_prompt="$3"
    
    local temp_file=$(mktemp)
    echo "$prompt" > "$temp_file"
    
    if [ -n "$system_prompt" ]; then
        jq -n --arg model "$model" \
              --rawfile prompt "$temp_file" \
              --arg system "$system_prompt" \
              --argjson max_tokens "$MAX_TOKENS" \
              --argjson temperature "$TEMPERATURE" \
              '{
                model: $model,
                messages: [{role: "system", content: $system}, {role: "user", content: $prompt}],
                max_tokens: $max_tokens,
                temperature: $temperature
              }'
    else
        jq -n --arg model "$model" \
              --rawfile prompt "$temp_file" \
              --argjson max_tokens "$MAX_TOKENS" \
              --argjson temperature "$TEMPERATURE" \
              '{
                model: $model,
                messages: [{role: "user", content: $prompt}],
                max_tokens: $max_tokens,
                temperature: $temperature
              }'
    fi
    
    rm -f "$temp_file"
}

# AIMLAPI को कॉल करने के लिए फ़ंक्शन
call_aimlapi() {
    local prompt="$1"
    local model="$2"
    local system_prompt="$3"
    
    if [ -z "$AIMLAPI_API_KEY" ]; then
        print_error "AIMLAPI_API_KEY सेट नहीं है"
        return 1
    fi
    
    model=$(resolve_model "$model")
    
    local json_file=$(mktemp)
    create_json_payload "$model" "$prompt" "$system_prompt" > "$json_file"
    
    local response_file=$(mktemp)
    local http_code=$(curl -s -w "%{http_code}" -X POST "${BASE_URL}/${ENDPOINT}" \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $AIMLAPI_API_KEY" \
        --data-binary @"$json_file" \
        -o "$response_file")
    
    if [ "$http_code" -ne 200 ] && [ "$http_code" -ne 201 ]; then
        print_error "HTTP त्रुटि $http_code"
        cat "$response_file" >&2
        rm -f "$json_file" "$response_file"
        return 1
    fi
    
    local content=$(jq -r '.choices[0].message.content // empty' "$response_file" 2>/dev/null)
    
    if [ -z "$content" ]; then
        content=$(jq -r '.choices[0].text // .message.content // .content // empty' "$response_file" 2>/dev/null)
    fi
    
    if [ -z "$content" ]; then
        local error_msg=$(jq -r '.error.message // .error // empty' "$response_file" 2>/dev/null)
        if [ -n "$error_msg" ]; then
            echo "API त्रुटि: $error_msg"
        else
            echo "त्रुटि: API से प्रतिक्रिया पार्स करने में असमर्थ"
        fi
    else
        echo "$content"
    fi
    
    rm -f "$json_file" "$response_file"
}

# तर्क पार्सिंग के साथ मुख्य फ़ंक्शन
main() {
    local model="$DEFAULT_MODEL"
    local system_prompt=""
    local prompt=""
    local piped_input=""
    
    if [ -p /dev/stdin ]; then
        piped_input=$(cat)
    fi
    
    # तर्कों को पार्स करें
    while [[ $# -gt 0 ]]; do
        case $1 in
            -m|--model)
                model="$2"
                shift 2
                ;;
            -s|--system)
                system_prompt="$2"
                shift 2
                ;;
            *)
                prompt="$*"
                break
                ;;
        esac
    done
    
    # इनपुट को हैंडल करें
    if [ -n "$piped_input" ] && [ -n "$prompt" ]; then
        prompt="$prompt

यहां विश्लेषण के लिए डेटा है:
$piped_input"
    elif [ -n "$piped_input" ]; then
        prompt="कृपया इस डेटा का विश्लेषण करें:

$piped_input"
    elif [ -z "$prompt" ]; then
        echo "उपयोग: aiml [विकल्प] \"प्रॉम्प्ट\""
        echo "       कमांड | aiml [विकल्प]"
        exit 1
    fi
    
    local resolved_model=$(resolve_model "$model")
    print_info "$resolved_model से पूछताछ कर रहे हैं..."
    
    local response=$(call_aimlapi "$prompt" "$model" "$system_prompt")
    
    echo ""
    print_model "$resolved_model से प्रतिक्रिया:"
    echo "----------------------------------------"
    echo "$response" 
    echo "----------------------------------------"
}

# निर्भरताओं की जांच करें
check_dependencies() {
    command -v curl >/dev/null 2>&1 || { print_error "curl आवश्यक है लेकिन इंस्टॉल नहीं है।"; exit 1; }
    command -v jq >/dev/null 2>&1 || { print_error "jq आवश्यक है लेकिन इंस्टॉल नहीं है।"; exit 1; }
}

check_dependencies
main "$@"

यह स्क्रिप्ट claude4, gpt4, grok3, आदि जैसे सरल शॉर्टकट के माध्यम से विभिन्न AI मॉडल तक पहुंच प्रदान करती है। AIMLAPI इन सभी मॉडल के लिए सीमित उपयोग के साथ मुफ्त पहुंच प्रदान करता है, अतिरिक्त परीक्षण के लिए उचित लागत के साथ। उन DBA के लिए अच्छा है जो बजट तोड़े बिना प्रयोग करना चाहते हैं।

स्क्रिप्ट सुविधाएं

स्क्रिप्ट में व्यापक सहायता शामिल है। यहां aiml --help दिखाता है:

AIMLAPI CLI टूल - 100+ AI मॉडल तक पहुंच
==============================================
उपयोग: aiml [विकल्प] "प्रॉम्प्ट"
       कमांड | aiml [विकल्प]

मुख्य विकल्प:
  -m, --model MODEL         उपयोग करने के लिए मॉडल (डिफ़ॉल्ट: gpt-4o)
  -t, --tokens NUMBER       अधिकतम टोकन (डिफ़ॉल्ट: 2000)
  -T, --temperature FLOAT   टेम्परेचर 0.0-2.0 (डिफ़ॉल्ट: 0.7)
  -s, --system PROMPT       मॉडल व्यवहार के लिए सिस्टम प्रॉम्प्ट

इनपुट/आउटपुट विकल्प:
  -f, --file FILE           फ़ाइल से प्रॉम्प्ट पढ़ें
  -o, --output FILE         प्रतिक्रिया को फ़ाइल में सेव करें
  -r, --raw                 कच्चा आउटपुट (कोई फ़ॉर्मेटिंग/रंग नहीं)

जानकारी विकल्प:
  -l, --list               लोकप्रिय मॉडल शॉर्टकट सूची दिखाएं
  --get-models             API से सभी उपलब्ध मॉडल प्राप्त करें
  -c, --config             वर्तमान कॉन्फ़िगरेशन दिखाएं
  -v, --verbose            विस्तृत आउटपुट सक्षम करें
  -d, --debug              डिबग जानकारी दिखाएं
  -h, --help               यह सहायता दिखाएं

बुनियादी उदाहरण:
  aiml "क्वांटम कंप्यूटिंग समझाएं"
  aiml -m claude "इस कोड की समीक्षा करें"
  aiml -m deepseek-r1 "इस गणित समस्या को चरणबद्ध तरीके से हल करें"
  aiml -m grok3 "नवीनतम AI विकास क्या हैं?"
  aiml -m coder "इस Python फ़ंक्शन को अनुकूलित करें"

पाइप उदाहरण:
  ps aux | aiml "इन प्रक्रियाओं का विश्लेषण करें"
  netstat -tuln | aiml "इन नेटवर्क कनेक्शन को समझाएं"
  cat error.log | aiml -m claude "इन त्रुटियों का निदान करें"
  git diff | aiml -m coder "इन कोड परिवर्तनों की समीक्षा करें"
  df -h | aiml "डिस्क उपयोग का विश्लेषण करें और सफाई सुझाएं"

फ़ाइल संचालन:
  aiml -f prompt.txt -o response.txt
  aiml -f large_dataset.csv -m llama405b "इस डेटा का विश्लेषण करें"
  cat script.py | aiml -m coder -o review.md "कोड समीक्षा"

मॉडल श्रेणियां और शॉर्टकट:
  OpenAI:     gpt4, gpt4mini, o1, o3
  Claude:     claude, opus, haiku, sonnet, claude4
  DeepSeek:   deepseek, deepseek-r1, reasoner
  Google:     gemini, gemini2, gemma
  Meta:       llama, llama3, llama4, llama405b
  Qwen:       qwen, qwen2, qwq
  Grok:       grok, grok3, grok3mini
  Coding:     coder, codestral

उन्नत उपयोग:
  aiml -m claude -s "आप एक सुरक्षा विशेषज्ञ हैं" "इस कोड का ऑडिट करें"
  aiml -m deepseek-r1 -t 3000 "जटिल तर्क कार्य"
  aiml -v -m grok3 "विस्तृत लॉगिंग के साथ विस्तृत क्वेरी"
  aiml -d "API समस्याओं को ट्रबलशूट करने के लिए डिबग मोड"

मॉडल खोज:
  aiml -l                   # लोकप्रिय शॉर्टकट दिखाएं
  aiml --get-models         # API से सभी उपलब्ध मॉडल प्राप्त करें
  aiml --config             # वर्तमान कॉन्फ़िगरेशन दिखाएं

पर्यावरण चर:
  AIMLAPI_API_KEY          - आपकी AIMLAPI कुंजी (आवश्यक)
  AIMLAPI_DEFAULT_MODEL    - डिफ़ॉल्ट मॉडल (वैकल्पिक)
  AIMLAPI_MAX_TOKENS       - डिफ़ॉल्ट अधिकतम टोकन (वैकल्पिक)
  AIMLAPI_TEMPERATURE      - डिफ़ॉल्ट टेम्परेचर (वैकल्पिक)

प्रो टिप्स:
  • प्रोग्रामिंग कार्यों और कोड समीक्षा के लिए coder का उपयोग करें
  • जटिल तर्क और गणित समस्याओं के लिए deepseek-r1 का उपयोग करें
  • विस्तृत विश्लेषण और लंबे-रूप सामग्री के लिए claude4 का उपयोग करें
  • वर्तमान घटनाओं और रीयल-टाइम जानकारी के लिए grok3 का उपयोग करें
  • API लागत बचाने के लिए त्वरित प्रश्नों के लिए gpt4mini का उपयोग करें
  • कमांड आउटपुट को सीधे पाइप करें: command | aiml "इसका विश्लेषण करें"
  • कौन सा मॉडल उपयोग हो रहा है देखने के लिए -v का उपयोग करें
  • सभी 100+ उपलब्ध मॉडल देखने के लिए --get-models का उपयोग करें

एक सरल इंटरफेस के माध्यम से 100+ AI मॉडल तक पहुंच!

उदाहरण: City टेबल

यहां बताया गया है कि यह वास्तविक MySQL टेबल विश्लेषण के साथ कैसे काम करता है। मैं क्लासिक World डेटाबेस (https://dev.mysql.com/doc/index-other.html Example Databases से) से एक City टेबल का विश्लेषण तीन अलग-अलग AI मॉडल का उपयोग करके करूंगा।

कमांड

mysql --login-path=klarson world -e "show create table City\G" | \
aiml --model claude4 "MySQL विशेषज्ञ दृष्टिकोण का उपयोग करके इस टेबल का विश्लेषण करें"

यह कमांड:

  1. MySQL से टेबल संरचना निकालता है
  2. इसे हमारे AI टूल में पाइप करता है
  3. Claude Sonnet 4 से विश्लेषण प्राप्त करता है

परिणाम

Claude Sonnet 4 विश्लेषण

Claude 4 ने एक अच्छी तरह से संगठित विश्लेषण प्रदान किया:

ताकतें:

  • InnoDB दक्षता के लिए उचित AUTO_INCREMENT प्राथमिक कुंजी
  • referential integrity बनाए रखने वाली Foreign key बाधाएं
  • सामान्य क्वेरीज़ के लिए उपयुक्त इंडेक्सिंग रणनीति

मिली समस्याएं:

  • भंडारण अक्षमता: परिवर्तनीय-लंबाई शहर के नामों के लिए CHAR(35) का उपयोग स्थान बर्बाद करता है
  • चरित्र सेट सीमा: अंतर्राष्ट्रीय शहर के नामों के लिए latin1 charset अपर्याप्त
  • उप-इष्टतम इंडेक्सिंग: name_key इंडेक्स केवल पहले 5 वर्णों को कवर करता है

सुझाए गए सुधार:

-- Claude की सुझाई गई अनुकूलित संरचना
CREATE TABLE `City` (
  `ID` int NOT NULL AUTO_INCREMENT,
  `Name` VARCHAR(35) NOT NULL,
  `CountryCode` CHAR(3) NOT NULL,
  `District` VARCHAR(20) NOT NULL,
  `Population` int UNSIGNED NOT NULL DEFAULT '0',
  PRIMARY KEY (`ID`),
  KEY `CountryCode` (`CountryCode`),
  KEY `name_idx` (`Name`),
  KEY `country_name_idx` (`CountryCode`, `Name`),
  KEY `population_idx` (`Population`),
  CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) 
    REFERENCES `Country` (`Code`) ON DELETE RESTRICT ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4080 
  DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Grok 3 Beta विश्लेषण (व्यापक समीक्षक)

mysql --login-path=klarson world -e "show create table City\G" | \
aiml --model grok3 "MySQL विशेषज्ञ दृष्टिकोण का उपयोग करके इस टेबल का विश्लेषण करें"

Grok 3 ने एक संपूर्ण, विस्तृत विश्लेषण प्रदान किया जिसमें शामिल था:

तकनीकी गहरी जांच:

  • प्रदर्शन प्रभाव विश्लेषण: आंशिक इंडेक्स सीमा का विस्तार से मूल्यांकन
  • भंडारण इंजन लाभ: लेनदेन अखंडता के लिए InnoDB विकल्प की पुष्टि
  • डेटा प्रकार अनुकूलन: उदाहरणों के साथ विस्तृत स्थान-बचत सिफारिशें

उन्नत विचार:

  • शहर के नाम की खोज के लिए पूर्ण-पाठ इंडेक्सिंग सिफारिशें
  • विशिष्ट कमांड के साथ चरित्र सेट माइग्रेशन प्रक्रियाएं
  • बड़े डेटासेट के लिए विभाजन रणनीतियां

कार्यान्वयन दिशानिर्देश:

-- Grok का चरित्र सेट माइग्रेशन सुझाव
ALTER TABLE City CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- पूर्ण-पाठ इंडेक्स सिफारिश
ALTER TABLE City ADD FULLTEXT INDEX name_fulltext (Name);

GPT-4o विश्लेषण (व्यावहारिक सलाहकार)

mysql --login-path=klarson world -e "show create table City\G" | \
aiml --model gpt4 "MySQL विशेषज्ञ दृष्टिकोण का उपयोग करके इस टेबल का विश्लेषण करें"

GPT-4o ने व्यावहारिक, तुरंत क्रियान्वित करने योग्य सुधारों पर ध्यान केंद्रित किया:

व्यावहारिक मूल्यांकन:

  • AUTO_INCREMENT प्राथमिक कुंजी डिज़ाइन की मान्यता
  • डेटा अखंडता के लिए foreign key बाधा लाभों की पुष्टि
  • वैश्विक अनुप्रयोगों के लिए चरित्र सेट सीमाओं की पहचान

तैयार-कार्यान्वयन सुझाव:

  • तत्काल अनुकूलन के लिए विशिष्ट ALTER TABLE कमांड
  • क्वेरी पैटर्न विश्लेषण सिफारिशें
  • इंडेक्स प्रभावशीलता मूल्यांकन मानदंड

बहु-मॉडल विश्लेषण की शक्ति

इस दृष्टिकोण को मूल्यवान बनाता है तीन अलग दृष्टिकोण प्राप्त करना:

  1. Claude 4: ठोस कोड समाधानों के साथ विस्तृत, संरचित विश्लेषण प्रदान करता है
  2. Grok 3: उन्नत अनुकूलन रणनीतियों के साथ व्यापक कवरेज प्रदान करता है
  3. GPT-4o: व्यावहारिक, तुरंत क्रियान्वित करने योग्य सिफारिशें देता है

प्रत्येक मॉडल अनोखी ताकतें लाता है:

  • विभिन्न फोकल पॉइंट: भंडारण अनुकूलन बनाम प्रदर्शन बनाम रखरखाव
  • अलग गहराई स्तर: त्वरित जीत से लेकर वास्तुशिल्प सुधार तक
  • विविध विश्लेषण शैलियां: संरचित बनाम व्यापक बनाम व्यावहारिक

वर्कफ़्लो का कार्यान्वयन

सेटअप निर्देश

1. निर्भरताएं इंस्टॉल करें:

# आवश्यक टूल इंस्टॉल करें
sudo apt install curl jq mysql-client

# स्क्रिप्ट डायरेक्टरी बनाएं
mkdir -p ~/.local/bin

# स्क्रिप्ट को निष्पादन योग्य बनाएं
chmod +x ~/.local/bin/aiml

2. API पहुंच कॉन्फ़िगर करें:

# https://aimlapi.com से अपनी मुफ्त AIMLAPI कुंजी प्राप्त करें (सीमित उपयोग के साथ मुफ्त टियर)
export AIMLAPI_API_KEY="your-free-api-key-here"
echo 'export AIMLAPI_API_KEY="your-free-api-key-here"' >> ~/.bashrc

3. सेटअप का परीक्षण करें:

# कॉन्फ़िगरेशन सत्यापित करें
aiml --config

# बुनियादी कार्यक्षमता का परीक्षण करें
echo "SELECT VERSION();" | aiml "इस SQL को समझाएं"

व्यावहारिक उपयोग पैटर्न

त्वरित टेबल विश्लेषण

# एक विशिष्ट टेबल का विश्लेषण करें
mysql -e "SHOW CREATE TABLE users\G" mydb | \
aiml -m claude4 "इस MySQL टेबल संरचना का विश्लेषण करें"

विभिन्न मॉडल दृष्टिकोणों की तुलना करें

# एक ही टेबल पर कई दृष्टिकोण प्राप्त करें
TABLE_DDL=$(mysql -e "SHOW CREATE TABLE orders\G" ecommerce)

echo "$TABLE_DDL" | aiml -m claude4 "MySQL टेबल विश्लेषण"
echo "$TABLE_DDL" | aiml -m grok3 "प्रदर्शन अनुकूलन समीक्षा" 
echo "$TABLE_DDL" | aiml -m gpt4 "व्यावहारिक सुधार सुझाव"

कई टेबल का विश्लेषण करें

# डेटाबेस में सभी टेबल का त्वरित विश्लेषण
mysql -e "SHOW TABLES;" mydb | \
while read table; do
  echo "=== $table का विश्लेषण कर रहे हैं ==="
  mysql -e "SHOW CREATE TABLE $table\G" mydb | \
  aiml -m gpt4mini "इस टेबल का त्वरित मूल्यांकन"
done

इंडेक्स विश्लेषण

# इंडेक्स उपयोग और अनुकूलन की समीक्षा करें
mysql -e "SHOW INDEX FROM tablename;" database | \
aiml -m deepseek "इस MySQL टेबल के लिए इंडेक्स अनुकूलन सुझाएं"

क्वेरी प्रदर्शन विश्लेषण

# धीमी क्वेरीज़ का विश्लेषण करें
mysql -e "SHOW PROCESSLIST;" | \
aiml -m grok3 "इन MySQL प्रक्रियाओं में संभावित प्रदर्शन समस्याओं की पहचान करें"

AIMLAPI DBAs के लिए इसे क्यों संभव बनाता है

उचित लागत के साथ मुफ्त पहुंच: AIMLAPI 100+ AI मॉडल के लिए सीमित उपयोग के साथ मुफ्त पहुंच प्रदान करता है, अतिरिक्त परीक्षण के लिए बहुत उचित मूल्य निर्धारण के साथ। यह उन DBAs के लिए एकदम सही है जो महंगी सब्सक्रिप्शन के लिए प्रतिबद्ध हुए बिना प्रयोग करना चाहते हैं।

मॉडल विविधता: विभिन्न प्रदाताओं (OpenAI, Anthropic, Google, Meta, आदि) के मॉडल तक पहुंच का मतलब है कि आपको विविध दृष्टिकोण और विशेषज्ञता क्षेत्र मिलते हैं।

कोई विक्रेता लॉक-इन नहीं: आप लंबी अवधि की प्रतिबद्धताओं के बिना अपनी विशिष्ट आवश्यकताओं के लिए सबसे अच्छा काम करने वाले विभिन्न मॉडल के साथ प्रयोग कर सकते हैं।

टर्मिनल-नेटिव: आपके आरामदायक Linux वातावरण में रहता है जहां आप पहले से ही अपना MySQL काम कर रहे हैं।

मॉडल चयन गाइड

विभिन्न मॉडल MySQL विश्लेषण के विभिन्न पहलुओं में उत्कृष्ट हैं:

# विस्तृत संरचनात्मक विश्लेषण के लिए
aiml -m claude4 "व्यापक टेबल संरचना समीक्षा"

# प्रदर्शन-केंद्रित विश्लेषण के लिए  
aiml -m grok3 "प्रदर्शन अनुकूलन सिफारिशें"

# त्वरित, व्यावहारिक सुझावों के लिए
aiml -m gpt4 "तत्काल क्रियान्वित करने योग्य सुधार"

# ट्रेड-ऑफ के बारे में जटिल तर्क के लिए
aiml -m deepseek-r1 "जटिल अनुकूलन ट्रेड-ऑफ विश्लेषण"

# लागत-प्रभावी त्वरित जांच के लिए
aiml -m gpt4mini "संक्षिप्त टेबल मूल्यांकन"

MySQL से परे: अन्य CLI उदाहरण

चूंकि हम किसी भी कमांड आउटपुट को AI टूल में पाइप कर सकते हैं, यहां कुछ अन्य उपयोगी उदाहरण हैं:

सिस्टम प्रशासन

# सिस्टम प्रक्रियाओं का विश्लेषण करें
ps aux | aiml "कौन सी प्रक्रियाएं सबसे अधिक संसाधन उपयोग कर रही हैं?"

# डिस्क उपयोग की जांच करें
df -h | aiml "डिस्क उपयोग का विश्लेषण करें और सफाई सुझाएं"

# नेटवर्क कनेक्शन
netstat -tuln | aiml "इन नेटवर्क कनेक्शन को समझाएं"

# सिस्टम लॉग
tail -50 /var/log/syslog | aiml "इन लॉग में कोई चिंताजनक त्रुटियां हैं?"

फ़ाइल और डायरेक्टरी विश्लेषण

# बड़ी फ़ाइलें
find /var -size +100M | aiml "इन बड़ी फ़ाइलों को प्रकार के अनुसार व्यवस्थित करें"

# अनुमति समस्याएं
ls -la /etc/mysql/ | aiml "सुरक्षा के लिए इन फ़ाइल अनुमतियों की जांच करें"

# कॉन्फ़िगरेशन समीक्षा
cat /etc/mysql/my.cnf | aiml "इस MySQL कॉन्फ़िगरेशन की समीक्षा करें"

लॉग विश्लेषण

# Apache लॉग
tail -100 /var/log/apache2/error.log | aiml "इन वेब सर्वर त्रुटियों को सारांशित करें"

# प्रमाणीकरण लॉग
grep "Failed password" /var/log/auth.log | aiml "इन असफल लॉगिन प्रयासों का विश्लेषण करें"

मुद्दा यह है कि आप अपनी टर्मिनल छोड़े बिना त्वरित विश्लेषण प्राप्त करने के लिए लगभग कुछ भी पाइप कर सकते हैं।

कस्टम सिस्टम प्रॉम्प्ट

अपने विशिष्ट संदर्भ के लिए विश्लेषण को तैयार करें:

# ई-कॉमर्स फोकस
aiml -m claude4 -s "आप एक उच्च-ट्रैफिक ई-कॉमर्स साइट के लिए टेबल का विश्लेषण कर रहे हैं" \
"स्केलेबिलिटी के लिए इस टेबल की समीक्षा करें"

# सुरक्षा फोकस
aiml -m grok3 -s "आप एक सुरक्षा-केंद्रित डेटाबेस विश्लेषक हैं" \
"इस टेबल संरचना का सुरक्षा मूल्यांकन"

# Legacy सिस्टम फोकस
aiml -m gpt4 -s "आप एक legacy सिस्टम को आधुनिक MySQL में माइग्रेट करने में मदद कर रहे हैं" \
"इस टेबल के लिए आधुनिकीकरण सिफारिशें"

स्वचालित रिपोर्टिंग

# एक व्यापक डेटाबेस विश्लेषण रिपोर्ट तैयार करें
DB_NAME="production_db"
REPORT_FILE="analysis_$(date +%Y%m%d).md"

echo "# $DB_NAME के लिए डेटाबेस विश्लेषण रिपोर्ट" > "$REPORT_FILE"
echo "$(date) को तैयार की गई" >> "$REPORT_FILE"

for table in $(mysql -Ns -e "SHOW TABLES;" "$DB_NAME"); do
  echo "" >> "$REPORT_FILE"
  echo "## टेबल: $table" >> "$REPORT_FILE"
  
  mysql -e "SHOW CREATE TABLE $table\G" "$DB_NAME" | \
  aiml -m claude4 "इस MySQL टेबल का संक्षिप्त विश्लेषण प्रदान करें" >> "$REPORT_FILE"
done

प्रदर्शन अनुकूलन वर्कफ़्लो

# व्यापक प्रदर्शन विश्लेषण
mysql -e "SHOW CREATE TABLE heavy_table\G" db | \
aiml -m grok3 "प्रदर्शन बाधा विश्लेषण"

# इंडेक्स सुझावों के साथ फॉलो अप
mysql -e "SHOW INDEX FROM heavy_table;" db | \
aiml -m deepseek "इंडेक्स अनुकूलन रणनीति"

# कार्यान्वयन योजना प्राप्त करें
aiml -m gpt4 "इन अनुकूलन के लिए चरणबद्ध कार्यान्वयन योजना बनाएं"

इस दृष्टिकोण के वास्तविक लाभ

गति: घंटों के बजाय सेकंड में विशेषज्ञ-स्तरीय विश्लेषण प्राप्त करें
कई दृष्टिकोण: विभिन्न मॉडल विभिन्न मुद्दों को पकड़ते हैं
सीखने का उपकरण: प्रत्येक विश्लेषण आपको MySQL अनुकूलन के बारे में कुछ नया सिखाता है
लागत-प्रभावी: AIMLAPI के मुफ्त टियर और उचित मूल्य निर्धारण के लिए धन्यवाद, यह शक्तिशाली विश्लेषण सुलभ है
स्थिरता: विभिन्न टेबल और डेटाबेस में दोहराने योग्य विश्लेषण
दस्तावेज़ीकरण: रिपोर्ट तैयार करना और टीमों के साथ निष्कर्ष साझा करना आसान

सर्वोत्तम परिणामों के लिए सुझाव

  1. संरचना से शुरू करें: व्यापक विश्लेषण के लिए हमेशा SHOW CREATE TABLE से शुरू करें
  2. विशिष्ट प्रॉम्प्ट का उपयोग करें: आपका अनुरोध जितना अधिक विशिष्ट होगा, विश्लेषण उतना ही बेहतर होगा
  3. मॉडल की तुलना करें: विभिन्न मॉडल विभिन्न पहलुओं में उत्कृष्ट हैं - कई दृष्टिकोण का उपयोग करें
  4. सुझावों को सत्यापित करें: हमेशा विकास वातावरण में पहले AI सिफारिशों का परीक्षण करें
  5. दोहराएं: विशिष्ट सिफारिशों में गहराई से जाने के लिए फॉलो-अप प्रश्नों का उपयोग करें

आज ही शुरुआत करना

इस दृष्टिकोण की सुंदरता इसकी सरलता और लागत-प्रभावशीलता है। केवल कुछ कमांड के साथ, आप:

  1. https://aimlapi.com से अपनी मुफ्त AIMLAPI कुंजी प्राप्त करें (मुफ्त टियर शामिल)
  2. स्क्रिप्ट इंस्टॉल करें (5 मिनट)
  3. तुरंत अपनी MySQL टेबल का विश्लेषण शुरू करें
  4. विभिन्न मॉडल के साथ प्रयोग करके देखें कि आपकी आवश्यकताओं के लिए कौन से सबसे अच्छे काम करते हैं
  5. नियमित विश्लेषण के लिए मुफ्त टियर का उपयोग करें, केवल भारी परीक्षण के लिए भुगतान करें

Windows उपयोगकर्ता (त्वरित विकल्प)

मैं Windows व्यक्ति नहीं हूं, लेकिन यदि आपको इसे Windows पर चलाने की आवश्यकता है, तो सबसे सरल दृष्टिकोण है:

  1. WSL2 इंस्टॉल करें (Windows Subsystem for Linux)
  2. Microsoft Store से Ubuntu इंस्टॉल करें
  3. WSL2 के अंदर ऊपर के Linux सेटअप का पालन करें

यह आपको एक उचित Linux वातावरण देता है जहां स्क्रिप्ट बिल्कुल वैसे ही काम करेगी जैसे डिज़ाइन की गई है।

यह DBA विशेषज्ञता को बदलने के बारे में नहीं है - यह आपके टर्मिनल वातावरण में रहते हुए इसे बढ़ाने के बारे में है। AI तेज़ विश्लेषण प्रदान करता है और उन चीजों को पकड़ता है जिन्हें आप चूक सकते हैं, जबकि आप संदर्भ प्रदान करते हैं और अंतिम निर्णय लेते हैं।

चाहे आप एक एकल टेबल के साथ काम कर रहे हों या सैकड़ों टेबल के साथ एक जटिल डेटाबेस के साथ, यह वर्कफ़्लो आपकी आवश्यकताओं को पूरा करने के लिए स्केल करता है। और चूंकि AIMLAPI अतिरिक्त उपयोग के लिए उचित लागत के साथ मुफ्त पहुंच प्रदान करता है, आप बजट की चिंताओं के बिना अपने विशिष्ट उपयोग मामलों के लिए सही संयोजन खोजने के लिए प्रयोग कर सकते हैं।


MySQL की शक्तिशाली introspection क्षमताओं और AI विश्लेषण का संयोजन एक ऐसा वर्कफ़्लो बनाता है जो DBAs के लिए व्यावहारिक और लागत-प्रभावी दोनों है। अपने अगले डेटाबेस अनुकूलन प्रोजेक्ट पर इसे आज़माएं - आप इस बात से आश्चर्यचकित हो सकते हैं कि क्या अंतर्दृष्टि उभरती है, सभी आपके आरामदायक टर्मिनल वातावरण में रहते हुए।

मंगलवार, 15 अप्रैल 2025

होमलैब

 https://anothermysqldba.blogspot.com/2025/04/homelab.html

सिर्फ मनोरंजन के लिए...

MySQL और सामान्य डेटाबेस इंस्टैंस के परीक्षण के लिए कई विकल्प मौजूद हैं।

यह सिर्फ एक उदाहरण है कि आप कैसे  प्रोक्समॉक्स का उपयोग करके  दोहराए जाने वाले परीक्षण और पहुंच के लिए एक सरल, तेज सेटअप प्राप्त कर सकते हैं।

यह उदाहरण MySQL और अन्य किसी भी चीज़ के लिए होम लैब बनाने का एक अच्छा और सस्ता विकल्प है।

मैंने जो होमलैब वर्चुअलाइजेशन चुना वह  विस्तारित NFS स्टोरेज के लिए प्रॉक्समॉक्स  और  ओपनमीडियावॉल्ट था ( ओपनमीडियावॉल्ट  पर 100% बेचा नहीं गया  , डेबियन अकेले ही यह कर सकता था)

हार्डवेयर मैंने एक सरल और कॉम्पैक्ट सेटअप चुना:

यह वर्चुअलाइजेशन आपको ऐसा वातावरण प्रदान करता है जिसे आवश्यकतानुसार चलाया जा सकता है, बंद किया जा सकता है, या जब चाहें तब हटाया और वापस लाया जा सकता है। 

एक बार सेटअप हो जाने पर, यदि आप चाहें तो अतिरिक्त इंस्टेंस और परीक्षण के लिए प्रत्येक इंस्टेंस को क्लोन करने की भी अनुमति देता है। 

यह इन सभी के लिए एक बहुत ही सरल प्रत्यक्ष सेटअप होगा।

यदि आप चाहें तो प्रत्येक डेटा निर्देशिका या NFS के लिए ब्लॉक डिवाइस बना सकते हैं, लेकिन यह सब डेमो के लिए स्थानीय प्रत्यक्ष इंस्टॉलेशन होगा।

परीक्षण और डेमो का लक्ष्य:

  • स्थापित करना
  • निगरानी
  • वॉल्ट पासवर्ड रोटेशन

डेबियन बेस 

4GB और 4 CPU के साथ Debian 12 इंस्टेंस सेट करें।
फिर मैंने इसे एक टेम्पलेट के रूप में परिवर्तित किया ताकि मैं इससे अन्य सभी इंस्टेंस को लिंक कर सकूँ।
इससे अन्य इंस्टेंस सेट करना बहुत तेज़ हो जाता है और साथ ही शुरू करने के लिए एक ही आधार भी मिलता है।


┌──(रूट㉿debian12-सर्वर)-[~]
└─# uname -a
Linux debian12-server 6.1.0-32-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.129-1 (2025-03-06) x86_64 GNU/Linux

उपयुक्त इंस्टॉल अनज़िप
सीडी /usr/स्थानीय/src/
wget https://releases.hashicorp.com/vault/1.4.2/vault_1.4.2_linux_amd64.zip
vault_1.4.2_linux_amd64.zip अनज़िप करें
एमवी वॉल्ट /usr/bin/
सेटकैप cap_ipc_lock=+ep /usr/bin/vault
# वॉल्ट -v
वॉल्ट v1.4.2

मारियाडीबी 11 रोलिंग 

vi /etc/नेटवर्क/इंटरफेस
ऑटो ens18
iface ens18 inet स्टेटिक
    पता 192.168.3.100
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

# होस्टनाम
mariadb1.sqlhjalp.com

sudo apt-get install apt-transport-https कर्ल
सुडो mkdir -p /etc/apt/keyrings
सुडो कर्ल -ओ /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
vi /etc/apt/sources.list.d/mariadb.sources

┌──(root㉿mariadb1)-[~]
└─# बिल्ली /etc/apt/sources.list.d/mariadb.sources
# MariaDB 11 रोलिंग रिपोजिटरी सूची - 2025-04-01 15:13 UTC पर बनाई गई
# https://mariadb.org/download/
X-रेपोलिब-नाम: MariaDB
प्रकार: डेब
# deb.mariadb.org एक डायनेमिक मिरर है, अगर आपका पसंदीदा मिरर ऑफ़लाइन हो जाता है। विवरण के लिए https://mariadb.org/mirrorbits/ देखें।
# यूआरआई: https://deb.mariadb.org/11/debian
यूआरआई: https://mirror.its.dal.ca/mariadb/repo/11.rolling/debian
सुइट्स: किताबी कीड़ा
घटक: मुख्य
हस्ताक्षरित: /etc/apt/keyrings/mariadb-keyring.pgp

┌──(root㉿mariadb1)-[~]
└─# apt-get अपडेट

┌──(root㉿mariadb1)-[~]
└─# apt-get install mariadb-server -y

┌──(root㉿mariadb1)-[~]
└─# मारियाडीबी
MariaDB मॉनिटर में आपका स्वागत है। कमांड ; या \g से समाप्त होते हैं।
आपका MariaDB कनेक्शन आईडी 32 है
सर्वर संस्करण: 11.7.2-MariaDB-deb12 mariadb.org बाइनरी वितरण

कॉपीराइट (c) 2000, 2018, ओरेकल, मारियाडीबी कॉर्पोरेशन एबी और अन्य।

मदद के लिए 'help;' या '\h' टाइप करें। वर्तमान इनपुट स्टेटमेंट को साफ़ करने के लिए '\c' टाइप करें।

मारियाडीबी [(कोई नहीं)]>
मारियाडीबी [(कोई नहीं)]> बाहर निकलें
अलविदा

┌──(root㉿mariadb1)-[~]
└─# systemctl स्टॉप mariadb.service

बस स्पष्ट होने के लिए। हाँ, एक प्रॉक्समॉक्स लिंक्ड सर्वर के साथ आप पुनः आरंभ कर सकते हैं और यह आपके सभी मान और सेटअप को बनाए रखता है

┌──(root㉿mariadb1)-[~]
└─# अपटाइम
 10:27:29 1 मिनट तक, 2 उपयोगकर्ता, लोड औसत: 0.15, 0.11, 0.04

┌──(root㉿mariadb1)-[~]
└─# मारियाडीबी
MariaDB मॉनिटर में आपका स्वागत है। कमांड ; या \g से समाप्त होते हैं।
आपका MariaDB कनेक्शन आईडी 33 है
सर्वर संस्करण: 11.7.2-MariaDB-deb12 mariadb.org बाइनरी वितरण

कॉपीराइट (c) 2000, 2018, ओरेकल, मारियाडीबी कॉर्पोरेशन एबी और अन्य।

मदद के लिए 'help;' या '\h' टाइप करें। वर्तमान इनपुट स्टेटमेंट को साफ़ करने के लिए '\c' टाइप करें।

MariaDB [(none)]> स्थिति
--------------
11.7.2 से मारियाडीबी-मारियाडीबी, क्लाइंट 15.2 डेबियन-लिनक्स-ग्नू (x86_64) के लिए EditLine रैपर का उपयोग कर रहा है

कनेक्शन आईडी: 33
वर्तमान डेटाबेस:
वर्तमान उपयोगकर्ता: root@localhost
SSL: उपयोग में आने वाला सिफर TLS_AES_256_GCM_SHA384 है, प्रमाणपत्र ठीक है
वर्तमान पेजर: stdout
आउटफ़ाइल का उपयोग: ''
सीमांकक का उपयोग करना: ;
सर्वर: मारियाडीबी
सर्वर संस्करण: 11.7.2-MariaDB-deb12 mariadb.org बाइनरी वितरण
प्रोटोकॉल संस्करण: 10
कनेक्शन: UNIX सॉकेट के माध्यम से लोकलहोस्ट
सर्वर कैरेक्टरसेट: utf8mb4
डीबी कैरेक्टरसेट: utf8mb4
क्लाइंट कैरेक्टरसेट: utf8mb3
कनेक्ट कैरेक्टरसेट: utf8mb3
यूनिक्स सॉकेट: /run/mysqld/mysqld.sock
अपटाइम: 1 मिनट 45 सेकंड

थ्रेड: 1 प्रश्न: 61 धीमी क्वेरीज़: 0 ओपन: 33 खुली टेबल: 26 क्वेरीज़ प्रति सेकंड औसत: 0.580
--------------

MySQL नवाचार 

vi /etc/नेटवर्क/इंटरफेस
ऑटो ens18
iface ens18 inet स्टेटिक
    पता 192.168.3.101
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4


# apt इंस्टॉल gnupg -y
# सीडी /usr/स्थानीय/src/
# wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
# dpkg -i mysql-apt-config_0.8.33-1_all.deb

│ आप कौन सा सर्वर संस्करण प्राप्त करना चाहते हैं? │
  मायएसक्यूएल-8.0  
  mysql-innovation <-- इसे चुना गया
  mysql-8.4-lts    
  mysql-क्लस्टर-8.0   
  mysql-क्लस्टर-नवाचार    
  mysql-क्लस्टर-8.4-lts    
  कोई नहीं

 आप कौन सा MySQL उत्पाद कॉन्फ़िगर करना चाहते हैं?                                                                                                                           
 MySQL सर्वर और क्लस्टर (वर्तमान में चयनित: mysql-innovation)
 MySQL कनेक्टर (वर्तमान में चयनित: सक्षम)
 ठीक है

# apt-अपडेट प्राप्त करें
# apt-get mysql-server -y स्थापित करें

─# mysql -u रूट -p
पास वर्ड दर्ज करें:
MySQL मॉनिटर में आपका स्वागत है। कमांड्स ; या \g से समाप्त होते हैं।
आपका MySQL कनेक्शन आईडी 9 है
सर्वर संस्करण: 9.2.0 MySQL सामुदायिक सर्वर - GPL

कॉपीराइट (c) 2000, 2025, ओरेकल और/या उसके सहयोगी।

ओरेकल ओरेकल कॉर्पोरेशन और/या उसके का एक पंजीकृत ट्रेडमार्क है
अन्य नाम उनके संबंधित ट्रेडमार्क हो सकते हैं
मालिकों.

मदद के लिए 'help;' या '\h' टाइप करें। वर्तमान इनपुट स्टेटमेंट को साफ़ करने के लिए '\c' टाइप करें।

mysql> स्थिति
--------------
MySQL संस्करण 9.2.0 लिनक्स के लिए x86_64 पर (MySQL सामुदायिक सर्वर - GPL)

कनेक्शन आईडी: 9
वर्तमान डेटाबेस:
वर्तमान उपयोगकर्ता: root@localhost
SSL: उपयोग में नहीं
वर्तमान पेजर: stdout
आउटफ़ाइल का उपयोग: ''
सीमांकक का उपयोग करना: ;
सर्वर संस्करण: 9.2.0 MySQL सामुदायिक सर्वर - GPL
प्रोटोकॉल संस्करण: 10
कनेक्शन: UNIX सॉकेट के माध्यम से लोकलहोस्ट
सर्वर कैरेक्टरसेट: utf8mb4
डीबी कैरेक्टरसेट: utf8mb4
क्लाइंट कैरेक्टरसेट: utf8mb4
कनेक्ट कैरेक्टरसेट: utf8mb4
यूनिक्स सॉकेट: /var/run/mysqld/mysqld.sock
बाइनरी डेटा इस रूप में: हेक्साडेसिमल
अपटाइम: 47 सेकंड

थ्रेड: 2 प्रश्न: 6 धीमी क्वेरीज़: 0 ओपन: 119 फ्लश टेबल: 3 ओपन टेबल: 38 क्वेरीज़ प्रति सेकंड औसत: 0.127

MySQL इनोवेशन NDB क्लस्टर 

बिल्ली /etc/नेटवर्क/इंटरफेस
ऑटो ens18
iface ens18 inet स्टेटिक
    पता 192.168.3.102
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

ऑटो ens18
iface ens18 inet स्टेटिक
    पता 192.168.3.103
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

ऑटो ens18
iface ens18 inet स्टेटिक
    पता 192.168.3.103
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

# apt इंस्टॉल gnupg -y
# सीडी /usr/स्थानीय/src/
# wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
# dpkg -i mysql-apt-config_0.8.33-1_all.deb

│ आप कौन सा सर्वर संस्करण प्राप्त करना चाहते हैं?                                                                                                                            
 मायएसक्यूएल-8.0  
 mysql-नवाचार     
 mysql-8.4-lts        
 mysql-क्लस्टर-8.0       
 mysql-cluster-innovation <-- इसे चुना गया    
 mysql-क्लस्टर-8.4-lts   
 कोई नहीं

 आप कौन सा MySQL उत्पाद कॉन्फ़िगर करना चाहते हैं?                                                                             
  MySQL सर्वर और क्लस्टर (वर्तमान में चयनित: mysql-cluster-innovation)  
  MySQL कनेक्टर (वर्तमान में चयनित: सक्षम)     
  ठीक है

# apt-अपडेट प्राप्त करें
# apt-get mysql-cluster-community-server -y स्थापित करें
# apt-get install mysql-cluster-community-management-server <-- हम बाद में चुन सकते हैं कि किसका उपयोग करना है
# apt-get mysql-cluster-community-data-node -y इंस्टॉल करें

# vi /etc/mysql/conf.d/mysql.cnf

[मायएसक्यूएलडी]
# mysqld प्रक्रिया के लिए विकल्प:
ndbcluster # NDB स्टोरेज इंजन चलाएँ

[mysql_क्लस्टर]
# NDB क्लस्टर प्रक्रियाओं के लिए विकल्प:
ndb-connectstring=192.168.3.102 # प्रबंधन सर्वर का स्थान

# mkdir /var/lib/mysql-क्लस्टर
# सीडी /var/lib/mysql-क्लस्टर
# vi कॉन्फ़िगरेशन.ini
[एनडीबीडी डिफ़ॉल्ट]
# सभी डेटा नोड्स पर ndbd प्रक्रियाओं को प्रभावित करने वाले विकल्प:
NoOfReplicas=2 # खंड प्रतिकृतियों की संख्या
DataMemory=98M # डेटा संग्रहण के लिए कितनी मेमोरी आवंटित की जाए

[एनडीबी_एमजीएमडी]
# प्रबंधन प्रक्रिया विकल्प:
HostName=192.168.3.102 # प्रबंधन नोड का होस्टनाम या IP पता
DataDir=/var/lib/mysql-cluster # प्रबंधन नोड लॉग फ़ाइलों के लिए निर्देशिका

[एनडीबीडी]
# डेटा नोड "A" के लिए विकल्प:
                                # (प्रति डेटा नोड एक [ndbd] अनुभाग)
होस्टनाम=192.168.3.103 # होस्टनाम या आईपी पता
NodeId=2 # इस डेटा नोड के लिए नोड आईडी
DataDir=/var/lib/mysql/data # इस डेटा नोड की डेटा फ़ाइलों के लिए निर्देशिका

[एनडीबीडी]
# डेटा नोड "B" के लिए विकल्प:
होस्टनाम=192.168.3.104 # होस्टनाम या आईपी पता
NodeId=3 # इस डेटा नोड के लिए नोड आईडी
DataDir=/var/lib/mysql/data # इस डेटा नोड की डेटा फ़ाइलों के लिए निर्देशिका

[मायएसक्यूएलडी]
# SQL नोड विकल्प:
होस्टनाम=192.168.3.102 # होस्टनाम या आईपी पता
                                # (अतिरिक्त mysqld कनेक्शन जोड़ा जा सकता है)
                                # इस नोड के लिए विभिन्न प्रकार से निर्दिष्ट
                                # प्रयोजन जैसे ndb_restore चलाना)


┌──(रूट㉿ndb1)-[/var/lib/mysql-क्लस्टर]
└─# ndb_mgmd --initial -f /var/lib/mysql-cluster/config.ini
MySQL क्लस्टर प्रबंधन सर्वर mysql-9.2.0 ndb-9.2.0
चेतावनी: जब mgmd को -f या config-file से प्रारंभ किया जाता है तो --ndb-connectstring को नजरअंदाज कर दिया जाता है।

┌──(रूट㉿ndb2)-[/var/lib/mysql-क्लस्टर]
└─#एनडीबीडी
2025-04-01 11:53:11 [ndbd] जानकारी -- एंजेल '192.168.3.102:1186' से कनेक्ट हो गया
2025-04-01 11:53:12 [ndbd] जानकारी -- एन्जेल को नोडआईडी आवंटित किया गया: 2

┌──(रूट㉿ndb3)-[/var/lib/mysql-क्लस्टर]
└─#एनडीबीडी
2025-04-01 11:53:19 [ndbd] जानकारी -- एंजेल '192.168.3.102:1186' से कनेक्ट हो गया
2025-04-01 11:53:20 [ndbd] जानकारी -- एन्जेल को नोडआईडी आवंटित किया गया: 3


┌──(रूट㉿ndb1)-[/var/lib/mysql-क्लस्टर]
└─# एनडीबी_एमजीएम
-- एनडीबी क्लस्टर -- प्रबंधन क्लाइंट --
ndb_mgm> दिखाएँ
192.168.3.102 पोर्ट 1186 पर प्रबंधन सर्वर से कनेक्ट किया गया (क्लियरटेक्स्ट का उपयोग करके)
क्लस्टर कॉन्फ़िगरेशन
---------------------
[ndbd(NDB)] 2 नोड
id=2 @192.168.3.103 (mysql-9.2.0 ndb-9.2.0, नोडग्रुप: 0, *)
id=3 @192.168.3.104 (mysql-9.2.0 ndb-9.2.0, नोडग्रुप: 0)

[ndb_mgmd(एमजीएम)] 1 नोड
आईडी=1 @192.168.3.102 (mysql-9.2.0 ndb-9.2.0)

[mysqld(API)] 1 नोड
id=4 (कनेक्ट नहीं है, 192.168.3.102 से कनेक्ट स्वीकार कर रहा है)

┌──(रूट㉿ndb1)-[/var/lib/mysql-क्लस्टर]
└─# mysql -u root -p -e "select @@hostname"
पास वर्ड दर्ज करें:
+-------------------+
| @@होस्टनाम |
+-------------------+
| ndb1.sqlhjalp.com |
+-------------------+

┌──(रूट㉿ndb2)-[/var/lib/mysql-क्लस्टर]
└─# mysql -u root -p -e "select @@hostname"
पास वर्ड दर्ज करें:
+-------------------+
| @@होस्टनाम |
+-------------------+
| ndb2.sqlhjalp.com |
+-------------------+

┌──(रूट㉿ndb3)-[/var/lib/mysql-क्लस्टर]
└─# mysql -u root -p -e "select @@hostname"
पास वर्ड दर्ज करें:
+-------------------+
| @@होस्टनाम |
+-------------------+
| ndb3.sqlhjalp.com |
+-------------------+

पेरकोना सर्वर 

# बिल्ली /etc/नेटवर्क/इंटरफेस
 
ऑटो ens18
iface ens18 inet स्टेटिक
    पता 192.168.3.105
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

# apt इंस्टॉल कर्ल gnupg gnupg2 lsb-release -y
# सीडी /usr/स्थानीय/src/
# कर्ल -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb
# dpkg -i percona-release_latest.generic_all.deb
# percona-release केवल सक्षम ps-84-lts रिलीज़
# percona-release उपकरण रिलीज़ सक्षम करें
# apt इंस्टॉल percona-server-server

┌──(रूट㉿ps1)-[/usr/local/src]
└─# ps -ef |grep mysql
MySQL 5832 1 0 11:58 ? 00:00:03 /usr/sbin/mysqld
रूट 5924 501 0 12:04 अंक/1 00:00:00 grep --color=ऑटो mysql

┌──(रूट㉿ps1)-[/usr/local/src]
└─# mysql -u रूट -p
पास वर्ड दर्ज करें:
MySQL मॉनिटर में आपका स्वागत है। कमांड्स ; या \g से समाप्त होते हैं।
आपका MySQL कनेक्शन आईडी 9 है
सर्वर संस्करण: 8.4.4-4 पेरकोना सर्वर (GPL), रिलीज़ '4', संशोधन '844fde07'

कॉपीराइट (c) 2009-2025 पेरकोना एलएलसी और/या इसके सहयोगी
कॉपीराइट (c) 2000, 2025, ओरेकल और/या उसके सहयोगी।

ओरेकल ओरेकल कॉर्पोरेशन और/या उसके का एक पंजीकृत ट्रेडमार्क है
अन्य नाम उनके संबंधित ट्रेडमार्क हो सकते हैं
मालिकों.

मदद के लिए 'help;' या '\h' टाइप करें। वर्तमान इनपुट स्टेटमेंट को साफ़ करने के लिए '\c' टाइप करें।

पेरकोना क्लस्टर 

# बिल्ली /etc/नेटवर्क/इंटरफेस
iface ens18 inet स्टेटिक
    पता 192.168.3.106
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

iface ens18 inet स्टेटिक
    पता 192.168.3.106
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

iface ens18 inet स्टेटिक
    पता 192.168.3.106
    नेटमास्क 255.255.255.0
    गेटवे 192.168.3.1
    डीएनएस-नेमसर्वर 8.8.8.8 8.8.4.4

# apt इंस्टॉल कर्ल gnupg gnupg2 lsb-release -y
# सीडी /usr/स्थानीय/src/
# कर्ल -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb
# dpkg -i percona-release_latest.generic_all.deb
# उपयुक्त अद्यतन
# percona-रिलीज़ सेटअप pxc80
# apt install -y percona-xtradb-क्लस्टर

 
बिल्ली /etc/my.cnf
[ग्राहक]
सॉकेट=/var/run/mysqld/mysqld.sock

[एक्सट्राबैकअप]
खुली-फ़ाइलें-सीमा = 1000000

[मायएसक्यूएलडी]
सर्वर-आईडी=1
डेटा निर्देशिका = / var / lib / mysql
सॉकेट=/var/run/mysqld/mysqld.sock
लॉग-त्रुटि=/var/log/mysql/error.log
pid-file=/var/run/mysqld/mysqld.pid
सुरक्षित-लॉग-पथ=/var/lib/mysql-फ़ाइलें/
# बाइनरी लॉग समाप्ति अवधि 604800 सेकंड है, जो 7 दिनों के बराबर है
binlog_expire_logs_seconds=604800

यूजरस्टेट = 1

 └─# cat /etc/my.cnf | grep एन्क्रिप्ट
pxc-एन्क्रिप्ट-क्लस्टर-ट्रैफ़िक = बंद
 
┌──(रूट㉿pxc1)-[/]
└─# cat /etc/my.cnf | grep पता
wsrep_cluster_address = gcomm://192.168.3.106,192.168.3.107,192.168.3.108
# नोड आईपी पता
wsrep_node_address=192.168.3.106

┌──(रूट㉿pxc1)-[/etc/mysql/conf.d]
└─# systemctl प्रारंभ mysql@bootstrap

mysql> 'wsrep_c%' जैसी स्थिति दिखाएं;
+--------------------------------+--------------------------------------+
| चर_नाम | मान |
+--------------------------------+--------------------------------------+
| wsrep_cert_deps_distance | 0 |
| wsrep_commit_oooe | 0 |
| wsrep_commit_oool | 0 |
| wsrep_commit_window | 0 |
| wsrep_cert_index_size | 0 |
| wsrep_cert_bucket_count | 1 |
| wsrep_causal_reads | 0 |
| wsrep_cert_interval | 0 |
| wsrep_cluster_weight | 1 |
| wsrep_क्लस्टर_क्षमताएं | |
| wsrep_cluster_conf_id | 1 |
| wsrep_cluster_size | 1 |
| wsrep_cluster_state_uuid | 71a6ebf4-0f20-11f0-b4eb-0a0f463a7185 |
| wsrep_cluster_status | प्राथमिक |
| wsrep_connected | चालू |
+--------------------------------+--------------------------------------+
सेट में 15 पंक्तियाँ (0.00 सेकंड)

┌──(रूट㉿pxc2)-[/etc]
└─# cat /etc/my.cnf | grep पता
wsrep_cluster_address = gcomm://192.168.3.106,192.168.3.107,192.168.3.108
# नोड आईपी पता
wsrep_node_address=192.168.3.107

┌──(root㉿pxc2)-[/var/lib/mysql]
└─# आरएम-आरएफ *

┌──(root㉿pxc2)-[/var/lib/mysql]
└─# एलएस -tla
कुल 8
drwxr-x--- 2 mysql mysql 4096 अप्रैल 1 13:36 .
drwxr-xr-x 26 रूट रूट 4096 अप्रैल 1 12:34 ..

┌──(root㉿pxc2)-[/var/lib/mysql]
└─# systemctl mysql प्रारंभ करें

┌──(रूट㉿pxc2)-[/etc]
└─# cat /etc/my.cnf | grep पता
wsrep_cluster_address = gcomm://192.168.3.106,192.168.3.107,192.168.3.108
# नोड आईपी पता
wsrep_node_address=192.168.3.107
 ┌──(root㉿pxc3)-[/var/lib/mysql]
└─# आरएम-आरएफ *

┌──(root㉿pxc3)-[/var/lib/mysql]
└─# systemctl mysql प्रारंभ करें


mysql> 'wsrep_c%' जैसी स्थिति दिखाएं;
+--------------------------------+--------------------------------------+
| चर_नाम | मान |
+--------------------------------+--------------------------------------+
| wsrep_cert_deps_distance | 0 |
| wsrep_commit_oooe | 0 |
| wsrep_commit_oool | 0 |
| wsrep_commit_window | 0 |
| wsrep_cert_index_size | 0 |
| wsrep_cert_bucket_count | 1 |
| wsrep_causal_reads | 0 |
| wsrep_cert_interval | 0 |
| wsrep_cluster_weight | 3 |
| wsrep_क्लस्टर_क्षमताएं | |
| wsrep_cluster_conf_id | 3 |
| wsrep_cluster_size | 3 |
| wsrep_cluster_state_uuid | 71a6ebf4-0f20-11f0-b4eb-0a0f463a7185 |
| wsrep_cluster_status | प्राथमिक |
| wsrep_connected | चालू |
+--------------------------------+--------------------------------------+
सेट में 15 पंक्तियाँ (0.00 सेकंड)

MySQL एक्सपोर्टर्स और प्रोमेथियस सेटअप करें 

प्रत्येक मशीन के लिए...

apt install -y प्रोमेथियस-mysqld-एक्सपोर्टर
 
CREATE USER IF NOT EXISTS 'prometheus'@'localhost' IDENTIFIED BY '<PASSWORDHERE>'; 
mysql> show grants for 'prometheus'@'localhost'; +------------------------------------------------------------------------------------------------+ | prometheus@localhost के लिए अनुदान | +------------------------------------------------------------------------------------------------+ | `prometheus`@`localhost` को *.* पर चयन, प्रक्रिया, प्रतिकृति क्लाइंट प्रदान करें | +------------------------------------------------------------------------------------------------+ सेट में 1 पंक्ति (0.00 सेकंड) ┌──(रूट㉿pxc1)-[~] └─# ls -ltr /etc/mysql/debian.cnf -rw-r--r-- 1 रूट रूट 50 अप्रैल 1 16:52 /etc/mysql/debian.cnf # vi /etc/default/prometheus-mysqld-exporter systemctl पुनः प्रारंभ prometheus-mysqld-exporter.service # systemctl पुनः प्रारंभ prometheus-mysqld-exporter.service

प्रोमेथियस सर्वर 

रूट@प्रोमेथियस:/etc/प्रोमेथियस# vi प्रोमेथियस.yml


  - नौकरी का नाम: mysqld-एक्सपोर्टर
    स्थैतिक_कॉन्फ़िगरेशन:
      - लक्ष्य:
          - 'mysql1.sqlhjalp.com:9104'
          - 'mariadb1.sqlhjarp.com:9104'
          - 'ps1.sqlhjalp.com:9104'
          - 'pxc1.sqlhjalp.com:9104'
          - 'pxc2.sqlhjalp.com:9104'
          - 'pxc3.sqlhjalp.com:9104'
          - 'ndb1.sqlhjalp.com:9104'
          - 'ndb2.sqlhjalp.com:9104'
          - 'ndb3.sqlhjalp.com:9104'
        लेबल:
          देश: अमेरिका
          db_env: 'होम'
          वातावरण: "डेमो"
          लिनक्स: डेबियन
          नोड्यूज़: सर्वर


mysql_up{पर्यावरण="डेमो"}

तत्व मान
mysql_up{country="US",db_env="home",environment="demo",instance="mariadb1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="mysql1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="ndb1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="ndb2.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="ndb3.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="ps1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="pxc1.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="pxc2.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1
mysql_up{country="US",db_env="home",environment="demo",instance="pxc3.sqlhjalp.com:9104",job="mysqld-exporter",linux="debian",nodeuse="server"} 1

वॉल्ट खाता सेटअप 

mysql> यदि मौजूद नहीं है तो रोल बनाएं vaultaccess;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `vaultaccess`@`%` WITH GRANT OPTION;
 
उपयोगकर्ता `vaultadmin`@`%` बनाएं जिसे '<PASSWORDHERE>' द्वारा पहचाना गया है डिफ़ॉल्ट भूमिका `vaultaccess`@`%` कोई पासवर्ड आवश्यक नहीं है समाप्ति डिफ़ॉल्ट खाता पासवर्ड अनलॉक करें इतिहास डिफ़ॉल्ट पासवर्ड पुनः उपयोग अंतराल डिफ़ॉल्ट पासवर्ड वर्तमान डिफ़ॉल्ट आवश्यक है;
mysql> vaultadmin के लिए अनुदान दिखाएँ;

यदि READONLY मौजूद नहीं है तो भूमिका बनाएं;
`READONLY`@`%` को चयन, निष्पादन प्रदान करें;

मारियाडीबी

MariaDB [(none)]> CREATE USER `vaultadmin`@`%` IDENTIFIED BY '<PASSWORDHERE>'; 
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO `vaultadmin`@`%` WITH GRANT OPTION;

वॉल्ट डेटाबेस इंजन - प्रति DB इंस्टेंस दोहराया गया 

वॉल्ट डेटाबेस/कॉन्फ़िगरेशन/MYSQL प्लगइन_नाम=mysql-डेटाबेस-प्लगइन कनेक्शन_url="{{उपयोगकर्ता नाम}}:{{पासवर्ड}}@tcp(mysql1.sqlhjalp.com:3306)/" अनुमत_भूमिकाएं="मेरी-भूमिका" उपयोगकर्ता नाम="वॉल्टएडमिन" पासवर्ड="<पासवर्डयहां>"
वॉल्ट डेटाबेस/कॉन्फ़िगरेशन/MYSQL पढ़ें मुख्य मूल्य --- ----- अनुमत_भूमिकाएँ [] कनेक्शन_विवरण मानचित्र[बैकएंड:डेटाबेस कनेक्शन_url:{{उपयोगकर्ता नाम}}:{{पासवर्ड}}@tcp(mysql1.sqlhjalp.com:3306)/ अधिकतम_कनेक्शन_लाइफटाइम:0s अधिकतम_निष्क्रिय_कनेक्शन:0 अधिकतम_खुले_कनेक्शन:4 उपयोगकर्ता नाम:vaultadmin] स्वचालित रोटेशन अक्षम करें असत्य पासवर्ड_नीति n/a प्लगइन_नाम mysql-डेटाबेस-प्लगइन प्लगइन_संस्करण n/a रूट_क्रेडेंशियल्स_रोटेट_स्टेटमेंट्स [] रोटेशन_पीरियड 0s रोटेशन_शेड्यूल n/a रोटेशन_विंडो 0 skip_static_role_import_rotation गलत सत्यापित_कनेक्शन सत्य वॉल्ट डेटाबेस/भूमिकाएँ/DEMOREADONLY पढ़ें मुख्य मूल्य --- ----- क्रिएशन_स्टेटमेंट्स [CREATE USER '{{name}}'@'%' IDENTIFIED BY '{{password}}'; *.* पर '{{name}}'@'%';] को चयन का अधिकार प्रदान करें क्रेडेंशियल_टाइप पासवर्ड db_name MYSQL डिफ़ॉल्ट_टीटीएल 1 घंटा अधिकतम_टीटीएल 24 घंटे नवीकरण_विवरण [] निरस्तीकरण_कथन [यदि '{{name}}'@'%' मौजूद है तो उपयोगकर्ता को हटा दें;] रोलबैक_स्टेटमेंट्स []

वॉल्ट गतिशील उपयोगकर्ता उदाहरण 

वॉल्ट डेटाबेस/क्रेड्स/DEMOREADONLY पढ़ें
मुख्य मूल्य
--- -----
lease_id डेटाबेस/creds/DEMOREADONLY/1SACMdnTGXseMewbA6ek1T42
लीज़_अवधि 1 घंटा
lease_renewable सच
पासवर्ड -piWu8YfOFxUkAqR347a
उपयोगकर्ता नाम v-userpass-k-DEMOREADON-HFRYaNGE


mysql> 'v-userpass-k-DEMOREADON-HFRYaNGE'@'%' के लिए अनुदान दिखाएँ;
+----------------------------------------------------------------------+
| v-userpass-k-DEMOREADON-HFRYaNGE@% के लिए अनुदान |
+----------------------------------------------------------------------+
| `v-userpass-k-DEMOREADON-HFRYaNGE`@`%` पर चयन का अधिकार प्रदान करें |
+----------------------------------------------------------------------+
सेट में 1 पंक्ति (0.00 सेकंड)

इसके अलावा..... 

पोस्टग्रेएसक्यूएल

https://docs.ultr.com/how-to-install-postgresql-on-debian-12

# apt install -y postgresql-common
# /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
# उपयुक्त अद्यतन
# apt-cache नीति postgresql
# apt इंस्टॉल postgresql -y
# systemctl प्रारंभ postgresql
# systemctl स्थिति postgresql
# sudo -u पोस्टग्रेज psqlsudo -u पोस्टग्रेज psql
# postgres=# एन्क्रिप्टेड पासवर्ड '<पासवर्ड>' के साथ पोस्टग्रेज की भूमिका बदलें;
भूमिका बदलें
#

ओरेकल डाटाबेस XE 


wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm
wget https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm

# yum इंस्टॉल ./oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm ./oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm

# /etc/init.d/oracle-xe-21c कॉन्फ़िगर करें

$ निर्यात ORACLE_SID=XE
$ निर्यात ORAENV_ASK=NO
$ . /opt/oracle/product/21c/dbhomeXE/bin/oraenv

ORACLE_HOME = [] ? /opt/oracle/product/21c/dbhomeXE
Oracle आधार को /opt/oracle पर सेट किया गया है


[रूट@लोकलहोस्ट ~]# इको ​​$ORACLE_HOME
/opt/oracle/product/21c/dbhomeXE
[रूट@लोकलहोस्ट ~]# सीडी $ORACLE_HOME
[रूट@लोकलहोस्ट dbhomeXE]# pwd
/opt/oracle/product/21c/dbhomeXE

[रूट@लोकलहोस्ट dbhomeXE]# सीडी बिन

[रूट@लोकलहोस्ट बिन]# sqlplus /nolog

SQL*Plus: रिलीज़ 21.0.0.0.0 - उत्पादन गुरुवार अप्रैल 3 10:35:15 2025 पर
संस्करण 21.3.0.0.0

कॉपीराइट (c) 1982, 2021, Oracle. सभी अधिकार सुरक्षित।

एसक्यूएल>

SQL> कनेक्ट SYS AS SYSDBA
पास वर्ड दर्ज करें:
जुड़े हुए।
एसक्यूएल>

SQL> सेट लाइनसाइज़ 1500
SQL> DBA_USERS से उपयोगकर्ता नाम, account_status का चयन करें;

उपयोगकर्ता नाम खाता_स्थिति
------------------------------------------------------------------------------------------------------------------------------------------------------------------
सिस्टम खुला
सिस्टम खुला
XS$NULL लॉक किया गया
OJVMSYS लॉक किया गया
LBACSYS लॉक
आउटलाइन लॉक
DBSNMP लॉक किया गया
APPQOSSYS लॉक किया गया
DBSFWUSER लॉक किया गया
GGSYS लॉक किया गया
अनाम लॉक किया गया
 
एसक्यूएल> छोड़ें
Oracle Database 21c Express Edition रिलीज़ 21.0.0.0.0 - प्रोडक्शन से डिस्कनेक्ट किया गया
संस्करण 21.3.0.0.0

एसक्यूएलसर्वर 

# कर्ल -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
# yum इंस्टॉल -y mssql-सर्वर
# /opt/mssql/bin/mssql-conf सेटअप
# systemctl स्थिति mssql-सर्वर

कर्ल https://packages.microsoft.com/config/rhel/8/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo

# yum इंस्टॉल -y mssql-tools18 unixODBC-devel

#यम चेक-अपडेट
# yum अपडेट mssql-tools18

इको 'एक्सपोर्ट PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
स्रोत ~/.bash_profile

# /opt/mssql/bin/mssql-conf सेट-sa-पासवर्ड
SQL सर्वर सिस्टम व्यवस्थापक पासवर्ड दर्ज करें:
SQL सर्वर सिस्टम व्यवस्थापक पासवर्ड की पुष्टि करें:
SQL सर्वर कॉन्फ़िगर किया जा रहा है...

# sqlcmd -S लोकलहोस्ट -नहीं -U sa

# sqlcmd -S लोकलहोस्ट -नहीं -U sa
पासवर्ड:
1> डेटाबेस टेस्टडीबी बनाएं;
2> sys.databases से नाम का चयन करें;
3> जाओ
नाम
--------------------------------------------------------------------------------------------------------------------------------
मालिक
टेम्पडीबी
नमूना
एमएसडीबी
टेस्टडीबी

(5 पंक्तियाँ प्रभावित)


टेस्टडीबी का उपयोग करें;

dbo.Inventory टेबल बनाएं
(
    आईडी INT, नाम NVARCHAR (50), मात्रा INT, प्राथमिक कुंजी (आईडी)
);
भगवान

INSERT INTO dbo.Inventory VALUES (1, 'केला', 150);
INSERT INTO dbo.Inventory VALUES (2, 'नारंगी', 154);

जाना


SELECT * FROM dbo.Inventory जहां मात्रा > 152;
जाना

1> dbo.Inventory से * का चयन करें;
2> जाओ
आईडी नाम मात्रा
----------- -------------------------------------------------- --------
          1 केला 150
          2 नारंगी 154

मोंगोदब - पेरकोना

https://docs.percona.com/percona-server-for-mongodb/8.0/install/apt.html

# apt इंस्टॉल -y gnupg2 gnupg कर्ल
# wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
# dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
# percona-release --help | grep psmdb
psmdb36 psmdb40 psmdb42 psmdb44 psmdb60 psmdb50 psmdb70 psmdb80 psmdb40
psmdb60pro psmdb70प्रो
psmdb-70-प्रो psmdb-60-प्रो
psmdb-36 psmdb-40 psmdb-42 psmdb-44 psmdb-60 psmdb-50 psmdb-70 psmdb-80 psmdb40
psmdb-60-प्रो psmdb-70-प्रो
psmdb-70-प्रो psmdb-60-प्रो

# percona-release psmdb-80 रिलीज़ सक्षम करें
# उपयुक्त अद्यतन
# apt percona-server-mongodb इंस्टॉल करें
# apt-cache मैडिसन percona-server-mongodb
# ls -ltr /etc/mongod.conf
-rw-r--r-- 1 रूट रूट 1403 फरवरी 11 23:56 /etc/mongod.conf

# vi /etc/systemd/system/enable-transparent-huge-pages.service
# बिल्ली /etc/systemd/system/enable-transparent-huge-pages.service
[इकाई]
विवरण=पारदर्शी विशाल पृष्ठ (THP) सक्षम करें
डिफ़ॉल्ट निर्भरताएँ=नहीं
बाद=sysinit.target स्थानीय-fs.target
पहले=mongod.service

[सेवा]
प्रकार=वनशॉट
ExecStart=/bin/sh -c 'echo हमेशा | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo defer+madvise | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null && echo 0 | tee /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none > /dev/null && echo 1 | tee /proc/sys/vm/overcommit_memory > /dev/null'

[स्थापित करना]
वांटेडबाय=बेसिक.टारगेट

# systemctl डेमन-रीलोड
# systemctl प्रारंभ सक्षम-पारदर्शी-विशाल-पृष्ठ
# cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defrag && cat /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none && cat /proc/sys/vm/overcommit_memory
[हमेशा] मैडवाइज़ कभी नहीं
हमेशा टालना [आस्थगित+विचार करना] कभी नहीं टालना
0
1

# systemctl सक्षम सक्षम-पारदर्शी-विशाल-पृष्ठ
# ls -lr /var/lib/mongodb/
कुल 0


# systemctl प्रारंभ mongod
# systemctl स्थिति mongod
# मोंगोश
वर्तमान मोंगोश लॉग आईडी: 67ed4eb0cd874b942d98ebcf
इससे कनेक्ट हो रहा है: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.3.2
MongoNetworkError: कनेक्ट ECONNREFUSED 127.0.0.1:27017

मोंगोडीबी

https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-debian/

 
# apt-get gnupg कर्ल स्थापित करें
# कर्ल -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
   सुडो gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
  --डियरमोर
# इको ​​"डेब [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" | सुडो टी /etc/apt/sources.list.d/mongodb-org-8.0.list
# apt-अपडेट प्राप्त करें
# apt-get install -y mongodb-org
# systemctl डेमन-रीलोड
# ulimit -c असीमित
# यूलिमिट -एन 64000
# ulimit -f असीमित
# ulimit -t असीमित
# ulimit -l असीमित
# ulimit -m असीमित
# यूलिमिट -u 64000
# यूलिमिट -ए
वास्तविक समय गैर-अवरुद्ध समय (माइक्रोसेकंड, -R) असीमित
कोर फ़ाइल आकार (ब्लॉक, -c) असीमित
डेटा सेग आकार (kbytes, -d) असीमित
शेड्यूलिंग प्राथमिकता (-e) 0
फ़ाइल आकार (ब्लॉक, -f) असीमित
लंबित सिग्नल (-i) 15471
अधिकतम लॉक मेमोरी (kbytes, -l) असीमित
अधिकतम मेमोरी आकार (kbytes, -m) असीमित
खुली फ़ाइलें (-n) 64000
पाइप आकार (512 बाइट्स, -p) 8
POSIX संदेश कतारें (बाइट्स, -q) 819200
वास्तविक समय प्राथमिकता (-r) 0
स्टैक आकार (kbytes, -s) 8192
सीपीयू समय (सेकंड, -t) असीमित
अधिकतम उपयोगकर्ता प्रक्रियाएँ (-u) 64000
वर्चुअल मेमोरी (kbytes, -v) असीमित
फ़ाइल लॉक (-x) असीमित

# systemctl प्रारंभ mongod

# wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
# dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
# percona-release --help | grep psmdb
psmdb36 psmdb40 psmdb42 psmdb44 psmdb60 psmdb50 psmdb70 psmdb80 psmdb40
psmdb60pro psmdb70प्रो
psmdb-70-प्रो psmdb-60-प्रो
psmdb-36 psmdb-40 psmdb-42 psmdb-44 psmdb-60 psmdb-50 psmdb-70 psmdb-80 psmdb40
psmdb-60-प्रो psmdb-70-प्रो
psmdb-70-प्रो psmdb-60-प्रो

# percona-release psmdb-80 रिलीज़ सक्षम करें
# उपयुक्त अद्यतन
# apt percona-server-mongodb इंस्टॉल करें
# apt-cache मैडिसन percona-server-mongodb
# ls -ltr /etc/mongod.conf
-rw-r--r-- 1 रूट रूट 1403 फरवरी 11 23:56 /etc/mongod.conf

# vi /etc/systemd/system/enable-transparent-huge-pages.service
# बिल्ली /etc/systemd/system/enable-transparent-huge-pages.service
[इकाई]
विवरण=पारदर्शी विशाल पृष्ठ (THP) सक्षम करें
डिफ़ॉल्ट निर्भरताएँ=नहीं
बाद=sysinit.target स्थानीय-fs.target
पहले=mongod.service

[सेवा]
प्रकार=वनशॉट
ExecStart=/bin/sh -c 'echo हमेशा | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo defer+madvise | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null && echo 0 | tee /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none > /dev/null && echo 1 | tee /proc/sys/vm/overcommit_memory > /dev/null'

[स्थापित करना]
वांटेडबाय=बेसिक.टारगेट

# systemctl डेमन-रीलोड
# systemctl प्रारंभ सक्षम-पारदर्शी-विशाल-पृष्ठ
# cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defrag && cat /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none && cat /proc/sys/vm/overcommit_memory
[हमेशा] मैडवाइज़ कभी नहीं
हमेशा टालना [आस्थगित+विचार करना] कभी नहीं टालना
0
1

# systemctl सक्षम सक्षम-पारदर्शी-विशाल-पृष्ठ
# ls -lr /var/lib/mongodb/
कुल 0


# systemctl प्रारंभ mongod
# systemctl स्थिति mongod
# मोंगोश
वर्तमान मोंगोश लॉग आईडी: 67ed4eb0cd874b942d98ebcf
इससे कनेक्ट हो रहा है: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.3.2
MongoNetworkError: कनेक्ट ECONNREFUSED 127.0.0.1:27017


कैसेंड्रा

https://docs.ultr.com/how-to-install-apache-cassandra-on-debian-12

# उपयुक्त अद्यतन
# बिल्ली /etc/apt/source.list
देब https://deb.debian.org/debian बुकवर्म मुख्य गैर-मुक्त-फर्मवेयर
deb http://deb.debian.org/debian bookworm-updates मुख्य
देब http://deb.debian.org/debian-security बुकवर्म-सिक्योरिटी मुख्य
deb http://deb.debian.org/debian अस्थिर मुख्य गैर-मुक्त योगदान

# उपयुक्त अद्यतन
# apt इंस्टॉल कर्ल
# apt openjdk-17-jdk इंस्टॉल करें
# जावा --संस्करण
openjdk 17.0.14 2025-01-21
OpenJDK रनटाइम एनवायरनमेंट (बिल्ड 17.0.14+7-Debian-1deb12u1)
OpenJDK 64-बिट सर्वर VM (बिल्ड 17.0.14+7-Debian-1deb12u1, मिश्रित मोड, साझाकरण)

# इको ​​"डेब [signed-by=/etc/apt/keyrings/apache-cassandra.asc] https://debian.cassandra.apache.org 41x मुख्य" | सुडो टी -a /etc/apt/sources.list.d/cassandra.sources.list
# कर्ल -o /etc/apt/keyrings/apache-cassandra.asc https://downloads.apache.org/cassandra/KEYS
# उपयुक्त अद्यतन
# apt इंस्टॉल कैसंड्रा

# ls -lr /etc/cassandra/cassandra.yaml
-rw-r--r-- 1 रूट रूट 91468 जनवरी 27 07:28 /etc/cassandra/cassandra.yaml

# vi /etc/cassandra/cassandra.yaml
# systemctl कैसंड्रा पुनः प्रारंभ करें

# ls -lr /var/log/कैसेंड्रा/
कुल 0

# systemctl स्थिति कैसंड्रा
# नोडटूल स्थिति
nodetool: '127.0.0.1:7199' से कनेक्ट करने में विफल - ConnectException: 'कनेक्शन अस्वीकृत'.

# cqlsh -u कैसंड्रा -p कैसंड्रा

चेतावनी: कमांड लाइन इंटरफ़ेस पर पासवर्ड का उपयोग असुरक्षित हो सकता है।
अनुशंसा: पासवर्ड सुरक्षित रूप से प्रदान करने के लिए क्रेडेंशियल फ़ाइल का उपयोग करें।

कनेक्शन त्रुटि: ('किसी भी सर्वर से कनेक्ट करने में असमर्थ', {'127.0.0.1:9042': ConnectionRefusedError(111, "[('127.0.0.1', 9042)] से कनेक्ट करने का प्रयास किया। अंतिम त्रुटि: कनेक्शन अस्वीकृत")})