Не буду создавать новую тему. Модераторы, можно эту переименовать в общую по osmosis
Как извлечь все адресные варианты (точки, линии, отношения) ?
У меня получилось так:
Действительно, переход на pbf позволил ускорить извлечение в 5 раз. А вот применение фильтров, не дало заметного ускорения. Экспериментировал по 5 запросов на каждый вариант. Спасибо за подсказку.
Добрый день. Появился вопрос. osmosis не умеет файл изменений фильтровать? И если не уметт то чтобы записать изменения объектов определенного типа в базу придется поддерживатьв актуальном состоянии pbf фаил? Задача стоит поддерживать в актуальном состоянии базу poi используя файлы изменений ежедневных дампов.
Ну так сам же сказал всё хранить в оперативной памяти: nodeLocationStoreType=InMemory
Поставь TempFile или CompactTempFile - будет хранить во временном файле. А расходуется на временное хранилище узлов для сборки объектов геометрии и для подсчёта bbox-ов. В osm формате вся геометрия лежит в разобранном виде, а для базы нужны уже собранные.
Кроме того, java считает, что память можно занимать по своему усмотрению в рамках от -Xms до -Xmx, так что она может занимать просто для того чтобы пореже делать сборку мусора а не для реального хранения данных.
Нет, не в этом дело. DOM там не используется, там своя модель данных, а обработка конечно потоковая. Но особенности osm-овского формата часто требуют временного хранения объектов, чтобы не делать много проходов.
Не факт, что там 16 раз, скорей всего меньше. Точные значения можно посмотреть если подцепиться к работающему osmosis-у через jconsole. Там будет видно сколько памяти реально используется.
Но в памяти объекты обычно больше места занимают, чем на диске - это да. К примеру, все строки (т.е. все значения ключей и тегов) в памяти хранятся в виде 16-разрядного несжатого unicode, что обычно занимает больше места чем UTF-8 на диске.
Ну понятное дело, что память быстрее диска. Но если памяти жалко или не хватает - приходится использовать диск.
Памяти как раз не жалко. И теперь же все насквозь виртуальное, снизу доверху, причем несколько раз.
В наличие есть следующая архитектура
Физическая RAM (4 или 8 Гб) – SSD 64 Гб, на нем файл подкачки – жесткий диск 1 Tб.
Поэтому хотелось бы использовать именно память по максимуму.
просто наблюдение: если вы на многопроцессорной (многоядерной) системе из одного большого файла разом режете несколько мелких через --tee, то наилучшая производительность достигается если не буфферизовать (–b) перед --tee, но ставить --b перед каждым --bb.