ArangoDB: Transactional information retrievalБазы данных и системы хранения
Последние 9 лет занимается разработкой поисковых и рекомендательных систем, специализируется на методиках анализа данных, основанных на различных мерах похожести, задачах классификации и кластеризации.
Доклад посвящен реализации поискового движка IResearch (https://github.com/iresearch-toolkit/iresearch) и его интеграции в нативную мультимодельную базу данных ArangoDB (https://github.com/arangodb/arangodb), поддерживающую важнейшие модели данных. Ценность такого решения определяется тем, что в многих практических ситуациях мы сталкиваемся с задачами хранения/поиска/анализа, требующими совместной работы с различными типами данных, включая:
- структурированные таблицы;
- списки объектов с переменной схемой;
- сильно связанные данные (деревья, графы);
- неструктурированные данные (текст).
Как правило, это приводит к появлению "зоопарка" специализированных решений для множества типовых сценариев: большого числа узкоспециализированных СУБД, а также программных инструментов (требующих постоянной поддержки), обеспечивающих «прозрачность» для пользователя.
Наш подход позволяет избежать возникновения этого "зоопарка" и связанных с ним проблем. Наше решение интегрирует функционал и скорость поисковых движков (таких, как ElasticSearch/Solr/Sphinx) в ядро ArangoDB, позволяя обеспечить оптимальный план выполнения запросов и максимальную производительность (особенно в кластере), сильно сократить объем данных, пересылаемых между узлами, а также гарантировать ACID. Весь функционал доступен пользователю через SQL-like язык, позволяющий комбинировать различные модели данных в одном запросе, что придает решению ряд очень интересных свойств.
В докладе мы опишем основные черты ArangoDB и IResearch, а также расскажем:
- об интеграции IResearch в транзакционную модель ArangoDB;
- о подходе, использованном для интеграции в кластер;
- об интеграции IResearch в ArangoDB Query Language (AQL);
- об отличиях и особенностях IResearch и Lucene;
- о новых ценных возможностях ArangoDB после интеграции, например, о работе с графом одновременно и как с плоской, и как со связанной структурой.
В заключение мы расскажем о некоторых задачах в прикладных областях (например, биоинформатика), где данное решение оказывается особенно эффективным.