Поиск в больших файлах csv

91
04 сентября 2019, 22:20

Хочу создать приложение поиска информации о авто и его владельце по автомобильном номере. В публичном доступе есть файлы реестра с 2013 года в формате csv в которых и нужно проводить поиск. Они тут Ссылка . Так вот очень важный вопрос где держать эти файлы так как они очень большие каждый 500+ МБ. В ресурсах приложения не вариант ведь? Думаю в firebase storage..но не знаю как реализовать поиск в этих файлах. Пользователь вводит только номер автомобиля после чего нужно как то найти этот номер в файлах csv и вывести пользователю всю информацию которая есть. Помогите разобраться в данной теме буду очень благодарен!

Answer 1

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

Я думаю вам нужно просто заимпортировать CSV в какую либо БД (например: import-csv-file-mysql-table). После чего уже работать с БД на сервере через JDBC/Hibernate/Spring Data/что душе угодно. Если данные в CSV не обновляются - это лучший вариант.

Если же данные в CSV обновляются тут уже сложнее. Можно попробовать как в этой теме обсуждается best-efficient-way-to-search-a-large-csv-in-java. Но это уже отдельная тема.

И да, от сервера вы не убежите конечно, мало кто захочет устанавливать приложение весом в несколько гигабайт, да и поиск будет не быстрый. Можно попробовать обойтись и без сервера, например импортировать данные в какую нибудь Cloud базу данных. Например firebase или Cloud SQL. Но эту тему нужно изучать, права доступа настроить обязательно. В общем тоже отдельный вопрос.

READ ALSO
Помогите исправить код java

Помогите исправить код java

Написал часть кода, задача написана нижеНо он не работает

128
Проблема Line height с элементами inline-block

Проблема Line height с элементами inline-block

По непонятной причине теги <a> не применяют собственную line height, а вместо этого используют родительские line heightОн применяется только в том...

139