Тип работы:
Предмет:
Язык работы:


Реализация алгоритма для поиска зависимостей включения в рамках платформы Desbordante

Работа №125790

Тип работы

Бакалаврская работа

Предмет

информационные системы

Объем работы38
Год сдачи2023
Стоимость4750 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
91
Не подходит работа?

Узнай цену на написание


Введение 4
1. Постановка задачи 6
2. Поиск зависимостей включения: обзор 7
2.1. Основные понятия 7
2.2. Обзор существующих алгоритмов 8
2.3. Существующие инструменты 9
2.4. Desbordante 11
3. State-of-the-Art: алгоритм Faida 13
3.1. Принцип работы 13
4. Архитектура решения 18
5. Исследование производительности и оптимизации 20
5.1. Буферизация 21
5.2. Выбор хеш-таблицы 22
5.3. Векторизация 23
5.4. Распараллеливание 25
6. Эксперименты: сравнение с Metanome 27
6.1. Исследовательские вопросы и метрики 27
6.2. Условия эксперимента 27
6.3. Эксперимент 28
6.4. Результаты 31
6.5. Угрозы валидности 33
Заключение 35
Список литературы 36

В настоящее время многие компании сталкиваются с задачами обра­ботки большого количества данных. Данные обрабатываются, перера­батываются и исследуются бизнес-аналитиками, специалистами по ма­шинному обучению, учеными. Однако, если данных оказывается слиш­ком много, при работе с ними могут возникнуть затруднения. В таких случаях может быть полезно профилирование данных — совокупность методов, направленная на извлечение метаданных из набора данных [1] (иначе — получение данных о данных). Благодаря профилированию можно обнаружить различные закономерности, сокрытые в данных, что позволяет сделать некоторые выводы о структуре этих данных и исправить различные ошибки. Существует множество различных ме­тодов профилирования, каждый из которых представляет поиск неко­торой формально описанной закономерности или правила. Такие зако­номерности будем называть примитивами. Например, один из самых широко известных примитивов — функциональная зависимость [10]. Примитивы позволяют узнать внутреннюю структуру таблицы, понять, как связаны между собой разные таблицы, они полезны [1] при очистке и интеграции данных, оптимизации и нормализации баз данных. Кро­ме того, нахождение закономерностей в данных полезно и учёным для анализа результатов экспериментов, специалистам по машинному обу­чению для выбора параметров моделей, аналитикам для выдвижения гипотез. Один из таких полезных примитивов — зависимости включе­ния. Неформально, между двумя столбцами (возможно из разных) таб­лиц удерживается зависимость, если множество всех значений одного столбца содержится в множестве всех значений из другого. Такие за­висимости применяются в различных алгоритмах работы с базами дан­ных: например, самое часто упоминаемое в литературе применение — поиск первичных ключей [8]. Также зависимости включения исполь­зуются [12] при оптимизации запросов, проектировании баз данных, интеграции данных.
Для поиска зависимостей включения был разработан ряд алгорит­мов, сравнение производительности которых было произведено в ста­тье [12]. Среди этих алгоритмов выделяется Faida — алгоритм прибли­женного поиска зависимостей включения. В отличие от других алго­ритмов, он с небольшой вероятностью может выдавать ложноположи­тельные результаты, однако это позволяет ему работать в несколько раз быстрее точных state-of-the-art алгоритмов. Реализация Faida, а также реализации многих других алгоритмов профилирования были собраны в платформе Metanome — инструменте для профилирования данных, полностью написанном на Java. Инструмент ориентирован на работу с данными и позволяет запускать различные алгоритмы профилиро­вания на входных наборах данных. Однако исследования [5] показали, что производительности реализаций на Java не всегда достаточно для требовательных к ресурсам вычислений на больших объемах данных. Кроме того, перед началом использования Metanome необходимо пра­вильно сконфигурировать и развернуть на машине пользователя, что может быть затруднительно для аналитиков, которые не так тесно свя­заны с миром разработки.
Чтобы избавиться от описанных недостатков, была разработана плат­форма Desbordante — инструмент для профилирования данных с от­крытым исходным кодом, идейный наследник Metanome, написанный на языке C++. Инструмент поддерживает несколько примитивов, в том числе и функциональные зависимости, однако на момент начала настоящей работы поддержка зависимостей включения отсутствовала. Таким образом, было принято решение реализовать алгоритм прибли­женного поиска зависимостей включения Faida на языке C++, и внед­рить код алгоритма в инструмент. Благодаря этому будет создана про­изводительная open-source реализация этого алгоритма.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В ходе работы над созданием высокопроизводительной реализации алгоритма Faida в рамках профайлера данных Desbordante были вы­полнены следующие задачи:
• произведён краткий обзор предметной области зависимостей вклю­чения и алгоритма Faida, выделены три основные стадии работы алгоритма: препроцессинг, генерация кандидатов и валидация;
• алгоритм реализован на языке C++, в качестве эталонной реали­зации была взята Java-реализация алгоритма из Metanome;
• исследована производительность кода и реализованы оптимиза­ции:
• сторонняя хеш-таблица,
• буферизация,
• векторизация с использованием SIMD-инструкций,
• распараллеливание;
• проведено сравнение производительности С++-реализации с су­ществующей Java-реализацией алгоритма из Metanome. Экспери­менты показали, что все предложенные оптимизации улучшают производительность, и оптимизированная C++-реализация рабо­тает в среднем в 3.7 раз быстрее Java-реализации.
На основе результатов работы была подготовлена статья [9], которая была принята на конференцию FRUCT’23 (публикуется в IEEE Xplore и индексируется в Scopus). Код алгоритма доступен1 на Github.


