У меня есть приложение, которое позволяет анализировать файл.Допустим, они хотят проанализировать CSV-файл объемом 1 ГБ.Как работает приложение, оно сохраняет предварительный просмотр файла размером 5 МБ - только первые 5 МБ данных в файле - и позволяет им применять к нему настройки, например: что такое separator
, что такое quotechar
и т. д.
Мой вопрос: как лучше всего хранить эти данные?Самым простым примером, который я могу придумать, будет:
- file_id (id)
- filename (varchar)
- file_url (varchar)
- [various file settings]
- data (longtext or blob)
Таким образом, всякий раз, когда пользователь хочет сохранить новый параметр, мы применяем преобразование к сохраненному data
.
Тем не менее, я вижу две проблемы с этим:
Сама строка будет очень большой и, вероятно, будет храниться лучше так:
file
- file_id (id)
- имя файла (varchar)
- file_url (varchar)
- [различные настройки файла]
file_data
Таким образом, только если я запрашиваютаблица непосредственно мне нужно загрузить все эти данные.
Требуется нетривиальное количество времени для загрузки 5 МБ данных по сети (будь то ссылка или большой двоичный объект).Для этого я думал использовать что-то вроде кэша redis для
file_id:5_mb_data
, но мне в конечном итоге понадобится
ton места для этого.
Что может быть хорошим способом для хранения вышеупомянутого, чтобы я мог быстро создавать предварительный просмотр файла на лету?
Я храню файлы наGCS, и для того, чтобы получить какой-либо из них (будь то полный файл или 5 МБ), мне нужно загрузить его локально.