Manual:SQLite/hi



इस लेख का उद्देश्य है SQLite पर मीडियाविकि को चलाने के बारे में जानकारी इकट्ठा करना।

मीडियाविकि पर 1.17 से SQLite समर्थित है, मगर कृपया ध्यान रखें कि यह द्वितीय-स्तर समर्थन है, और आपको शायद कुछ बग्स मिल जाएँ। मीडियाविकि से साथ सबसे ज़्यादा प्रयुक्त डेटाबेस है । समस्याओं की सूची के लिए Phabricator देखें। मीडियाविकि को SQLite के संस्करण या अधिक की ज़रूरत है। डेटाबेस में बदलाव करने वाले कुछ ही एक्सटेंशनों पर SQLite समर्थित है।



क्या SQLite मीडियाविकि के लिए एक अच्छा विकल्प है?
मीडियाविकि के लिए SQLite का इस्तेमाल करने में दो ज़रूरी खामियाँ हैं। पहल, जहाँ ज़्यादातर एक्सटेंशन्स SQLite को समर्थित करते हैं, कुछ प्रसिद्ध एक्सटेंशन्स हैं जिनपर SQLite आज भी समर्थित नहीं है। दूसरा, SQLite का इस्तेमाल एक से ज़्यादा सर्वरों पर नहीं किया जा सकता है। अगर आपके विकि पर काफ़ी सारे सदस्य हो जाते हैं और काफ़ी सारी सामग्री जोड़ी जाती है, MySQL की तरह प्राथमिक-नकल मॉडल को समर्थित करने वाले किसी डेटाबेस प्रणाली का इस्तेमाल करना बेहतर है। परिणाम में, अगर आपका विकि इन एक्सटेंशनों पर निर्भर है, या फिर अगर इसे एक प्राथमिक-नकल डेटाबेस प्रणाली की ज़रूरत होती है, अपने विकि के लिए MySQL का इस्तेमाल करना सुझाया जाता है। SQLite, MySQL, या किसी दूसरे डेटाबेस प्रणाली के इस्तेमाल करने का फैसला आम तौर पर विकि को बनाने से पहले लिया जाता है, क्योंकि विकि का इस्तेमाल करना शुरू कर देने के बाद एक SQLite डेटाबेस को MySQL डेटाबेस में बदलना मुश्किल हो जाता है।



SQLite के बारे में
SQLite एक मुक्त-स्रोत डेटाबेस लाइब्रेरी है जिसे सार्वजनिक डोमेन में प्रकाशित किया गया है। क्लाइंट-सर्वर डेटाबेस प्रबंधन प्रणालियों के विपरीत, SQLite लाइब्रेरी को PHP में जोड़ दिया जाता है, इसलिए यह सर्वर प्रणाली का एक अहम हिस्सा बन जाता है। मीडियाविकि SQLite की कार्यक्षमता का इस्तेमाल करने के लिए साधारण फ़ंक्शन कॉल्स का इस्तेमाल करता है, जो डेटाबेस तक पहुँचने में लेटेंसी को घटाता है, क्योंकि फ़ंक्शन कॉल्स अंतर-प्रणाली संचार से ज़्यादा कुशल होते हैं।

मीडियाविकि के डेटाबेस बैक-एंड के रूप में SQLite का इस्तेमाल करने के अपने पक्ष-विपक्ष हैं:


 * पक्ष


 * आपको MySQL जैसा कोई स्टैंडअलोन डेटाबेस स्थापित करने की ज़रूरत नहीं; यह प्रबंधन में लगाई जाने वाली प्रयास को काफ़ी हद तक घटाता है और त्रुटियों की संभावना को कम करता है।
 * इसका यह भी मतलब है कि SQLite, किसी USB स्टिक से चल रहीं पोर्टेबल मीडियाविकि स्थापनाओं के लिए ज़्यादा अनुकूल है।
 * आप साँझित होस्ट्स पर कृत्रिम डेटाबेस सीमाओं से सीमाबद्ध नहीं होते हैं।
 * पूरे डेटाबेस को एक ही क्रॉस-मंच फ़ाइल के रूप में रखा जाता है, जिससे बैकअप्स बनाना और माइग्रेट करना आसान हो जाता है।


 * विपक्ष


 * SQLite स्केलेबल नहीं है, तो अगर आपका विकि काफ़ी बड़ा और प्रसिद्ध है, आपको MySQL का इस्तेमाल करना चाहिए।
 * हालाँकि SQLite का अपना खोज इंजन है, यह Lucene जैसी उन्नत सेवाओं द्वारा समर्थित नहीं है।
 * कई एक्सटेंशनों पर SQLite का इस्तेमाल करने पर डेटाबेस को अपडेट या स्थापित करने में समस्याएँ आ सकती हैं: दुरुपयोग फ़िल्टर, Echo, Flow, और LiquidThreads।



