Большинство примеров RxJava, которые я вижу, связаны с сетевыми вызовами. Я новичок в этой среде, поэтому мне интересно, имеет ли смысл использовать ее для чего-то вроде параллельного анализа файлов. У меня есть каталог файлов, данные которых мне нужно разобрать в таблицы SQL. Могу ли я сделать это с помощью RxJava? Я бы хотел, чтобы он был как можно более многопоточным для повышения эффективности.
Описание данных
Мои данные имеют иерархическую структуру, которая начинается с набора разделов. Каждый раздел содержит один или несколько подразделов. Каждый подраздел содержит один или несколько файлов HTML.
Таблицы SQL
sqlite> SELECT * FROM sections;
_id ordinal title
---------- ---------- ----------
1 1 Management
2 2 Emergency Preparedness
-- имеет внешний ключ, ссылающийся на таблицу разделов
sqlite> SELECT * FROM subsections;
_id ordinal chapter_id title
---------- ---------- ---------- ----------
1 A 1 General
2 B 1 Resources
-- имеет внешние ключи, которые ссылаются на таблицу разделов и подразделов
sqlite> SELECT * FROM html;
_id chapter_id subsection_id number html_filename
---------- ---------- ---------- ---------- --------------
1 1 1 1 /1a-1.html
2 1 1 2 /1a-2.html
3 1 1 3 /1a-3.html
4 1 1 4 /1a-4.html
5 1 2 1 /1b-1.html
6 2 2 1 /2a-1.html
7 2 2 2 /2a-2.html
8 2 2 1 /2b-1.html
Поле _id представляет собой автоматически увеличивающийся первичный ключ (он не будет каждый раз совпадать с порядковым номером). Таблица subsections зависит от получения первичного ключа для соответствующего раздела. Это означает, что после вставки раздела 1 можно вставлять разделы 1a, 1b, 1c и т. д. (но не 2а)
Структура каталогов
//Section 1
/1.title
//Subsection A
/1a.title
//html files for 1a
/1a-1.html
/1a-2.html
//Subsection B
/1b.title
//html files for 1b
/1b-1.html
/1b-2.html
//Section 2
/2.title
/2a.title
//..etc
Каждая вставка SQL может быть создана с помощью класса компоновщика Java, который для /1b-2.html будет выглядеть так:
db.insert(HTML_TABLE, null, new HTML.Builder()
.chapterId(section1)
.letterId(subsectionB)
.number(2)
.build());
В итоге у меня будет около 50-60 разделов, но каждая SQL-вставка целого раздела, его подразделов и их HTML-файлов может быть вставлена параллельно. Имеет ли смысл использовать RxJava для чего-то подобного?