sql >> Base de Datos >  >> RDS >> Oracle

PostgreSQL mysql Oracle diferencias

Hace unos años tuve que escribir un motor de traducción; lo alimenta con un conjunto de sql y se traduce al dialecto del motor actualmente conectado. Mi motor funciona en Postgres (también conocido como PostgreSql), Ingres, DB2, Informix, Sybase y Oracle, oh, y ANTS. Francamente, Oracle es mi menos favorito (más sobre eso a continuación)... Desafortunadamente para usted, mySql y SQL Server no están en la lista (en ese momento ninguno se consideraba un RDBMS serio, pero los tiempos cambian).

Independientemente de la calidad o el rendimiento del motor, y la facilidad para realizar y restaurar copias de seguridad, estas son las principales áreas de diferencia:

  • tipos de datos
  • límites
  • inválidos
  • palabras reservadas
  • semántica nula (ver más abajo)
  • semántica de las comillas (comillas simples ', comillas dobles "o ambas)
  • semántica de finalización de declaraciones
  • función semántica
  • manejo de fechas (incluyendo palabras clave constantes como 'ahora' y formatos de función de entrada/salida)
  • si se permiten los comentarios en línea
  • longitudes máximas de atributos
  • número máximo de atributos
  • semántica de conexión/paradigma de seguridad.

Sin aburrirte con todos los datos de conversión, aquí hay una muestra para un tipo de datos, lvarchar:

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

El mayor problema de todos, en mi opinión, es el manejo nulo; Oracle SILENTLY convierte cadenas de entrada en blanco en valores nulos. ... En algún lugar, hace MUCHO tiempo, leí un artículo que alguien había hecho sobre "Los diecisiete significados de nulo" o algo así y el punto real es que los nulos son muy valiosos y la distinción entre una cadena nula y una cadena vacía es útil y no trivial! Creo que Oracle cometió un gran error en este caso; ninguno de los otros tiene este comportamiento (que yo haya visto).

Mi segundo menos favorito fue ANTS porque, a diferencia de todos los demás, OBLIGARON APLICAR las reglas tontas para una sintaxis perfecta que absolutamente nadie más hace y, aunque pueden ser la única compañía DB que se adhiere perfectamente al estándar, también son un dolor real en el trasero para escribir código.

De lejos, mi favorito es Postgres; es muy rápido en situaciones del _mundo_real_, tiene un gran soporte y es de código abierto/gratuito.