AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 10744
Accepted
Ryan Charmley
Ryan Charmley
Asked: 2012-01-17 10:58:34 +0800 CST2012-01-17 10:58:34 +0800 CST 2012-01-17 10:58:34 +0800 CST

PostgreSQL vs. MySQL: comparação de recursos espaciais

  • 772

Estamos no processo de construção de um aplicativo da web que possui um componente de dados espaciais. No início, nossas comparações de dados espaciais tomarão um determinado ponto e retornarão polígonos espaciais sobrepostos correspondentes.

Dito isto, nosso banco de dados tem muitos outros componentes que incluem todas as coisas típicas que você encontraria em seu banco de dados relacional geral.

Estamos no ponto de nosso projeto em que devemos escolher qual solução de banco de dados usar.

Todos os membros do projeto estão mais familiarizados com a implementação e administração do MySQL, mas todas as pesquisas sugerem que o PostgreSQL é a melhor solução - especialmente no que diz respeito a dados espaciais usando postGIS.

Esperamos (esperamos) que nosso aplicativo experimente muita ação com muitos usuários simultâneos.

Alguém com experiência em usar o MySQL como seu RDBMS com um componente de dados espaciais tem algum conselho/experiência de longo prazo?

Há alguma desvantagem em usar o PostGIS com exceção da familiaridade?

mysql postgresql
  • 3 3 respostas
  • 12194 Views

