citec-spbu / Spatial-Data-ETL

Автоматизация сбора и обработки пространственных данных
0 stars 0 forks source link

Обновление данных #34

Closed TigranNice closed 6 months ago

TigranNice commented 6 months ago

Это остается в силе

не хватает ключевой функции, которая будет

  • скачивать текущий state.txt
  • идти в цикле видимо от самых новых к более старым дифф файлам и брать их state.txt
  • сравнивать эти state.txt со временем последнего обновления (которое надо где-то хранить или уметь как-то получать из базы) и понимать когда нужно остановиться

Все остальное не так сильно важно

Этот скрипт пока неясно как должен выглядеть. Сначала сделаем всю работу по бд и уже после решим как нам удобнее будет применять дельты

nikita03565 commented 6 months ago

Этот скрипт пока неясно как должен выглядеть. Сначала сделаем всю работу по бд и уже после решим как нам удобнее будет применять дельты

А я не говорю про их применение. Говорю только про их скачивание и сохранение в нужные папочки. Типа настроили обновляться каждые 5 дней, значит нужно скачать 5 osc файлов с момента прошлой синхронизации до последного самого актуального

Реализация такого скачивания невозможна пока не поймете какая будет структура бд? @TigranNice

TigranNice commented 6 months ago

Этот скрипт пока неясно как должен выглядеть. Сначала сделаем всю работу по бд и уже после решим как нам удобнее будет применять дельты

А я не говорю про их применение. Говорю только про их скачивание и сохранение в нужные папочки. Типа настроили обновляться каждые 5 дней, значит нужно скачать 5 osc файлов с момента прошлой синхронизации до последного самого актуального

Реализация такого скачивания невозможна пока не поймете какая будет структура бд? @TigranNice

Раз в 5 дней не получиться. Скачивать надо каждый день. А вот применять дельты уже можно в любой момент.

image Надо каждый день, потому что state.txt каждый день обновляется, и если не скачивать каждый день обновления, то мы потеряем данные

nikita03565 commented 6 months ago

@TigranNice этот state.txt это самый последний. А все предыдущие же хранятся внутри папок. каждый {number}.state.txt соответствует своему {number}.osc файлу. чтобы обновляться каждые условно 5 дней не нужно каждый день что-то скачивать. зная текущий state и время последней синхронизации можно вычислить какие файлы нужно скачать и сравнить по датам, которые в этих {number}.state.txt указаны https://download.geofabrik.de/russia-updates/000/003/ image

TigranNice commented 6 months ago

Я понимаю. Но как я буду отслеживать? Я могу хранить последний скачанный номер, а потом +1 делать и скачивать всё, пока не будет ошибки. Но это звучит как костыль

TigranNice commented 6 months ago

Всё, я понял как сделаю. Чуть позже скину код

nikita03565 commented 6 months ago

@TigranNice или сначала опишите текстом https://github.com/citec-spbu/Spatial-Data-ETL/issues/20#issuecomment-2056485406 иногда это помогает упорядочить мысли и писать реализацию становится проще

TigranNice commented 6 months ago

Берём из старого state.txt номер последнего файла. Далее берём новый state.txt. цикл проходим и берём все файлы за этот промежуток