База данных словаря Мультитран
В словаре Мультитран используется
специализированная база данных на основе
двоичных деревьев. При разработке этой базы
данных принимались во внимание следующие
критерии:
- Высокая скорость работы
- Достаточно большие объемы информации
(несколько миллионов записей)
- Возможность добавления и удаления записей
- Автоматическая дефрагментация файла базы
данных
- Автоматическое устранение проблемы
'потерянных' записей
- Умеренный объем файла
- Удобство разработки лингвистических программ с
использованием данной СУБД
Как правило, стандартные пакеты СУБД
обеспечивают лишь часть описанной
функциональности. Например, может достигаться
высокая скорость, но объем базы оказывается
несоизмеримо большим. В других моделях
представления данных при высокой скорости и
малом объеме недоступно пополнение базы, или оно
требует переиндексации всех записей.
Была разработана модель, соответствующая
поставленной задаче хранения информации
автоматического словаря. Свойства разработанной
базы данных:
- Гарантированная скорость работы (определяемая
по количеству обращений к диску при выполнении
операции поиска) одинакова для баз объемом 10.000 и
2.000.000 записей и составляет 2 обращения к диску.
Очевидно, что за счет кеширования операции
чтения обращение к диску происходит не при
каждом поиске в базе, поэтому реальная скорость
поиска оказывается в среднем выше теоретической
- При пополнении базы происходит вставка
добавляемой записи в нужное место базы для
обеспечения последующего корректного поиска,
что требует достаточно мало времени
- При удалении записи она физически стирается из
базы, что освобождает место для новых записей и
не требует дополнительной 'чистки' базы
- Объем базы составляет от 120% до 200% объема
исходной текстовой информации в зависимости от
того, насколько активно ведется работа по
добавлению и удалению записей. Таким образом,
объем неизменяемой базы лишь немного превышает
объем исходных данных в текстовом виде даже без
использования алгоритмов сжатия.
- За счет использования наследуемых классов
несложно создать модель практически для любой
задачи, будь это морфологическая база,
переводной словарь или какой-либо другой проект,
требующий хранения и быстрого поиска в массиве
из нескольких миллионов записей.
Описание модели