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##
Опубліковано
Як цитувати
Номер
Розділ
Ліцензія
Авторське право (c) 2024 М. І. Глебена, А. В. Макарович
Ця робота ліцензується відповідно до Creative Commons Attribution 4.0 International License.
Автори залишають за собою право на авторство своєї роботи та передають журналу право першої публікації цієї роботи на умовах ліцензії Creative Commons Attribution License, котра дозволяє іншим особам вільно розповсюджувати опубліковану роботу з обов'язковим посиланням на авторів оригінальної роботи та першу публікацію роботи у цьому журналі.