Disponível há mais de 20 anos, o PostgreSQL provou sua notável confiabilidade em casos de uso que variam de pequenos a enormes conjuntos de dados. A lista de usuários comerciais e não comerciais satisfeitos é bastante longa e, entre outros, inclui o Fundo das Nações Unidas para a Infância (UNICEF), o arquivo Creative Commons, o Skype e o BMW Group.
Seu modelo de gerenciamento de transações integrado, bem como o conjunto de tipos de dados geométricos ajudaram a destacar o software de outros desenvolvimentos, como MySQL / MariaDB, Redis ou SQLite . Neste artigo, nos concentramos na configuração do PostgreSQL 11.5 em combinação com PostGIS 2.5 .
PostGIS é a extensão espacial do PostgreSQL que adiciona funções geométricas e características geográficas ao PostgreSQL. Simplesmente falando, esses tipos de dados espaciais agem como formas e abstraem e encapsulam estruturas espaciais, como limite e dimensão. Entre outros, os novos tipos de dados disponíveis são Apontar, Superfície, e Curva.
Um dos usuários mais proeminentes de PostGIS é o Instituto Géographique Nacional (IGN) da França, que coleta, integra, gerencia e distribui informações geográficas de referência para todo o país. Desde julho de 2006, PostGIS está em uso extensivo. Até agora, o banco de dados do IGN contém mais de 100 milhões de objetos espaciais.
Iremos configurar o PostgreSQL / PostGIS no Debian GNU / Linux 10 “Buster” usando o ambiente de desktop XFCE .
Configurando PostgreSQL
Configurar o PostgreSQL DBMS em um Debian GNU / Linux requer apenas um nível moderado de conhecimento de administração de sistema. O desafio aqui é a ordem correta das etapas necessárias (consulte Recursos para obter uma lista completa com imagens). Como em todas as outras distribuições do Linux, existem configurações padrão e nomes de pacotes que podem ser um pouco problemáticos. Nós não gememos, e apenas começamos, em vez disso.
Instalando o PostgreSQL como um software
O primeiro passo é a instalação do pacote PostgreSQL. Em um terminal, você pode fazer isso da seguinte maneira:
# apt-get install postgresqlUsando o sistema de gerenciamento de configuração Chef, uma receita básica que leva ao mesmo resultado contém apenas as seguintes linhas:
pacote 'postgresql' fazer ação: instalar finalserviço 'postgresql' fazer ação: [: ativar,: iniciar] fim
Essas linhas levam à instalação do pacote postgresql (mais dependências do pacote) e habilitando o serviço de acordo. Para verificar se o serviço PostgreSQL está em execução, este comando deve fornecer uma saída positiva, então:
# service postgresql status
Concluindo a configuração da conta do administrador
O usuário postgres administra os bancos de dados PostgreSQL. A segunda etapa é finalizar essa conta e começa com a adição de uma senha às credenciais da seguinte maneira:
# passwd postgresNova Senha:
Digite novamente a nova senha:
passwd: senha atualizada com sucesso
#
O login como usuário postgres permite que você conceda a outros usuários acesso ao banco de dados PostgreSQL. Posteriormente, temos que adicionar um usuário na etapa três. Esteja ciente do fato de que tanto o sistema Linux quanto o PostgreSQL mantêm seus bancos de dados de usuário separadamente. É por isso que você deve certificar-se de que também exista um usuário regular do Linux com o mesmo nome em seu sistema, antes de habilitar o acesso ao PostgreSQL para ele.
Adicionar uma conta de usuário
A etapa quatro é feita como o usuário postgres. Mude de root para postgres e crie uma nova conta para o usuário linuxhint no banco de dados PostgreSQL com a ajuda deste comando:
postgres $ createuser -interactive linuxhintA nova função deve ser um superusuário? (s / n) n
A nova função deve ter permissão para criar bancos de dados? (s / n) n
Será que a nova função permitiu a criação de novas funções?? (s / n) n
postgres $
Em seguida, defina uma senha para o usuário linuxhint recém-criado. Faça login no shell do banco de dados usando psql e defina a nova senha usando o comando \ senha. Depois disso, digite \ q para sair do shell do banco de dados e retornar ao shell no terminal:
postgres $ psql psql (11.5 (Debian 11.5-1 + deb10u1)) Digite “help” para obter mais ajuda.postgres = # linuxhint Digite a nova senha: Digite novamente a nova senha: postgres = # postgres $
O quinto passo é a criação de um banco de dados separado para o usuário linuxhint. Para fazer isso, digite o comando createdb como usuário postgres:
postgres $ createdb linuxhintAgora, o usuário linuxhint tem seu próprio banco de dados, e pode trabalhar com ele de acordo com suas necessidades.
Adicionando PostGIS
O sexto passo consiste na instalação do pacote PostGIS. Como feito para o PostgreSQL antes, pode ser feito da seguinte maneira usando apt-get:
# apt-get install postgisComo alternativa, uma receita simples para o Chef seria esta:
pacote 'postgis' fazeração: instalar
fim
O pacote PostGIS tem uma dependência para o pacote Debian postgresql-11-postgis-2.5 scripts (instalados automaticamente) que conectam o PostGIS ao PostgreSQL e elimina uma série de etapas manuais necessárias em outras distribuições. Não importa qual dos dois métodos de instalação você escolha - apt-get ou Chef -, o gerenciamento de pacotes Debian irá certificar-se de que todos os pacotes dependentes estão instalados e configurados corretamente.
A etapa sete é a habilitação da extensão PostGIS. Conforme explicado na documentação do PostGIS, não o instale no banco de dados denominado postgres, pois este está em uso para as estruturas de dados internas do PostgreSQL, e apenas habilite-o em cada banco de dados do usuário em que você realmente precisa dele. Faça login como o usuário postgres, conecte-se ao banco de dados desejado e crie as duas extensões postgis e postgis_topology como mostrado abaixo. O comando \ c conecta você ao banco de dados desejado e CREATE EXTENSION disponibiliza a extensão desejada:
postgres = #Agora você está conectado com o banco de dados “linuxhint” como usuário “postgres”.
linuxhint = # CREATE EXTENSION postgis;CRIAR EXTENSÃO
linuxhint = # CREATE EXTENSION postgis_topology;
CRIAR EXTENSÃO
linuxhint = #
A etapa sete é para validação de que a ativação da extensão foi bem-sucedida. O comando PostgreSQL \ dx lista as extensões que estão instaladas, e tanto postgis quanto postgis_topology devem estar na lista agora.
PostGIS fornece outras extensões também. Recomendamos instalar apenas o que você precisa. Veja a documentação PostGIS para mais informações sobre as extensões.
Adicionando Dados
Tendo configurado o PostGIS com sucesso, é hora de adicionar tabelas e preenchê-las com dados. Muitos dados geográficos estão disponíveis online gratuitamente, por exemplo, da Geofabrik. Os dados são fornecidos como arquivos de forma, que é um formato de dados vetoriais comum para software GIS.
Tendo baixado o arquivo de forma, carregue o conteúdo do arquivo de forma em PostGIS com a ajuda da ferramenta especial de linha de comando shp2pgsql. O exemplo abaixo demonstra como converter o arquivo de forma em uma sequência de comandos SQL, primeiro, e fazer upload da lista de comandos SQL para o banco de dados usando psql, a seguir:
linuxhint $ shp2pgsql -cDiI railways.ferrovia shp> ferrovia.sqlTipo de arquivo de forma: arco
Tipo de postgis: MULTILINESTRING [2]
linuxhint $
linha ferroviária linuxhint $ psql -f.sql
A figura abaixo mostra a saída que é impressa na tela assim que você carrega os dados.
Agora, PostgreSQL / PostGIS está à sua disposição e pronto para receber suas consultas SQL. Por exemplo, o pgadmin permite que você dê uma olhada nos bastidores em minutos. A figura abaixo mostra isso para os dados carregados. A coluna mais à direita tem um tipo geométrico MultiLineString.
Conclusão
Configurar o PostgreSQL / PostGIS não é ciência do foguete. Com as etapas explicadas acima, você pode fazer isso em menos de uma hora e ter resultados rapidamente. Et voila!
Links e referências
- Ambiente Desktop XFCE
- PostgreSQL
- PostGIS
- Shahriar Shovon: Instalando PostgreSQL no Debian 10, Linuxhint
- Geofabrik, Downloads
- Shapefile
- Chefe de cozinha
- Redis
- SQLite
- UNICEF
- Debian GNU / Linux Buster, Debian Wiki
- Creative Commons
- Skype
- BMW Group
- Instituto Géographique Nacional (IGN)