У меня есть большой объем данных, которые я извлекаю из XML-файла, и все они должны быть проверены друг на друга (более 500 000 записей). Это данные о местоположении, поэтому в нем есть такая информация, как: округ, префикс улицы, суффикс улицы, название улицы, номер начального дома, номер конца. Имеются дубликаты, совпадения номеров домов и т. Д., И мне необходимо сообщить обо всех этих данных (например, о проблемах). Кроме того, нет никакого упорядочения данных в файле XML, поэтому каждая запись должна сопоставляться со всеми остальными.
Прямо сейчас я создаю словарь местоположения на основе информации о названии улицы, а затем сохраняю список номеров домов, начальных и конечных местоположений. После всего этого я перебираю массивную структуру данных, которая была создана, чтобы найти дубликаты и совпадения в каждом списке. У меня проблемы с размером структуры данных и количеством возникающих ошибок.
Одним из решений, которое мне было предложено, было создание временной базы данных SQLite для хранения всех данных при их чтении из файла, а затем через базу данных, чтобы найти все проблемы с данными, сообщить о них, а затем уничтожить DB. Есть ли лучший / более эффективный способ сделать это? И какие-нибудь предложения по лучшему подходу к этой проблеме?
Как к сведению, xml-файл, в котором я читаю, имеет размер более 500 МБ (в нем хранятся другие данные, помимо этой информации об улицах, хотя это большая часть), но обработка файла не там, где я работаю в проблемы, это только при обработке данных, полученных из файла.
РЕДАКТИРОВАТЬ: Я мог бы вдаваться в подробности, но постер, который упомянул, что в памяти достаточно места для данных, был действительно верным, хотя в одном случае мне приходилось проверять 3,5 миллиона записей, в этом случае Мне нужно было создать временную базу данных.