postgresql + osmosis

Попробую здесь поделиться опытом по установке и настройке сабжа, ибо подводных камней вылезает немеряно.

Итак имеем: Ubuntu 9.10 x64, rails_port (ставился по вики-инструкции, мелкие нюансы по установке пакетов, большие нюансы по установке постгиса 1.5, решенные гуглованием, точно не воспроизведу - суть в том, что накатывание на базу постгисных функций делается не так, как описано в вики + нужно накатить на базу btree_gist.sql из пакета contrib, иначе потом индексы не строятся).

База создана из rails_port при помощи db:migrate. В отличие от мускловой создается без ошибок при правильной установке rails_port.

Дамп структуры: http://probki77.ru/osm/osm_20100315.rar

Долго и вдумчиво курил дев-лист, результат - импорт оптимально делать с отключенными индексами. Но не всеми. Сейчас экспериментирую, по результатам выложу скриптик для прибивания и восстановления мешающих индексов.

Сейчас запустил импорт, на многоядерном проце оказался полезным осмосисовский ключ -b, задействованы все 4 ядра. Скорость импорта порядка 15000 нодов в секунду. Посмотрим, что будет на веях, там ясно упадет, интересно насколько. (С индексами скорость импорта на нодах не превышала 2000, а потом падала до 300 нодов в секунду).

Мда. Простой снос индексов не пролез - заполнение current_ таблиц идет дико медленно. Единственный вариант - вносить изменения в осмосис, чтобы он строил индексы после импорта перед заполнением current_. Блин, начать что ли java изучать?

Ezhick, Отличная тема!! Спасибо! Такой тутор очень нужен!

Помню сколько я не мучился, так ничего толком не получилось… туторов хороших нет, даже дамп структуры базы в вики валялся неактуальный.
После долгих мучений я забил на постгис, хочу как-нибудь на досуге поэкспериментировать с MongoDB… уж больно она мне понравилась.
Хочу распилить векторные данные на уровни детализации по аналогии с растром, чтобы иметь возможность рендерить данные на лету с любым масштабом.

**PS:**Буду следить за темой. Также предлагаю её прикрепить! Ведь туторов для осмодевелоперов даже на инглише почти нет…

Да, про схему - актуальную схему из rails_port осмосис все одно считает неактуальной - он не знает о нескольких последних миграциях. Поэтому даже на ней его приходится запускать с ключем validateshemaversion=no, иначе валится с ошибкой.

Запущенное параллельно импорту создание индексов принесло свои плоды - по состоянию на полночь нодов было в таблице current_nodes порядке 400 000 штук, после создания индекса для таблицы nodes заливка пошла шустрее и за ночь все 600 с гаком миллионов залились. Параллельно строились остальные индексы и дальше заливка явно идет достаточно шустро.

INFO: Total execution time: 95736391 milliseconds.

То есть 26 с половиной часов, но еще не все индексы построились. Если бы модифицировать осмосис и добавить в процедуру импорта между заливкой исторических и текущих таблиц построение индексов по историческим таблицам - скорость еще бы возрасла.