Back to mnoGoSearch site

Глава 5. Хранение данных mnoGoSearch

Содержание
SQL режимы хранения
Способ хранения Cache
К вопросу производительности mnoGoSearch
Поддержка SearchD
Oracle notes
Замечания по IBM DB2

SQL режимы хранения

Общая инфоромация о хранении

mnoGoSearchсохраняет в базе каждое найденное на страницах слово вместе с номером секции документа, в которой найдено это слово, а также с номером поции слова в документе.

Разнообразные способы хранения слов

На данный момент mnoGoSearch поддерживает следующие способы хранения слов для SQL серверов: "single", "multi", "crc", "crc-multi", "cache". Режимом по умолчанию является "single". Способ задаётся параметром dbmode команды DBAddr, указываемой в файлах конфигурации indexer.conf и search.htm.


Примеры:
DBAddr mysql://localhost/mnogosearch/?dbmode=single
DBAddr mysql://localhost/mnogosearch/?dbmode=multi
DBAddr mysql://localhost/mnogosearch/?dbmode=crc
DBAddr mysql://localhost/mnogosearch/?dbmode=crc-multi

Способ хранения single

Если указан режим хранения "single", все слова сохраняются в одной таблице (или текстовом файле, для втсроенной базы данных) со структурой (url_id,word,weight), где url_id - идентификатор документа, равный значению поля rec_id таблицы "url". Word имеет SQL тип variable char(32).

Способ хранения multi

Если выбран способ хранения "multi", слова будут сохранены в 13 различных таблицах, в зависимости от их длины. Структура этих таблиц идентична структуре таблицы для способа хранения "single", только для Word используется тип char фиксированной длины, что даёт выигрыш в скорости для большинства баз данных. Это делает режим "multi" более быстрым, по сравнению с "single". Этот режим не реализован для встроенной базы данных.

Способ хранения crc

Если выбран способ хранения "crc", mnoGoSearch вместо слов будет сохранять их индентификатора, вычесленные как CRC32 сумма от этих слов. Этот режим хранения использует меньше дискового пространства и работает быстрее способов хранения "single" и "multi". Наши тесты показали, что только 250 пар слов из списка в 1.600.000 уникальных слов имеют одинаковую CRC32 сумму. Большая часть этих пар (>90%) содержит по меньшей мере одно слово с ошибкой. Инфоромация о каждом слове хранится в следующей структуре (url_id,word_id,weight), где word_id - 32-битовый идентификатор слова, посчитаный как его CRC32 сумма. Этот режим хранения рекомендуется для больших поисковиков.

Способ хранения crc-multi

Если выбран способ хранения "crc-multi", mnoGoSearch хранит CRC32 идентификаторы в нескольких таблицах (или двоичных файлах для встроенной базы данных) с такой же структурой, как и для способа хранения "crc", и в зависимости от лины слова, как при режиме хранения "multi". Обычно это самый быстрый способ и рекомендован для больших поисковиков.

Способ хранения cache

Добавлен новый способ хранения - "cache". Это самый быстрый способ, позволяющий быстро индексировать и искать среди миллионов документов. Смотрите Разд. Способ хранения Cache для дальнейшего объяснения.

Замечание о стуктуре таблиц для SQL серверов

Учтите, что мы разрабатываем mnoGoSearch с использованием MySQL в качестве SQL сервера и зачастую не имеем возможности тестировать каждую новую версию со всеми поддерживаемыми базами данных. Т.е., если для вашей базы данных нет соответсвующей структуры таблиц в директории create/you_database, возьмите в качестве образца структуру для MySQL и создайте по аналогии структуру для вашей базы данных. Структура для MySQL всегда поддерживается в обновлённом состоянии.

Дополнительные возможности не-CRC режимов хранения

Режимы хранения single и multi поддерживают поиск подстрок. Т.к. при использовании режимов хранения crc и crc-multi хранятся не слова сами по себе, а только их CRC-идентификаторы, то осуществить поиск подстрок не представляется возможным.