Drupal 7 में डेटाबेस के साथ काम — पाठ 2 — डेटाबेस कॉन्फ़िगरेशन
Drupal में डेटाबेस से कनेक्शन निर्धारित करने का मुख्य साधन settings.php में मौजूद $databases
ऐरे है। जैसा कि नाम से स्पष्ट है, $databases
आपको एक से अधिक डेटाबेस कनेक्शन परिभाषित करने की अनुमति देता है। यह कई “targets” (लक्ष्यों) को भी सपोर्ट करता है। ध्यान दें कि कनेक्शन वास्तव में तब तक नहीं बनता जब तक कोई कोड डेटाबेस पर पहली बार क्वेरी नहीं चलाता।
कनेक्शन की (Connection Key)
कनेक्शन की (key) डेटाबेस कनेक्शन का एक यूनिक पहचानकर्ता होती है। यह Drupal साइट पर अद्वितीय होनी चाहिए और डिफ़ॉल्ट डेटाबेस के लिए अनिवार्य रूप से निर्दिष्ट की जाती है। अधिकांश साइटों में केवल एक ही कनेक्शन होता है।
कनेक्शन टार्गेट (Connection Target)
प्रत्येक कनेक्शन में एक या अधिक “targets” हो सकते हैं। Target का उपयोग यह निर्धारित करने के लिए किया जाता है कि कौन सा डेटाबेस सर्वर किस प्रयोजन के लिए उपयोग किया जाएगा। यदि अनुरोधित target परिभाषित नहीं है, तो Drupal स्वचालित रूप से डिफ़ॉल्ट target का उपयोग करेगा।
अधिकतर मामलों में, targets master/slave replication के लिए उपयोग किए जाते हैं। डिफ़ॉल्ट target मुख्य (master) SQL सर्वर होता है, और एक या अधिक "slave" servers को परिभाषित किया जा सकता है। जिन क्वेरीज़ को “slave” target के लिए चिह्नित किया गया है, वे उपलब्ध होने पर slave सर्वर पर चलेंगी; अन्यथा master सर्वर का उपयोग किया जाएगा।
$databases का सिंटैक्स
$databases
एक तीन-स्तरीय nested array होता है:
- पहला स्तर — कनेक्शन की (connection key)।
- दूसरा स्तर — target (जैसे “default” या “slave”)।
- तीसरा स्तर — कनेक्शन जानकारी (driver, database, username आदि)।
उदाहरण:
<?php $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb', 'username' => 'username', 'password' => 'secret', 'host' => 'localhost', ); ?>
यह कॉन्फ़िगरेशन MySQL डेटाबेस drupaldb
के लिए एक डिफ़ॉल्ट कनेक्शन बनाती है, जो localhost
पर चलता है और दिए गए username/password से जुड़ता है। यह अधिकांश Drupal साइटों के लिए मानक सेटअप है।
Master/Slave कॉन्फ़िगरेशन का उदाहरण
<?php $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb1', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver1', ); $databases['default']['slave'][] = array( 'driver' => 'mysql', 'database' => 'drupaldb2', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver2', ); $databases['default']['slave'][] = array( 'driver' => 'mysql', 'database' => 'drupaldb3', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver3', ); ?>
ऊपर दी गई कॉन्फ़िगरेशन में एक master सर्वर (dbserver1
) और दो slave सर्वर (dbserver2
और dbserver3
) शामिल हैं। ध्यान दें कि slave servers को एक ऐरे के रूप में परिभाषित किया गया है — प्रत्येक पेज लोड पर Drupal यादृच्छिक रूप से एक slave सर्वर का चयन करेगा।
कई डेटाबेस जोड़ने का उदाहरण
<?php $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupaldb1', 'username' => 'username', 'password' => 'secret', 'host' => 'dbserver1', ); $databases['extra']['default'] = array( 'driver' => 'sqlite', 'database' => 'files/extradb.sqlite', ); ?>
यह उदाहरण दो डेटाबेस दिखाता है — मुख्य Drupal डेटाबेस (drupaldb1
) और एक अतिरिक्त डेटाबेस (extra
), जो SQLite पर आधारित है। SQLite के लिए कॉन्फ़िगरेशन MySQL से अलग होती है। प्रत्येक डेटाबेस ड्राइवर की अपनी सेटिंग संरचना होती है।
Drupal केवल उसी समय किसी डेटाबेस से कनेक्शन खोलता है जब वह वास्तव में उपयोग किया जा रहा हो — इसलिए, कई कनेक्शन परिभाषित करने से प्रदर्शन पर प्रभाव नहीं पड़ता।
Drupal 7 में PDO आवश्यक है
Drupal 7 अब PHP की PDO (PHP Data Objects) लाइब्रेरी पर आधारित है। इसलिए, Drupal चलाने के लिए आपके सर्वर पर PDO सक्षम होना चाहिए या होस्टिंग प्रदाता द्वारा इसका समर्थन किया जाना चाहिए।