Manual:SQLite/ru

Поддержка SQLite для MediaWiki, начиная с MediaWiki 1.17. Поддержка SQLite была частью основного кода, начиная с MediaWiki версии 1.13. Однако поддержка SQLite расширениями, которые вносят изменения в базу данных, разнообразна. Ниже приведены некоторые примечания по установке библиотеки SQLite в среду PHP.

Несмотря на то, что SQLite является качественным продуктом и для него существует массовая поддержка, есть два важных предостережения относительно использования SQLite для MediaWiki. Во-первых, несмотря на то, что многие расширения поддерживают SQLite, некоторые популярные расширения до сих пор не поддерживают его. Во-вторых, SQLite не масштабируется за пределы одного сервера. В случае, если ваша вики может вырасти до большого количества одновременных пользователей и большого количества контента, было бы лучше использовать систему базы данных, поддерживающую модель первичной реплики, такую как MySQL. В результате, если ваша вики может зависеть от использования этих расширений или может потребоваться использовать систему базы данных первичной реплики, лучше всего использовать базу данных MySQL для вашей вики. Решение об использовании SQLite, MySQL или другой системы баз данных в идеале должно быть принято до того, как вы создадите свою вики, так как трудно преобразовать базу данных SQLite в базу данных MySQL после того, как вы начали использовать свою вики.

О SQLite
SQLite — это библиотека баз данных с открытым исходным кодом, выпущенная в общественное достояние. В отличие от клиент-серверных систем управления базами данных, библиотека SQLite связана с PHP и, таким образом, становится неотъемлемой частью серверного процесса. MediaWiki использует функциональность SQLite посредством простых вызовов функций, что снижает задержку при доступе к базе данных, поскольку вызовы функций более эффективны, чем взаимодействие между процессами.

Использование SQLite в качестве базы данных для MediaWiki имеет свои плюсы и минусы:


 * Плюсы


 * Вам не нужно устанавливать и поддерживать автономный сервер базы данных, такой как MySQL; это значительно сокращает усилия, затрачиваемые на администрирование, и устраняет некоторые точки отказа.
 * Первое также означает, что SQLite гораздо больше подходит для переносных установок MediaWiki, запускаемых с USB-накопителя.
 * Вы не ограничены искусственными ограничениями базы данных на общих хостах.
 * Вся база данных хранится в виде одного кроссплатформенного файла, что упрощает резервное копирование и миграцию.


 * Минусы


 * SQLite не так масштабируем, поэтому если у вас большая и популярная вики, вам следует использовать MySQL.
 * Хотя у SQLite есть собственная поисковая система, она не поддерживается более продвинутыми решениями, такими как Lucene.
 * Известно, что несколько расширений имеют проблемы с обновлением базы данных или установкой с SQLite: AbuseFilter, Echo, Flow и LiquidThreads.

Установка SQLite
Требуется по крайней мере SQLite версии 3.8.0. Кроме того, чтобы использовать полнотекстовый поиск, SQLite должен быть скомпилирован с включенным модулем FTS3 (в настоящее время в большинстве сборок он уже включен). SQLite3 работает посредством PDO functions|функции PHP PDO.


 * Чтобы установить SQLite3 в системе на базе Debian или Ubuntu, используйте apt-get install php-sqlite3.
 * Двоичные файлы Windows с php.net в порядке.
 * Модуль PHP PDO SQLite должен быть загружен. Вы должны раскомментировать следующую строку в вашем php.ini: extension=pdo_sqlite
 * Куда вы должны поместить саму базу данных SQLite? Путь по умолчанию выглядит так: $IP/../data/$dbname.sqlite. Все, что находится за пределами webroot, должно быть безопасным; хорошо держать его рядом. Или, если вам так хочется, вы можете поместить его где-нибудь в корень веб-сайта и обязательно использовать конфигурацию веб-сервера, чтобы запретить доступ к нему.
 * Куда вы должны поместить саму базу данных SQLite? Путь по умолчанию выглядит так: $IP/../data/$dbname.sqlite. Все, что находится за пределами webroot, должно быть безопасным; хорошо держать его рядом. Или, если вам так хочется, вы можете поместить его где-нибудь в корень веб-сайта и обязательно использовать конфигурацию веб-сервера, чтобы запретить доступ к нему.

Установка MediaWiki на бэкэнд SQLite

 * Если модуль SQLite для PHP установлен правильно, установщик MediaWiki (/mw-config/index.php) должен предложить вам вариант использования SQLite. В версиях MediaWiki до 1.16 вам нужно ввести что-то в поля «DB username» (Имя пользователя БД) и «DB password» (Пароль БД), чтобы программа установки продолжила работу, даже если SQLite не нуждается в них.
 * Если вы ничего не вводите в поле «SQLite data directory» (Каталог данных SQLite), ваш $wgSQLiteDataDir останется пустым, что соответствует каталогу данных в родительском корне документа, однако этот каталог может отличаться для веб-скриптов и сценариев обслуживания, запускаемых из командной строки, поэтому рекомендуется указывать его явно.

Поисковый движок
Возможности поиска для бэкенда SQLite были представлены в MediaWiki 1.16. Для них требуется SQLite с скомпилированным модулем FTS3, который обычно присутствует в большинстве современных сборок. Если вы недавно обновили поддержку SQLite до версии, включающей FTS3, запустите средство обновления, как если бы вы обновляли MediaWiki. После того, как сценарий обновления создал таблицу поискового индекса, заполните ее файлом $reboottextindex. То же самое относится и к переключению обратно в среду без FTS3: повторный запуск средства обновления понизит таблицу, чтобы избежать ошибок SQL.

Резервное копирование
Если ваша вики в настоящее время отключена, ее базу данных можно сделать резервной копией, просто скопировав файл базы данных. В противном случае вам следует использовать сценарий обслуживания: php Maintenance/SqliteMaintenance.php --backup-to <имя файла резервной копии>, который обеспечит атомарность операции и отсутствие несоответствий. Если ваша база данных невелика и сервер не сильно загружен, пользователи, редактирующие вики, не заметят ничего, кроме короткого лага. Пользователи, которые просто читают, в любом случае ничего не заметят.

Не удается получить доступ к базе данных на терминале
Чтобы получить доступ к базе данных из командной строки, введите в терминале:

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. If the problem is directly related to SQLite backend, report it under MediaWiki → Database component. Otherwise (if the problem is related to one very specific aspect, of the software or an extension), select an appropriate product and component. 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 depend on tag sqlite.

См. также

 * SQLite-specific configuration settings:
 * Maintenance script
 * Maintenance script