Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

diferenças do oráculo do mysql do postgreSQL


Alguns anos atrás eu tive que escrever um motor de tradução; você o alimenta com um conjunto de sql e ele se traduz no dialeto do mecanismo conectado no momento. Meu mecanismo funciona no Postgres (AKA PostgreSql), Ingres, DB2, Informix, Sybase e Oracle - oh, e ANTS. Francamente, Oracle é o meu menos favorito (mais sobre isso abaixo)... Infelizmente para você, mySql e SQL Server não estão na lista (na época nenhum deles era considerado um RDBMS sério - mas os tempos mudam).

Independentemente da qualidade ou desempenho do mecanismo - e facilidade de fazer e restaurar backups - aqui estão as principais áreas de diferença:
  • tipos de dados
  • limites
  • inválidos
  • palavras reservadas
  • semântica nula (veja abaixo)
  • semântica de citação (aspas simples ', aspas duplas ", ou qualquer um)
  • semântica de conclusão da instrução
  • semântica da função
  • manuseio de data (incluindo palavras-chave constantes como 'agora' e formatos de função de entrada/saída)
  • se os comentários embutidos são permitidos
  • tamanhos máximos de atributos
  • número máximo de atributos
  • semântica de conexão / paradigma de segurança.

Sem aborrecê-lo com todos os dados de conversão, aqui está uma amostra para um tipo de dados, lvarchar:

oracle=varchar(%x) sybase=texto db2="long varchar" informix=lvarchar postgres=varchar(%x) ants=varchar(%x) ingres=varchar(%x,%y)

O maior problema de todos, na minha opinião, é a manipulação de nulos; O Oracle SILENTLY converte strings de entrada em branco em valores nulos. ... Em algum lugar, muito tempo atrás, eu li um artigo que alguém tinha feito sobre "Os Dezessete Significados de Nulo" ou algo assim e o ponto real é que nulos são muito valiosos e a distinção entre uma string nula e uma string vazia é útil e não trivial! Acho que a Oracle cometeu um grande erro neste; nenhum dos outros tem esse comportamento (que eu já vi).

Meu segundo menos favorito foi o ANTS porque, ao contrário de todos os outros, eles FORÇARAM as regras bobas para a sintaxe perfeita que absolutamente ninguém mais faz e, embora possam ser a única empresa de banco de dados a fornecer aderência perfeita ao padrão, eles também são uma dor real em a bunda para escrever o código.

De longe o meu favorito é o Postgres; é muito rápido em situações _real_world_, tem um ótimo suporte e é de código aberto/gratuito.