Sphinx и MySQL. Установка и использование движка SphinxSE

Базы данных, Операционные системы 26.06.2009

mysql-sphinxse

В продолжение темы о Sphinx, расскажу о SphinxSE, это движок для MySQL, который будет работать со Sphinx индексами непосредственно из MySQL.

Что такое SphinxSE?

Движок SphinxSE не хранит данные сам, а является звеном, которое позволяет серверу MySQL общаться с «searchd», запускать поисковые запросы и получать результаты поиска. Вся индексация и поиск происходит за пределами MySQL.

SphinxSE может быть собран только под MySQL 5.x используя архитектуру плагинов, которая не поддерживается в MySQL 4.x.

SphinxSE позволяет:

  • Легко портировать MySQL FTS (full-text search) приложения в Sphinx;
  • Использовать Sphinx, где невозможно использовать API, например если нет API для какого-то языка;
  • Оптимизировать добавленные Sphinx'ом результаты обработки на стороне MySQL, например: JOIN'ить результаты поиска с другими таблицами MySQL, добавлять дополнительную фильтрацию данных на стороне MySQL и т.д.

Установка SphinxSE

Ставить будем из сорцов и на FreeBSD 6.3.

Сначала скачаем дистрибутивы:

# fetch http://www.sphinxsearch.com/downloads/sphinx-0.9.8.1.tar.gz
# fetch http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.34.tar.gz

Скачать MySQL: http://downloads.mysql.com/archives.php?p=mysql-5.1&o=other
Скачать Sphinx: http://www.sphinxsearch.com/downloads.html

Обратите внимание, в download-листе Sphinx есть пункт «MySQL 5.0.45 with SphinxSE 0.9.8» и из ссылки «mysql-5.0.45-sphinxse-0.9.8-win32.zip» следует что это только для Win32.

Теперь, разархивируем:

# tar -xzf mysql-5.1.34.tar.gz
# tar -xzf sphinx-0.9.8.1.tar.gz

Скопируем сорцы SphinxSE в каталог распакованного нами MySQL:

# cp -R sphinx-0.9.8.1/mysqlse mysql-5.1.34/storage/sphinx

Запускаем «autorun.sh» для пересборки сорцов:

# cd mysql-5.1.34
# sh BUILD/autorun.sh

Установим дополнительные движки, в том числе и Sphinx:

# ./configure --with-plugins=sphinx,innobase,archive,blackhole
# make && make install

Читать полностью »

Subversion. Автоматическое обновление проекта при помощи хуков

Базы данных, Инструменты 25.06.2009

subversion-hooks

В большинстве случаев, при разработке веб-проекта требуется автоматически обновлять рабочую версию, на помощь на приходят свн-хуки!

Начнем с того, что у нас есть веб-проект и нам необходимо создать для него репозиторий, как это сделать я рассказывал в статье «FreeBSD. Установка и настройка Subversion».

Далее, мы будем обновлять наш проект только через репозиторий!

Подготовка проекта

Сначала сделаем импорт веб-проекта в репозиторий:

# svn import /_project_ file:///svn/repos/_project_

Теперь удалим все файлы проекта (не забывайте делать бекапы на всякий случай), и сделаем чекаут:

# cd /_project
# rm -rf *
# svn checkout file:///svn/repos/_project_

Hooks

Хуки срабатывают на разные события Subversion, вот некоторые из них:

  • start-commit — запускается до начала транзакции, может быть использован для проверки прав.
  • pre-commit — запускается в конце транзакции, но до commit, часто используется для валидации данных, например для проверки не пустых лог-собщений.
  • post-commit — запускается после транзакции, может быть использовано для отправки e-mail или для резервирования хранилища.
  • pre-revprop-change — запускается до изменений в ревизии, могут быть использованы для проверки доступа.
  • post-revprop-change — запускается после изменений в ревизии, могут быть использованы для отправки e-mail или для резервирования изменений.

Есть еще «post-lock», «post-unlock», «pre-lock» и «pre-unlock», как видно из названий он срабатывают при блокировке. Я не буду их разбирать, потомучто они у меня интереса пока не вызвали.

Читать полностью »

MySQL Event Scheduler или встроенный диспетчер событий в MySQL

Базы данных 12.06.2009

mysql-crontab

В MySQL 5.1 появился свой планировщик задач! Ранее, мне и многим другим разработчикам приходилось использовать cron для таких целей, как «подчистка устаревшей информации» или «пересчет счетчиков» в базе данных и т.д.

Включение планировщика

Планировщик по умолчанию выключен, для того чтобы его включить надо добавить в my.ini или в my.cnf

[mysqld]
event_scheduler = on

Так же вы можете для конкретной сессии запустить планировщик в mysql-консоле

mysql> SET global event_scheduler = ON;

Для проверки, работает ли планировщик, выполните запрос:

mysql> show variables like 'event_scheduler';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| event_scheduler | ON    |
+-----------------+-------+
1 row in set (0.00 sec)

Официальное руководство по настройке.

Создание задания

Синтаксис достаточно прост, при создании задания необходимо обязательно указать:

  • Имя задания (event_name)
  • Интервал или точное время (schedule и interval)
  • SQL-запрос для выполнения (sql_statement)

Читать полностью »

Утилита mysqldump и шпаргалка по параметрам

Базы данных, Инструменты 07.06.2009

mysql-dump

Утилита mysqldump позволяет получить дамп содержимого базы данных или совокупности баз для создания резервной копии или пересылки данных на другой SQL-сервер (не обязательно MySQL-сервер). Дамп будет содержать набор команд SQL для создания и/или заполнения таблиц.

Так же mysqldump имеет возможность развертывания баз данных из созданного sql-файла.

Создание дампа

Разберем пример простейшее использования, задампим базу данных «database» при помощи перенаправления потока в файл «database.sql»:

mysqldump -uroot -h82.82.82.82 -p database > database.sql

где:

  • -u или -–user=... — имя пользователя
  • -h или --host=... — удаленный хост (для локального хоста можно опустить этот параметр)
  • -p или --password — запросить пароль
  • database — имя базы данных
  • database.sql — файл для дампа

Читать полностью »

Работаем с XML данными и XPath в MySQL

Базы данных, Программирование 13.04.2009

mysql-xpath

Как известно, в MySQL 5.1 внедрили функции для работы с XML, сегодня я расскажу про эти две функции более подробно, а так же вкратце опишу как работать с XPath в MySQL.

Для работы с XML есть две функции:

  1. ExtractValue () — Позволяет выбирать записи средствами XPAth;
  2. UpdateXML () — Возвращает измененный XML-фрагмент.

Функция ExtractValue и XPath

Синтаксис следующий:

ExtractValue (xml_frag, xpath_expr)

Для примеров, я буду работать с переменной, но с тем же успехом вы можете записать XML-фрагмент в любое поле с текстовым типом данных. XPath поддерживается на любом движке.

Создадим переменную @xml:

mysql> SET @xml = '<x id="xx"><y id="yy"><z id="zz">test</z></y></x>';

Выберем XML-фрагмент с помощью XPath:

mysql> SELECT @xml, ExtractValue(@xml, '//z');
+---------------------------------------------------+---------------------------+
| @xml                                              | ExtractValue(@xml, '//z') |
+---------------------------------------------------+---------------------------+
| <x id="xx"><y id="yy"><z id="zz">test</z></y></x> | test                      |
+---------------------------------------------------+---------------------------+
1 row IN SET (0.00 sec)

Как видно, мы выбрали содержимое ноды <z> -> «test».

Читать полностью »