कनेक्शन पूलिंग और लेन-देन
पूलिंग से डेटाबेस कनेक्शन कुशलतापूर्वक प्रबंधित करें और next.jdbc में लेन-देन का उपयोग करके डेटा की अखंडता सुनिश्चित करें।
कनेक्शन पूलिंग और लेन-देन, CoddyKit पर Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Connection Pooling क्यों
हर query के लिए नया database connection खोलना धीमा और संसाधन-बहुल होता है। एक connection pool पुनः उपयोग योग्य connections का समूह तैयार रखता है, जिससे throughput में बहुत सुधार होता है।
HikariCP Pool
सबसे लोकप्रिय JVM connection pool HikariCP है। next.jdbc.connection namespace pooled datasource बनाने में सहायक सुविधा देता है।
(require '[next.jdbc.connection :as connection])
(import '[com.zaxxer.hikari HikariDataSource])Pooled Datasource बनाना
Pool class और अपने db spec के साथ connection/->pool का उपयोग करें। लौटाया गया datasource ही वह माध्यम है जिसके विरुद्ध आप query चलाते हैं।
(def datasource
(connection/->pool HikariDataSource
{:dbtype "postgresql"
:dbname "mydb"
:username "app"
:password "secret"}))Pool के माध्यम से Query चलाना
बन जाने के बाद pooled datasource को सीधे jdbc/execute! में दें, ठीक वैसे ही जैसे साधारण connection देते हैं। Pool अपने-आप connection उपलब्ध कराता और वापस लेता है।
(require '[next.jdbc :as jdbc])
(jdbc/execute! datasource
["SELECT * FROM users WHERE active = ?" true])Pool बंद करना
Pooled datasource ऐसा resource है जिसे बंद किया जा सकता है। सभी connections मुक्त करने के लिए shutdown पर इसे बंद करें।
(.close datasource)Transaction क्या है
एक transaction कई statements को इस तरह समूहित करता है कि वे या तो सभी सफल हों या सभी एक साथ विफल हों। इससे consistency सुनिश्चित होती है, जैसे accounts के बीच धन स्थानांतरित करते समय।
with-transaction
next.jdbc with-transaction उपलब्ध कराता है। body के भीतर के statements atomic रूप से चलते हैं; exception आने पर सब कुछ rollback हो जाता है।
(jdbc/with-transaction [tx datasource]
(jdbc/execute! tx ["UPDATE acct SET bal = bal - 100 WHERE id = 1"])
(jdbc/execute! tx ["UPDATE acct SET bal = bal + 100 WHERE id = 2"]))स्वचालित Rollback
यदि कोई statement exception उत्पन्न करता है, तो transaction अपने-आप rollback हो जाता है और exception आगे भेज दिया जाता है। कोई अधूरा update commit नहीं होता।
(jdbc/with-transaction [tx datasource]
(jdbc/execute! tx ["INSERT INTO orders (id) VALUES (1)"])
(throw (ex-info "boom" {}))) ; insert above is rolled backIsolation Levels
आप यह नियंत्रित करने के लिए isolation level निर्दिष्ट कर सकते हैं कि एक साथ चल रहे transactions एक-दूसरे को कैसे देखें।
:read-committed:repeatable-read:serializable
(jdbc/with-transaction [tx datasource {:isolation :serializable}]
(jdbc/execute! tx ["UPDATE counters SET n = n + 1 WHERE id = 1"]))मैन्युअल Rollback
Connection पर rollback flag सेट करके बिना exception उत्पन्न किए rollback कराया जा सकता है।
(jdbc/with-transaction [tx datasource]
(jdbc/execute! tx ["INSERT INTO logs (msg) VALUES ('test')"])
(.rollback tx))Pooling और Transactions साथ में
Production में startup पर एक pooled datasource बनाएँ और महत्वपूर्ण बहु-चरणीय writes को with-transaction में लपेटें। इससे performance और integrity दोनों मिलते हैं।
(defn transfer! [ds from to amount]
(jdbc/with-transaction [tx ds]
(jdbc/execute! tx ["UPDATE acct SET bal = bal - ? WHERE id = ?" amount from])
(jdbc/execute! tx ["UPDATE acct SET bal = bal + ? WHERE id = ?" amount to])))त्वरित जाँच
अपने transaction ज्ञान की जाँच करें।
पुनरावलोकन
आपने next.jdbc के साथ connection pooling और transactions का उपयोग करना सीखा।
connection/->poolऔर HikariCP से pool बनाएँ- Atomic writes को
with-transactionमें लपेटें - विफलताएँ अपने-आप rollback करती हैं; concurrency के लिए isolation levels चुनें
एआई शिक्षक के साथ Clojure सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “कनेक्शन पूलिंग और लेन-देन” पाठ निःशुल्क है?
हाँ—“कनेक्शन पूलिंग और लेन-देन” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“कनेक्शन पूलिंग और लेन-देन” में मैं क्या सीखूँगा?
पूलिंग से डेटाबेस कनेक्शन कुशलतापूर्वक प्रबंधित करें और next.jdbc में लेन-देन का उपयोग करके डेटा की अखंडता सुनिश्चित करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“कनेक्शन पूलिंग और लेन-देन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- next.jdbc से डेटाबेस से जुड़ना
- CRUD संचालन करना
- डेटाबेस माइग्रेशन और स्कीमा प्रबंधन
- कनेक्शन पूलिंग और लेन-देन