@iamFake

Форматы данных для текста и вложений?

Здравствуйте.

Программа на Qt, есть форма с текстовыми, числовыми данными и датами, а так же есть возможность загружать вложения. Текстовых (и иных) полей под сотню. Вложение вплоть до 500 мб и общее кол-во не ограничено. На данный момент разработки сохраняется только текстовые данные в виде Binary JSON (внутренний формат Qt). Думаю как сохранять вложения сохраняя эффективный доступ к текстовым данным (при сохранении изменений).

На данный момент в мыслях создание двух файлов - первый это собственно JSON с текстом и "ссылками" на вложения. "Ссылка" из себя представляет обычный offset из второго файла. Второй файл по сути просто "свалка" всех вложений с известным offset (2 байта на идентификатор, 4 байта на длину, само содержимое и повтор для следующего файла).

Если писать в файл структуру с текстом и следом структуру с вложениями - то при увеличении текста при следующем сохранении придется создавать новый файл и записывать в него все вложения из старого (если будут 10 вложений по 300 мб то чтение из одного в другой с последующим удалением первого выглядит не очень разумно\эффективно).

Если писать сначала структуру с вложениями, а потом структуру с текстом - уже не будет перезаписи больших объемов при изменении текста и на момент записи структуры данных будут известны все offset'ы вложений, но при удалении одного вложения все же будет перезапись.

Какие best practice для таких случаев? В С++ еще относительно новичок и с форматами файлов знаком слабо.
  • Вопрос задан
  • 198 просмотров
Пригласить эксперта
Ответы на вопрос 1
Имхо, в таких случаях лучше использовать БД, например тот же sqlite.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы