SingleStoreDB конектор для Apache Beam

Автор(и)

DOI:

https://doi.org/10.24144/2616-7700.2024.44(1).66-82

Ключові слова:

база даних, конектор, розподілені системи, ETL, Apache Beam, SingleStore, OLAP, OLTP

Анотація

В статті досліджено процес розробки SingleStoreDB конектора для Apache Beam та складнощі, які виникли під час цього процесу. Для реалізації конектора використано мову програмування Java. Для компіляції та менеджменту залежностей проекту використано систему автоматичного збирання Gradle. Для забезпечення неперервного тестування конектора використано інструмент для неперервної інтеграції Jenkins. Задля комунікації із базою даних використано бібліотеку SingleStore JDBC Driver. Об'єктом дослідження обрано процес обміну даних між Apache Beam та SingleStoreDB. Предметом дослідження є конектор, що дозволяє ефективно обмінюватись даними між Apache Beam та SingleStoreDB. Для розробки конектора проаналізовані вимоги до нього. Продемонстровано, що основними вимогами є можливість паралельного запису даних, можливість паралельного читання даних за допомогою розподілених властивостей SingleStoreDB, можливість виконати запити читання даних непаралельно для специфічних запитів. Досліджено можливість використання різних способів паралельного читання та запису даних. Згідно досліджень найоптимальнішим способом паралельного читання є розбиття запиту на декілька незалежних використовуючи певну колонку. Найоптимальнішим способом запису даних є використання запиту LOAD DATA. На відміну від INSERT запиту надсилає дані як окремий потік байтів, а не як частину запиту. За рахунок цього, дані можна відправляти набагато більшими групами. Протестовано конектор та налаштовано систему неперервної інтеграції. Розроблено документацію та інтегровано конектор в GitHub репозиторій Apache Beam. Розроблений конектор може бути використаний для ETL процесів під час яких Apache Beam відповідає за обробку та збереження даних в SingleStoreDB, що надає зручніший спосіб конфігурації та кращу продуктивність в порівнянні із JdbcIO конектором. Результати досліджень можуть бути використані для створення конекторів між іншими технологіями та СКБД SingleStoreDB.

Посилання

Adalbert, M. SingleStore Apache Beam IO Connector Design Doc. Retrieved from: https://docs.google.com/document/d/1WUhkoZ93SaGXyOz_UtX0jXzIRl194hCId_IdmEV9jw/edit#heading=h.wskna8eurvjv

Akmal, Ch. Quicktip: Using Apache Beam with SingleStoreDB. Retrieved from: https://medium.com/@VeryFatBoy/quick-tip-using-apache-beam-with-singlestoredb-452d4256a7ca

Apache Beam Overview. Retrieved from: https://beam.apache.org/get-started/beamoverview/

Automate your workflow from idea to production. Retrieved from: https://github.com/features/actions

Basics of the Beam model. Retrieved from: https://beam.apache.org/documentation/basics/

Cluster Components. Retrieved from: https://docs.singlestore.com/db/v8.0/en/introduction/distributed-architecture/cluster-components.html#cluster-components

Contribution Testing Guide. Retrieved from: https://cwiki.apache.org/confluence/display/BEAM/Contribution+Testing+Guide

Developing I/O connectors for Java. Retrieved from: https://beam.apache.org/documentation/io/developing-io-java/

[Template] Apache Beam Design Doc. Retrieved from: https://docs.google.com/document/d/1kVePqjt2daZd0bQHGUwghlcLbhvrny7VpflAzk9sjUg/

edit?usp=sharing

I/O Standards. Retrieved from: https://beam.apache.org/documentation/io/io-standards/

Interaction of Cluster Components. Retrieved from: https://docs.singlestore.com/db/v8.0/en/introduction/distributed-architecture/interaction-of-cluster-components.html#interaction-ofcluster-components

Jeffrey Deanand Sanjay Ghemawat. MapReduce: Simplified Data Processingon Large Clusters. To appear in OSDI 2004. Retrieved from: https://static.googleusercontent.com/media/research.google.com/uk//archive/mapreduceosdi04.pdf

Jenkins. Retrieved from: https://www.jenkins.io/

JosephVictor. Engineering. The future is bottomless. Retrieved from: https://www.singlestore.com/blog/the-future-is-bottomless/

Overview: Developing a new I/O connector. Retrieved from: https://beam.apache.org/documentation/io/developing-io-overview/

I/O Connectors. Retrieved from: https://beam.apache.org/documentation/io/connectors/

SingleStore Documentation. Retrieved from: https://docs.singlestore.com/managedservice/en/reference/sql-reference/data-manipulation-language-dml/insert.html

SingleStore LOAD DATA. Retrieved from: https://docs.singlestore.com/managedservice/en/reference/sql-reference/data-manipulation-language-dml/load-data.html

SingleStore Read Query Results in Parallel. Retrieved from: https://docs.singlestore.com/managed-service/en/query-data/read-query-results-inparallel.html

SingleStore. Retrieved from: https://download.oracle.com/otn-pub/jcp/jdbc-4_2-mrel2-spec/jdbc4.2-fr-spec.pdf?AuthParam=1683632646_268549c0a0b191629570c83d4e48b211

SingleStore. Load Data from Apache Beam. Retrieved from: https://docs.singlestore.com/managed-service/en/load-data/load-data-from-a-datasource/load-data-from-apache-beam.html

THE APACHE SOFTWARE FOUNDATION ANNOUNCES APACHE® BEAM TM AS A TOP-LEVEL PROJECT. Retrieved from: https://news.apache.org/foundation/entry/theapache-software-foundation-announces

The SingleStore JDBC Driver. Retrieved from: https://docs.singlestore.com/managedservice/en/developer-resources/connect-with-application-development-tools/connect-withjava-jdbc/the-singlestore-jdbc-driver.html#connection-string-parameters

Universal Storage. Retrieved from: https://docs.singlestore.com/db/v8.0/en/create-adatabase/columnstore/universal-storage.html

Why Apache Beam is the next big thing in big data processing. Retrieved from: https://medium.com/@shafiqa_iqbal/why-apache-beam-is-the-next-big-thing-in-bigdata-processing-808abacf52f1

SingleStoreDB I/O. Retrieved from: https://beam.apache.org/documentation/io/builtin/singlestore/

##submission.downloads##

Опубліковано

2024-05-28

Як цитувати

Глебена, М. І., & Макарович, А. В. (2024). SingleStoreDB конектор для Apache Beam. Науковий вісник Ужгородського університету. Серія «Математика і інформатика», 44(1), 66–82. https://doi.org/10.24144/2616-7700.2024.44(1).66-82

Номер

Розділ

Iнформатика, комп’ютернi науки та прикладна математика