База даних публічних реактивних функціональних сигналів
DOI:
https://doi.org/10.20535/1560-8956.45.2024.313200Ключові слова:
база даних, реактивне програмування, сигнали, функціональне програмування, ефекти, події, черги повідомленьАнотація
Об’єктом дослідження є процеси комунікації між функціональними компонентами програмного забезпечення інформаційних систем. Мета полягає у підвищенні ефективності комунікації між компонентами таких систем та коректної синхронізації їх станів. Сформульована проблема підвищення ефективності комунікації між функціональними компонентами складних систем з мікросервісною архітектурою, та коректної синхронізації їх станів. У процесі аналізу існуючих підходів до вирішення сформульованої вище проблеми встановлено, що найпростішим способом комунікації між сервісами є REST API, але він не дозволяє зробити мікросервіси достатньо ізольованими, не гарантує доставку, отримання й зберігання повідомлень про транзакцію/зміну стану. Частину цих вимог задовольняють система повідомлень, такі як StormMQ, RabbitMQ, Apache Kafka та інші. Але вони не забезпечують зберігання даних, що не є повідомленнями. СКБД, наприклад MongoDB, надають певну гарантію доставки за рахунок «потоків змін» та журналу операцій, але вони дуже чутливі до налаштувань журналу. Обґрунтовано доцільність вирішення проблеми шляхом розповсюдження оновлень за допомогою стійких реактивних значень (сигналів). Запропонований підхід до вирішення проблеми на основі бази даних спеціальної структури та клієнтської бібліотеки-компаньйона, що поєднують у собі підхід до архітектури, керованої подіями, та функціональні реактивні сигнали. База даних публічних сигналів автоматично сповіщає підписників про зміни у значеннях та їх дочірніх вузлах. Запропоновано архітектуру рішення і концепцію його реалізації, варіант двійкового представлення шляху до вузлів у базі даних, описано алгоритми поведінки системи керування базами даних та клієнтських бібліотек стосовно публікації та оновлення даних у базі даних. Розроблено частковий прототип системи керування базами даних та бібліотеки для фреймворку SolidJS. Щоб розширити сценарії використання та варіанти міжсервісної комунікації, урізноманітнити поведінку застосунків-клієнтів, планується: розробити спеціальний двосторонній протокол зв’язку, до динамічної типізації даних додати статичну, розширити вибір примітивних типів і уможливити зберігання похідних сигналів та сигналів-тригерів, розробити інтерпретовану мову програмування, яка б дозволила виконувати комбінування сигналів у похідні. Для розподілених систем необхідно також реалізувати стійкі черги повідомлень для підписників, аби вони не втрачали послідовність змін у разі відмови клієнта або системи керування базами даних.
Бібл. 15, іл. 9.
Посилання
Моренець С. Особливості event-driven architecture на прикладах з практики. DOU.ua. URL: https://dou.ua/forums/topic/38182/.
Redis Ltd. Redis. Version 7.2.5. 2024. URL: https://redis.io/.
Redis keyspace notifications. Redis - The Real-time Data Platform. URL: https://redis.io/docs/latest/develop/use/keyspace-notifications/.
Linux Foundation. Valkey. Version 7.2.5. 2024. URL: https://valkey.io/.
Supabase Inc. Supabase. Version 1.24.4. 2024. URL: https://supabase.com/.
Subscribing to Database Changes. Supabase Docs. URL: https://supabase.com/docs/guides/realtime/subscribing-to-database-changes.
MongoDB, Inc. MongoDB. Version 7.3.2. 2024. URL: https://www.mongodb.com/.
MongoDB, Inc. Change streams. MongoDB Manual v7.0. URL: https://www.mongodb.com/docs/manual/changeStreams/.
Broadcom Inc. RabbitMQ. Version 3.13.3. URL: https://www.rabbitmq.com/.
Broadcom Inc. RabbitMQ Documentation. RabbitMQ. URL: https://www.rabbitmq.com/docs.
Kamina T., Aotani T. An approach for persistent time-varying values. SPLASH '19: 2019 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity, Athens Greece. New York, NY, USA, 2019. URL: https://doi.org/10.1145/3359591.3359730.
Kamina T., Aotani T. Harmonizing Signals and Events with a Lightweight Extension to Java. The Art, Science, and Engineering of Programming. 2018. Vol. 2, no. 3. URL: https://doi.org/10.22152/programming-journal.org/2018/2/5.
Kamina T., Ueno S. Distributed Persistent Signals: Architecture and Implementation. REBLS '22: 9th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems, Auckland New Zealand. New York, NY, USA, 2022. URL: https://doi.org/10.1145/3563837.3568341.
RRB vector: a practical general purpose immutable sequence / N. Stucki et al. ACM SIGPLAN Notices. 2015. Vol. 50, no. 9. P. 342–354. URL: https://doi.org/10.1145/2858949.2784739.
Carniato R. SolidJS. Version 1.8.17. 2024. URL: https://www.solidjs.com/.
##submission.downloads##
Опубліковано
Номер
Розділ
Ліцензія
Автори залишають за собою право на авторство своєї роботи та передають журналу право першої публікації цієї роботи на умовах ліцензії Creative Commons Attribution License, котра дозволяє іншим особам вільно розповсюджувати опубліковану роботу з обов'язковим посиланням на авторів оригінальної роботи та першу публікацію роботи у нашому журналі.
2. Автори мають право укладати самостійні додаткові угоди щодо неексклюзивного розповсюдження роботи у тому вигляді, в якому вона була опублікована нашим журналом (наприклад, розміщувати роботу в електронному сховищі установи або публікувати у складі монографії), за умови збереження посилання на першу публікацію роботи у нашому журналі.
3. Політика журналу дозволяє і заохочує розміщення рукопису роботи авторами в мережі Інтернет (наприклад, на arXiv.org або на особистих веб-сайтах). Причому рукописи статей можуть бути розміщенні у відкритих архівах як до подання рукопису до редакції, так і під час його редакційного опрацювання. Це сприяє виникненню продуктивної наукової дискусії, позитивно позначається на оперативності ознайомлення наукової спільноти з результатами Ваших досліджень і як наслідок на динаміці цитування вже опублікованої у журналі роботи. Детальніше про це: The Effect of Open Access.