Как правильно использовать большие(возможно) данные из android room бд kotlin?

Рейтинг: 1Ответов: 0Опубликовано: 09.05.2023

Делаю одно тестовое задание, в котором нужно реализовать файловый менеджер с индексацией содержимого файлов и при каждом запуске проверять, что изменилось. Есть база данных, в которой храняться сущности:

data class FileHash(@PrimaryKey val path: String, val hash: String)

И я не понимаю, как лучше сделать эту индексацию. При входе я должен проходиться по всем файлам устройства при помощи File("/data").walkTopDown().forEach {...} а дальше по пути файла находить его предыдущий хэш из бд и сравнивать. И вот вопрос, как лучше получать этот хэш:

  1. Каждый раз обращаться к бд и получать один FileHash
  2. Получить и сохранить все записи как Flow<List<FileHash>>, как-то захэшировать path(пока тоже не знаю как) и обращаться уже не к бд, а к этой коллекции(потоку?)

Но я подумал, что во втором варианте может быть большой объем данных, с чем будет не очень эффективно работать. В котлине для этого есть последовательности, но что-то так и не смог придумать, как это правильно реализовать проход и по файлам, и по этой последовательности. Или уже сам возвращаемый Flow<List<FileHash>> является подходящим для работы с большими объемами?

Ответы

Ответов пока нет.