Criar servidor próprio de geocodificação e roteamento

Boa tarde pessoal.

Tenho a necessidade de criar um servidor próprio (API) de geocodificação e roteamento, mas não sei nem por onde começar.

Preciso criar um banco de dados próprio, baixar os dados do OSM (e inserir no BD), depois usar algum algoritmo server-side para tal coisa, é isso?

Caso meu raciocínio esteja correto, qual banco de dado devo usar? Onde encontrar scripts prontos com tais funções?
Queria algo nos recursos que sou familiarizado como PHP, MySQL ou PostgreSQL… Mas se eu tiver que usar outras linguagens ou banco de dados, não tem problema.

Qualquer dica, sugestão, link de tutorial ou qualquer coisa que ajude será bem vinda.

Obrigado.

Boa tarde,
Pode ser feito utilizando Postgres/PostGis com a extensão PgRounting e Php para realizar as consultas. Porém, a base OSM não dispõe do número de logradouros para o Brasil (Nas regiões que eu busquei), então é necessário utilizar outro meio para fazer a geocodificação.
Eu ja fiz uma aplicação parecida utilizando essas tecnologias e funcionou perfeitamente.

Boa tarde

Installar OSRM (http://project-osrm.org/) fui muito fácil, so cuidar copiar todos os arquivos lua para um local onde voce vai guardar os dados de roteamento. OSRM te dar um API próprio para roteamento, e retornar os dados em formato JSON