Побудова розподілених суфіксних дерев
DOI:
https://doi.org/10.26642/ten-2026-1(97)-210-216Ключові слова:
суфіксне дерево, DGST, Node.js, worker_threads, SharedArrayBuffer, паралельні обчислення, MapReduce, in-memory обробка, in-memory processingАнотація
У статті розглядається задача паралельної побудови суфіксних дерев над великими текстовими масивами без використання кластерної інфраструктури. Проаналізовано еволюцію відповідних алгоритмів – від однопотокових методів Вайнера, МакКрейта та Укконена до розподілених підходів Wavefront, ER та DGST. Виявлено ключове обмеження алгоритму DGST, реалізованого на платформі Apache Spark: суттєві накладні витрати на серіалізацію даних та I/O-звернення до розподіленої файлової системи HDFS. Запропоновано архітектуру адаптації алгоритму DGST до середовища Node.js на основі модуля worker_threads та механізму SharedArrayBuffer. Структурна трансформація забезпечує відображення компонентів Spark на елементи Node.js: керуючий вузол – основний потік, виконавчий вузол – воркерний потік, HDFS – SharedArrayBuffer. Завдяки принципу нульового копіювання (Zero-Copy) та кешуванню декодованого вмісту буфера усуваються накладні витрати на серіалізацію, характерні для Spark, а архітектура переходить від I/O-bound до memory-bound моделі. Описано чотири алгоритмічні фази адаптованого методу: ініціалізація та попередня обробка, ітеративне розбиття на S-префікси, фаза Map з побудовою локальних частотних префіксних дерев, а також Shuffle/Reduce з балансуванням навантаження на основі алгоритмів Bin Packing та Number Partitioning. Експериментальне дослідження на текстовому масиві обсягом до 2 млн рядків підтвердило приблизно лінійне зростання часу обробки відносно розміру датасету та сублінійне зростання споживання пам’яті: при чотириразовому збільшенні обсягу даних показник MemoryLimit зріс лише у 3,6 раза. Пропускна здатність системи на максимальному обсязі склала 77 132 рядки/с.
Посилання
Weiner, P. (1973), «Linear pattern matching algorithms», Proceedings of the 14th Annual Symposium on Switching and Automata Theory (SWAT), Iowa City, USA, pp. 1–11.
McCreight, E.M. (1976), «A space-economical suffix tree construction algorithm», Journal of the ACM, Vol. 23, No. (2), pp. 262–272.
Ukkonen, E. (1995), «On-line construction of suffix trees», Algorithmica, Vol. 14 (3), pp. 249–260.
Zhu, G., Guo, C., Lu, L. et al. (2019), «DGST: Efficient and scalable suffix tree construction on distributed data-parallel platforms», Parallel Computing, pp. 87–102.
GitHub (2026), sab-mapreduce repository, [Online], available at: https://github.com/allyxandraaa/sab-mapreduce
Ghoting, A. and Makarychev, K. (2009), «Serial and parallel methods for I/O efficient suffix tree construction», Proceedings of the ACM SIGMOD International Conference on Management of Data, Providence, USA, pp. 827–840.
Mansour, E., Allam, A., Skiadopoulos, S. and Kalnis, P. (2011), «ERA: efficient serial and parallel suffix tree construction for very long strings», Proceedings of the VLDB Endowment, Vol. 5, No. 1, pp. 49–60.
HDFS Architecture Guide, Apache Hadoop, [Online], available at: https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html
Tuning Spark 3.5.0 Documentation, Apache Spark, [Online], available at: https://spark.apache.org/docs/latest/tuning.html
Flick, P. and Aluru, S. (2015), «Parallel distributed memory construction of suffix and longest common prefix arrays», Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis (SC '15), Austin, TX, USA, 15–20 November, ACM, New York, pp. 16:1–16:10.
Fischer, J. and Kurpicz, F. (2019), «Lightweight distributed suffix array construction», Proceedings of the 21st Workshop on Algorithm Engineering and Experiments (ALENEX 2019), San Diego, CA, USA, 7 January, SIAM, Philadelphia, pp. 27–38.
Hlybovets, A. and Didenko, V. (2023), «Constructing generalized suffix trees on distributed parallel platforms», Cybernetics and Systems Analysis, Vol. 59, Issue 1, pp. 49–60.
Haag, M., Kurpicz, F., Sanders, P. and Schimek, M. (2025), «Fast and lightweight distributed suffix array construction», 33rd Annual European Symposium on Algorithms (ESA 2025). Leibniz International Proceedings in Informatics (LIPIcs), Vol. 351, pp. 47:1–47:18.
Casciaro, M. and Mammino, L. (2016), Node.js Design Patterns, 2nd ed., Packt Publishing Ltd, Birmingham, pp. 24–31.
Worker threads, Node.js, [Online], available at: https://nodejs.org/api/worker_threads.html
Sheludko, I. and Solanes, S.A. (2020), «Pointer Compression in V8», V8 Blog, [Online], available at: https://v8.dev/blog/pointer-compression
Bruni, C. (2017), «Fast properties in V8», V8 Blog, [Online], available at: https://v8.dev/blog/fast-properties
«SharedArrayBuffer», MDN Web Docs, [Online], available at: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer
Microsoft (2024), Private use area (PUA) characters and End-user-defined characters (EUDCs), [Online], available at: https://learn.microsoft.com/en-us/globalization/encoding/pua
Johnson, D.S. (1973), Near-optimal bin packing algorithms, 401 p.
Mertens, S. (2003), «The easiest hard problem: Number partitioning», Computational Complexity and Statistical Physics.
Manber, U. and Myers, G. (1993), «Suffix Arrays: a new method for on-line string searches», SIAM Journal on Computing, Vol. 22, No. 5, pp. 935–948.
Keller, A., «Discover Promises in Node.js», Node.js, [Online], available at: https://nodejs.org/en/learn/asynchronous-work/discover-promises-in-nodejs
Knuth, D.E., Morris Jr., J.H. and Pratt, V.R. (1977), «Fast pattern matching in strings», SIAM Journal on Computing, Vol. 6, pp. 323–350.
##submission.downloads##
Опубліковано
Як цитувати
Номер
Розділ
Ліцензія
Авторське право (c) 2026 Дмитро Володимирович Зважій, Олександра Михайлівна Малій

Ця робота ліцензується відповідно до Creative Commons Attribution-NonCommercial 4.0 International License.
Автор, який подає матеріали до друку, зберігає за собою всі авторські права та надає відповідному виданню право першої публікації, дозволяючи розповсюджувати даний матеріал із зазначенням авторства та джерела первинної публікації, а також погоджується на розміщення її електронної версії на сайті Національної бібліотеки ім. В.І. Вернадського.