3 respostas

  • Voted
  1. Best Answer
    voretaq7
    2012-01-28T20:17:18+08:002012-01-28T20:17:18+08:00

    Não posso falar sobre vantagens/desvantagens em relação ao MySQL, mas o código PostGIS é amplamente considerado como um dos melhores (em termos de velocidade/funcionalidade) e mais maduro (em termos de teste/exposição ao mundo real ) acessível.

    A título de exemplo, houve uma palestra no PGEast 2010 de algumas pessoas da FAA sobre a conversão de seu banco de dados do aeroporto (usado pelo AeroNav e outros para compilar gráficos) para Postgres/PostGIS da Oracle.
    O site avationDB também é construído sobre Postgres (8.0).

    Se as consultas relacionadas ao GIS estiverem no centro do que você está fazendo, minha sugestão seria usar o Postgres. Ele certamente pode lidar com tudo o mais que você normalmente faria em um banco de dados relacional.


    Em termos de mudança do MySQL, a documentação por trás do Postgres é de primeira linha, e também há uma seção do Oostgres Wiki sobre a mudança do MySQL para o Postgres .
    A curva de aprendizado inicial pode ser um pouco íngreme e você pode precisar ajustar seu banco de dados e quaisquer procedimentos armazenados (se você já os tiver escrito para MySQL), mas não é uma tarefa intransponível.

    Você deve ser capaz de pegar o suficiente para fazer a troca em algumas semanas e, se configurar um banco de dados de desenvolvimento, provavelmente poderá estar bem versado em tarefas de rotina em um mês e confiante de que sabe onde procurar no manual para os não tão rotineiros.

    • 14
  2. Evan Carroll
    2017-11-21T09:00:44+08:002017-11-21T09:00:44+08:00

    Falando de algumas coisas muito importantes. Aqui está uma lista de coisas que o PostGIS suporta que estão totalmente ausentes no MySQL e no MariaDB.

    • SRID em cálculos, dê aos seus pontos um SRID diferente e você receberá valores diferentes de volta. Isto é prop Funções agregadas: até onde sei, o MySQL não oferece funções de agregação espacial

    K vizinho mais próximo: Somente PostGIS suporta KNN. Encontre o ponto mais próximo de qualquer ponto usando apenas um índice: não há necessidade de calcular a distância de todos os pontos!er. O MySQL quebra a especificação e apenas verifica se dois valores têm o mesmo SRID. O PostGIS vem com um banco de dados de definições do pro4j para permitir o conhecimento SRID contínuo. Definir um SRID e chamar ST_Transform( uma função que falta ao MySQL ) irá reprojetar suas coordenadas.

    No MySQL, todos os cálculos são feitos assumindo SRID 0, independentemente do valor SRID real. SRID 0 representa um plano cartesiano plano infinito sem unidades atribuídas aos seus eixos. No futuro, os cálculos podem usar os valores SRID especificados. Para garantir o comportamento de SRID 0, crie valores de geometria usando SRID 0. SRID 0 é o padrão para novos valores de geometria se nenhum SRID for especificado.

    • Rasters : há uma tonelada de recursos aqui, desde a geração do raster até a extração. Você pode gerar mapas de calor e afins.

    • Geografia , o PostGIS suporta um tipo de geografia não projetada que não usa matemática cartesiana. Tem toda uma lentidão de funções associadas que operam em esféricos oblatos. Por outro lado, o MySQL não pode nem mesmo criar uma caixa delimitadora em um SRS geográfico a partir de dois pontos.

    • Topologia , diferente de geometrias vetoriais, geoms topo armazenam nós e relações. Mova um nó, a borda também se move e você obtém uma nova face. Isso também força as arestas a serem direcionadas, o que as torna ideais para roteamento. Como subponto, 100% do que o PgRouting faz não está disponível para o MySQL - então você simplesmente não pode criar um Google Maps ou algo parecido em cima dele.

    • Geocodificação: há uma extensão de geocodificador no diretório contrib que trabalha com os dados do censo e um carregador para instalar esses dados.

    • Padronização de endereço: existe uma extensão que lida com a normalização de endereços para fácil análise, armazenamento e comparação.

    • Recursos do SQL-MM , você simplesmente não encontrará CIRCULARSTRING COMPOUNDCURVE CURVEPOLYGON MULTICURVEou MULTISURFACEno MySQL.

    • nd cabos: PostGIS pode suportar formas e pontos 3dm, 3dz e 4d e pontos que o MySQL simplesmente não pode

    • O MySQL suporta apenas índices r-tree. PostGIS suporta r-tree (gist/gin) e BRIN (para grandes tabelas de geometria)

    • Funções agregadas: até onde sei, o MySQL não oferece funções de agregação espacial

    • K vizinho mais próximo: Somente PostGIS suporta KNN . Encontre o ponto mais próximo de qualquer ponto usando apenas um índice: não há necessidade de calcular a distância de todos os pontos!

    • Indexação. O PostgreSQL permite que você armazene quaisquer dados em seu índice espacial (que é um índice gist/gin). Por exemplo, você pode armazenar o year(ou outros dados não espaciais) e geomno mesmo índice. Veja btree_gine btree_gistpara mais informações sobre como fazer isso.

    Além disso, provavelmente existem mais de 200 funções suportadas pelo PostGIS.

    Resumindo, o MySQL não se apega ao PostGIS e sabe disso. PostGIS é uma fera. Só queria explicar algumas dessas coisas.

    • 8
  3. ariel
    2012-01-29T15:42:57+08:002012-01-29T15:42:57+08:00

    Concordo totalmente com todas as afirmações da primeira resposta, mas compartilhando minha própria experiência - fiz isso na Administração Nacional de Estradas do meu país: crítico de produção, site de alto tráfego. Sugiro que um aplicativo da web seja alimentado por MySQL e PostgreSQL/PostGIS.

    Para todas as coisas "típicas", o aplicativo da web funciona perfeitamente com um CMS baseado em MySQL. Para todas as tarefas espaciais, o mesmo aplicativo da web funciona - também perfeitamente;) com desenvolvimento personalizado baseado em PostgreSQL/PostGIS. O primeiro componente foi desenvolvido e é mantido sem esforço com habilidades normais do MySQL. O segundo componente envolveu um pouco mais de esforço de pesquisa no início.

    Você não precisa forçar uma implementação dispendiosa de coisas típicas no não tão familiar PostgreSQL/PostGIS e também não precisa forçar uma implementação abaixo do ideal de coisas geoespaciais no MySQL. Deixe cada jogador jogar onde pode acertar.

    • 0

relate perguntas

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve