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 संस्करण + आवश्यक है। Also, in order to use full text search, SQLite must be compiled with FTS3 module enabled (most builds have it out of the box these days). SQLite3 works via PHP's PDO functions.

You should uncomment the following line in your Anything outside of the webroot should be safe; it's good to keep it nearby. Or, if you feel like it, you could put it in the web root somewhere and make sure to use webserver config to deny access to it.
 * To install SQLite3 on a Debian or Ubuntu based system, use.
 * Windows binaries from php.net are OK.
 * The PHP PDO SQLite module needs to be loaded.
 * Where should you put the SQLite database itself? The default path seems to be $IP/../data/$dbname.sqlite.

Installing MediaWiki on SQLite backend

 * If SQLite module for PHP is properly installed, MediaWiki installer should offer you an option to use SQLite.
 * If you enter nothing into the "SQLite data directory" field, your will be left empty, which corresponds to   directory in the parent of the document root, however this directory might be different for web scripts and maintenance scripts run from command line, so specifying it explicitly is recommended.

Search engine
Search capabilities for SQLite backend was introduced in MediaWiki 1.16. They require SQLite with FTS3 module compiled-in, which is usually present in most modern builds. If you've recently updated your SQLite support to a version that includes FTS3, run the updater as if you're upgrading MediaWiki. After the updater script created the search index table, populate it with. Same applies to switches back to environments without FTS3: re-running the updater will downgrade the table to avoid SQL errors.

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.