Схемы базы

Сколько вики не читал и Котяру не спрашивал, нормального понимания у меня так и не сложилось. Объясните, плиз.

Сначала что, собственно, нужно: возможность из реплицируемой базы (читай: того, что подняли на первом сервере Рамблера), быстро вытаскивать OSM объекты (точки с тэгами, веи и отношения) для заданного bbox.

Теперь что я (не)понял: osmosis’ом реплицируется OSM’овская схема, которая http://wiki.openstreetmap.org/wiki/Database/Model. Но там индексы только по ID. Есть также мапниковская схема, которая не реплицируется (?), а закачивается целиком (?) osm2pgsql - вот там rtree индексы по bbox’ам, но данные уже как-бы не осмовские (т.е. отношений уже нет, полигоны хранятся не списком id вершин, а списком координат точек, и, например, уже нельзя сказать что POI принадлежит полигону и т.д.). Тогда как работает API, которое и осмовские данные и, очевидно, индексы по bbox, и, соответственно, как решается исходная задача?

Рассказываю: есть два типа баз, создаваемых осмосисом на основе планеты

  • база АПИ
  • база постгис-симпл

База апи - это полная калька с того, что крутится на серерах ОСМа.
База постгис-симпл это особая схема, в которой используются прелести постгиса, такие как, в частности индексы по геометриям.

На сервера рамблера поднята база номер раз. Выдергивание из нее ббокса делается жуткими джоинами на основе координат точек. Отсюда тормозность работы апи и ограничение по размеру ббокса.

Но! Сразу по окончании импорта данных в первую базу я намерен поднять там и вторую тоже. И вот в ней уже есть геометрии для точек и веев, индексы по ним. То есть запросы по ббоксу или точка-в-полигоне делаются средствами постгиса (GEOS если быть точнее), а не джоинами. Что в разы быстрее.

Вот как-то так…

Да, есть еще мапниковская, но она не реплицируется осмосисом, и я с ней не работал никогда. Отсюда про нее ничего рассказать не могу.

Во, спасибо. А есть где про эту схему почитать?

Так в дистрибутиве осмосиса лежит скрипт для ее созлания, в папке scripts. Там три - сама схема, геометрии типа linestring, геометрии типа bbox.