SQLite की स्थापना
कम-से-कम SQLite संस्करण + आवश्यक है। पूरे खोज टेक्स्ट का इस्तेमाल करने के लिए SQLite को FTS3 मॉड्यूल सक्षम करके संकलित करना होता है (आजकल ज़्यादातर बिल्ड्स में यह पहले से मौजूद नहीं होता)। SQLite3 PHP के PDO फ़ंक्शन्स के ज़रिए काम करता है।


 * Debian या Ubuntu पर आधारित सिस्टम्स पर SQLite3 को स्थापित करने के लिए  का इस्तेमाल करें।
 * php.net से Windows बाइनरी से काम चल जाएगा।
 * PHP PDO SQLite मॉड्यूल को लोड करना होगा। अपने  में निम्न पंक्ति को टिप्पणी से हटा दें
 * SQLite डेटाबेस को कहाँ डालना चाहिए? डिफ़ॉल्ट पथ तो '$IP/../data/$dbname.sqlite' लग रहा है। Webroot से बाहर किसी भी जगह पर इसे रखा जा सकता है; इसे पास में रखना बेहतर होगा। या फिर अगर आप चाहें तो इसे webroot में कहीं पर रख सकते हैं और वेबसर्वर कॉन्फ़िगरेशन की मदद से इस तक पहुँच को रोक सकते हैं।
 * SQLite डेटाबेस को कहाँ डालना चाहिए? डिफ़ॉल्ट पथ तो '$IP/../data/$dbname.sqlite' लग रहा है। Webroot से बाहर किसी भी जगह पर इसे रखा जा सकता है; इसे पास में रखना बेहतर होगा। या फिर अगर आप चाहें तो इसे webroot में कहीं पर रख सकते हैं और वेबसर्वर कॉन्फ़िगरेशन की मदद से इस तक पहुँच को रोक सकते हैं।



SQLite बैक-एंड पर मीडियाविकि स्थापित करना

 * अगर PHP के लिए SQLite को ठीक से स्थापित किया जाए, मीडियाविकि इंस्टॉलर आपको SQLite का इस्तेमाल करने का एक विकल्प देगा।
 * अगर आप "SQLite डेटा डिरेक्ट्री" फ़ील्ड में कुछ नहीं डालते हैं, आपका खाली छोड़ दिया जाएगा, जो दस्तावेज़ के जड़ के जनक के   डिरेक्ट्री से संबद्ध है। हालाँकि, यह डिरेक्ट्री अलग-अलग वेब स्क्रिप्टों और अनुरक्षण स्क्रिप्टों के लिए अलग हो सकता है तो इसे निर्दिष्ट करने की सलाह दी जाती है।



खोज इंजन
SQLite बैक-एंड के लिए खोजने की क्षमता मीडियाविकि 1.16 में जोड़ी गई थी। इनमें संकलित FTS3 मॉड्यूल के साथ SQLite की ज़रूरत होती है, जो आम तौर पर ज़्यादातर आधुनिक बिल्ड्स में मौजूद होता ही है। अगर आपने हाल ही में अपने SQLite को किसी ऐसे संस्करण पर अपडेट किया है जिसमें FTS3 शामिल है, अपडेटर को चलाएँ जैसा आप मीडियाविकि को अपग्रेड करते समय चलाते होंगे। जब अपडेटर स्क्रिप्ट ने खोज इनडेक्स टेबल बना लिया हो, उसे से भरें। यह तब भी काम आता है जब आप बिना FTS3 के किसी पर्यावरण में बदल रहे हों: अपडेटर को दोबारा चलाने पर टेबल को डाउनग्रेड किया जाएगा ताकि SQL त्रुटियाँ न आए।

Unable to access the database on the terminal
To get command-line access to the database, type on the terminal:

sqlite3 /var/data/database_name.sqlite

replacing  with the directory that was set as the "SQLite data directory" during the installation process. Alternatively, look for inside.

This can be tricky if you are not experienced about SQLite and run  - because this will open a completely different database (creating it if it doesn't exist) since SQLite interprets the argument not as a system-wide database name, but instead as the file name that contains the db.

Problems
Bugs should be reported to Wikimedia's bug tracker. First check if your problem was already reported - check the dependencies of tag and use search. If you can't find your problem, create a new issue. In any case please take some steps to make your bug easy to find and track: mention SQLite in its summary field and make it have the project tag SQLite.