Является ли Hive гарантированным хранилищем данных и могут ли данные потеряться
Что проверяют
Понимаете ли вы гарантии локального хранилища, которое сами же и подключили. Hive это встроенная key-value база для Dart: коробки лежат файлами в песочнице приложения, обёртки над ней часто держат состояние экрана и кеш ответов. Речь именно про эту библиотеку, а не про одноимённое хранилище из экосистемы Hadoop.
За вопросом стоит проверка зрелости: считаете ли вы локальную базу источником правды и что произойдёт с данными, если процесс убьют посреди записи.
Как отвечать
Сначала механика. Hive пишет лог-структурно: операции дописываются в конец файла коробки, чтение идёт из памяти (обычный Box держит значения в памяти целиком, LazyBox достаёт по ключу), а мусор от перезаписанных и удалённых ключей убирает уплотнение.
Дальше про гарантии. Транзакций и отката нет: две связанные записи могут оказаться на диске по отдельности. Операции асинхронные, и пока Future не завершился, данные на диск не легли; box.flush() форсирует сброс.
Сценарии потери назовите списком: процесс убит системой между записью и сбросом, сбой во время уплотнения портит файл, изменение модели без согласования адаптера ломает чтение старой коробки, пользователь стирает данные приложения или переустанавливает его, каталог выбран в кеше и вычищен системой.
Вывод: Hive это быстрый локальный кеш и состояние, а не гарантированное хранилище. Всё, что нельзя потерять, уходит на сервер или в SQLite (sqflite, Drift), где есть транзакции.
Где спотыкаются
Отвечают «да, данные сохранятся», приравнивая Hive к СУБД с ACID. Ни атомарности группы операций, ни отката тут нет, и первый же вопрос про сбой посреди записи это вскрывает.
Пишут без await, по принципу «положил и забыл». На эмуляторе всё сходится, а на устройстве система выгружает приложение из фона, и последние записи не доезжают.
Не думают про совместимость адаптеров. Смена идентификатора типа или порядка полей модели ломает чтение коробок на телефонах пользователей, и данные пропадают при обновлении приложения, а не при аварии. Нужна версия схемы и миграция.