Що таке Manticore
Стаття також доступна російською (перейти до перегляду).
Постійне збільшення об’ємів оброблюваних даних у всіх галузях знань стимулює зростання попиту на інструментарій для їх обробки та зберігання. Існуючі на IT-ринку програмні засоби цієї категорії вже не здатні в повній мірі задовольнити цей попит і тому створюються нові, більш прогресивні інструменти. Одним з них є система обробки та зберігання даних Manticore Search, орієнтована на широкий спектр задач, починаючи від організації повнотекстового пошуку по базам знань і закінчуючи реалізацією технології OLAP(Online Analytical Processing), що дозволяє обробляти сотні Тбайт даних у межах будь-якої розподіленої системи. Розглянемо технологічну будову і основні можливості Manticore Search.
Технологічні основи створення Manticore Search
Програма була створена у 2017 році на базі відомої пошукової системи Sphinx та стала відокремленою гілкою останньої. Вона має відкритий вихідний код, котрий був повністю переписаний із виправленням багатьох сотень помилок, котрі є у Sphinx. В результаті була отримана система із покращеною функціональністю та широким спектром застосування.
Головний процес програми (daemon) створений на C++. Це забезпечує її швидкий запуск та покращення роботи із пам’яттю.
Програма має багатопоточну архітектуру, що забезпечує інтелектуальне розпаралелювання запитів та можливість використання всіх ресурсів багатоядерних ЦП.
Був доданий новий компонент Manticore Buddy, створений на мові PHP, основною задачею якого є виконання високорівневих функцій без значних втрат обчислювальної потужності системи.
У програмі використовуються низькорівневі оптимізації для додаткового підвищення продуктивності роботи.
Засіб має власний синтаксис, заснований на SQL і підтримує протоколи MySQL, HTTP SQL та HTTP JSON.
Порівняння із аналогами на IT-ринку
По багатьом ключовим параметрам – швидкість обробки, пропускна спроможність тощо – Manticore Search перевищує своїх конкурентів, основним з яких, окрім Sphinx, є пошукова система Elasticsearch.
Обидва засоби мають деякі спільні характеристики, наприклад, це стосується підтримки HTTP JSON для управління схемами баз даних. Це дозволяє виконувати сумісні із ElasticsearchJSON-запити та використовувати такі інструменти, як Filebeat, Logstash та деякі інші.
Однак, на відміну від Elasticsearch, Manticore має набагато більші показники ключових характеристик, котрі отримані експериментально та представлені розробниками програми у документації на неї:
-
Пропускна спроможність при прийомі на один комп’ютер майже в два рази більша;
-
Аналітика журналів виконується майже у 30 разів швидше;
-
Швидкість обробки даних значних об’ємів більша у чотири рази;
-
Швидкість обробки даних середніх об’ємів більша у п’ять разів;
-
Швидкість обробки невеликих обсягів даних більша у п’ятнадцять разів.
Вказані переваги є доволі суттєвими та дозволяють розглядати Manticore у якості лідера у вказаному сегменті програмного забезпечення.
Основні можливості
Розглянемо основні можливості Manticore Search для кожного окремого напрямку:
-
Можливості пошуку та обробки тексту;
-
Обробка природної мови;
-
Доступність;
-
Сховище даних;
-
Оптимізація продуктивності;
-
Інтеграція.
Можливості пошуку та обробки тексту
Програма забезпечує можливість організації наступних видів пошуку та функцій обробки текстових даних:
-
Повнотекстовий пошук (більше двадцяти операторів, користувацьке ранжування);
-
Фасетний;
-
Векторний;
-
Геопросторовий;
-
Виправлення орфографії;
-
Об’єднання таблиць;
-
Автозаповнення;
-
Стандартні функції фільтрації та обробки даних;
-
Потокова фільтрація.
Обробка природної мови
Програма використовує наступні методи та елементи при обробці природної мови:
-
Токенізація на рівні слів та знаків;
-
Виділення тексту та коренів;
-
Форми слів;
-
Лемматизація та стеммінг;
-
Синоніми та стоп-слова;
-
Оптимальна сегментація китайської мови.
Доступність
Засіб дозволяє використовувати дані, розміщені у межах будь-якої розподіленої системи – дата-центрах, окремих вузлах,VPS-серверах тощо.
Влаштоване балансування навантаження забезпечує рівномірний його розподіл між усіма вузлами розподіленої системи, кожен з яких може виконувати функції не тільки вузла даних, але і балансувальника навантаження в залежності від ситуації.
Віртуальна синхронна реплікація забезпечує високу продуктивність реплікації та узгодженість даних на всіхUbuntu-серверах розподіленої системи, незважаючи на всі інші чинники. При цьому задіяні функції бібліотеки Galera.
Сховище даних
ManticoreSearch дозволяє зберігати дані сховища у трьох форматах:
-
Строковий;
-
Стовпчастий;
-
Docstore.
Строковий формат забезпечує найвищу продуктивність, однак вимагає значних витрат такого важливого ресурсу, як оперативна пам’ять, що не підходить для обробки значних об’ємів даних. Це пояснюється тим, що атрибути даних завжди знаходяться в пам’яті. І тому формат можна використовувати для даних малого, середнього і помірно великого розміру.
Стовпчастий формат є більш оптимальним та стає доступним через бібліотеку Columnar Library. Він підходить для роботи із даними будь-якого розміру, особливо надвеликого. Це пояснюється тим, що їх атрибути під час роботи не зберігаються в пам’яті і тому вона більш розвантажена у порівнянні із строковим зберіганням. Його недоліком є дещо знижена продуктивність роботи для деяких видів запитів.
Формат Docstore є спеціалізованим та не вимагає ресурсів оперативної пам’яті, оскільки тут не здійснюється сортування та фільтрація даних, а лише отримання їх вихідного значення.
Оптимізація продуктивності
Вказаний вид оптимізації реалізується на основі застосування двох методів:
-
Автоматичні вторинні індекси;
-
Оптимізація запитів на основі результатів оцінювання даних.
Колонкові структури даних використовуються бібліотекою Columnar Library у вигляді PGM-індексу, специфіка котрого полягає в тому, що він організований у вигляді структури даних більшого рівня, у порівнянні із організацією «звичайних» індексів. Це дозволяє значно підвищити продуктивність обробки запитів та час оновлення.
Оптимізатор запитів при своїй роботі використовує статистичні дані для оцінки різних планів виконання запитів. Це дає змогу отримати найбільш ефективний план виконання запиту, враховуючи такі параметри як об’єми доступних ресурсів, складність запиту, розмір даних тощо. В кінцевому рахунку це дає змогу значно підвищити рівень продуктивності системи при виконанні запитів.
Інтеграція
Manticore Search використовує максимум можливостей для інтеграції із іншими сервісами, технологіями, базами даних тощо. Наведемо декотрі з них:
-
MySQL;
-
ProxySQL;
-
PostgreSQL;
-
Vector.dev;
-
Logstash;
-
Apache Superset;
-
XML та CSV;
-
Grafana.
Висновки
Ми висвітлили лише основні можливості програми, але «за кадром» ще лишилися доволі значні напрямки, такі, наприклад, як безпека передачі даних, резервне копіювання, використовувані типи даних, використання Real-time таблиць та ще багато іншого. Ознайомитися із усіма можливостями Manticore Search та прикладами їх застосування на практиці можна за допомогою засобів інтерактивного навчання від розробників програми за цією адресою.
До речі, пошук за статтями в блозі FREEhost.UA працює саме завдяки Manticore Search.