[1] Abedjan Ziawasch, Golab Lukasz, Naumann Felix. Profiling Re­lational Data: A Survey // The VLDB Journal.— 2015. — aug.— Vol. 24, no. 4.— P. 557-581.— URL: https://doi.org/10.1007/ s00778-015-0389-y.
[2] Appleby Austin. SMHasher.— URL: https://github.com/ aappleby/smhasher (дата обращения: 2022-05-1).
[3] Data Profiling with Metanome / Thorsten Papenbrock, Tanja Bergmann, Moritz Finke et al. // Proc. VLDB En­dow. — 2015.--aug. — Vol. 8, no. 12.-- P. 1860-1863.-- URL: http://dx.doi.org/10.14778/2824032.2824086.
[4] De Marchi Fabien, Lopes Stephane, Petit Jean-Marc. Efficient Algo­rithms for Mining Inclusion Dependencies // Advances in Database Technology — EDBT 2002 / Ed. by Christian S. Jensen, Simonas Sal- tenis, Keith G. Jeffery et al. — Berlin, Heidelberg : Springer Berlin Heidelberg, 2002. — P. 464-476.
[5] Desbordante: a Framework for Exploring Limits of Dependency Discovery Algorithms / Maxim Strutovskiy, Nikita Bobrov, Kir­ill Smirnov, George Chernishev // 2021 29th Conference of Open In­novations Association (FRUCT). — 2021. — P. 344-354.
[6] Desbordante: from benchmarking suite to high-performance science-intensive data profiler (preprint) / George A. Chernishev, Michael Polyntsov, Anton Chizhov et al. // CoRR. -- 2023. -- Vol. abs/2301.05965. —arXiv : 2301.05965.
[7] Divide & Conquer-Based Inclusion Dependency Discovery / Thorsten Papenbrock, Sebastian Kruse, Jorge-Arnulfo Quiane-Ruiz, Felix Naumann // Proc. VLDB Endow.— 2015. — feb.— Vol. 8, no. 7. -- P. 774-785. -- URL: https://doi.org/10.14778/2752939. 2752946.
[8] Fast Approximate Discovery of Inclusion Dependencies / Sebas­tian Kruse, Thorsten Papenbrock, Christian Dullweber et al. // Datenbanksysteme fur Business, Technologie und Web (BTW 2017), 17. Fachtagung des GI-Fachbereichs „Datenbanken und Information- ssysteme” (DBIS), 6.-10. Marz 2017, Stuttgart, Germany, Proceed­ings / Ed. by Bernhard Mitschang, Daniela Nicklas, Frank Leymann et al.- Vol. P-265 of LNI. - GI, 2017.- P. 207-226.- URL: https://dl.gi.de/20.500.12116/629.
[9] Fast Discovery of Inclusion Dependencies with Desbordante (paper ac­cepted) / Alexander Smirnov, Anton Chizhov, Ilya Shchuckin et al. // 2023 33th Conference of Open Innovations Association (FRUCT).— 2023.
[10] Functional Dependency Discovery: An Experimental Evaluation of Seven Algorithms / Thorsten Papenbrock, Jens Ehrlich, Jannik Marten et al.— 2015.—jun.— Vol. 8, no. 10.— P. 1082-1093.— URL: https://doi.org/10.14778/2794367.2794377.
[11] HyperLogLog: the analysis of a near-optimal cardinality estimation al­gorithm / Philippe Flajolet, Eric Fusy, Olivier Gandouet, Frederic Me­unier // AofA: Analysis of Algorithms / Ed. by Philippe Jacquet. — Vol. DMTCS Proceedings vol. AH, 2007 Conference on Analysis of Al­gorithms (AofA 07) of DMTCS Proceedings. — Juan les Pins, France : Discrete Mathematics and Theoretical Computer Science, 2007. — jun.— P. 137-156. — URL: https://hal.inria.fr/hal-00406166.
[12] Inclusion Dependency Discovery: An Experimental Evaluation of Thir­teen Algorithms / Falco Dursch, Axel Stebner, Fabian Windheuser et al. — CIKM ’19.— New York, NY, USA : Association for Comput­ing Machinery, 2019.— P. 219-228.— URL: https://doi.org/10. 1145/3357384.3357916.
[13] Kruse Sebastian, Papenbrock Thorsten, Naumann Felix. Scaling Out the Discovery of Inclusion Dependencies // Datenbanksysteme fur Business, Technologie und Web (BTW), 16. Fachtagung des GI-Fachbereichs ”Datenbanken und Informationssysteme” (DBIS), 4.­6.3.2015 in Hamburg, Germany. Proceedings / Ed. by Thomas Seidl, Norbert Ritter, Harald Schoning et al. — Vol. P-241 of LNI. — GI, 2015. — P. 445-454. — URL: https://dl.gi.de/20.500.12116/2421.
[14] Leitner-Ankerl Martin. Comprehensive C++ Hashmap Bench­marks 2022.— URL: https://martin.ankerl.com/2022/08/27/ hashmap-bench-01 (дата обращения: 2022-05-1).
[15] Olist, Sionek Andre. Brazilian E-Commerce Public Dataset by Olist. — 2018. — URL: https://www.kaggle.com/dsv/195341.
...


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