PostgreSQL vs SQLserver ¿cual es mejor?

Este es un articulo muy interesante sobre  PostgreSQL vs SQLserver que compara ambos motores de base de datos relacionales desde varias puntos de diferentes. Tratare de resumir (y traducir)  los puntos mas relevantes de dicha comparación.  http://www.pg-versus-ms.com/

 

Facilidad de uso

Cualquier analizador de datos puede hacer lo que otro analizador puede hacer. El «puedo hacer X en la plataforma A y no puedo hacer X en la plataforma B» no existe como tal, puedo hacer lo mismo en la base de datos  postgresql y en mssql. Ambas cumplen bien las reglas de álgebra relacional. La diferencia es que las buenas herramientas hacen las cosas fáciles, la malas herramientas hacen las cosas difíciles.

PostgreSQL is clearly written by people who actually care about getting stuff done. MS SQL Server feels like it was written by people who never have to actually use MS SQL Server to achieve anything. Here are a few examples to back this up:

 

Esto anterior es algo que necesitaba dejar intacto por que es la mayor realidad del desarrollo de software, las cosas bien echas están creadas por personas que las necesitan de verdad, ejemplo.

Postgres tiene «DROP TABLE IF EXISTS»  que es bastante lógico. «Si no existe, no lo hagas» con diferencia de mssql.

Parece solo una linea mas, pero notemos el parámetro innecesario N’V’ que nos indica que elimina una vista,  y N’P’ para un procedimiento. ¿Por que tenemos que aprendernos distintas combinaciones de letras para distintos objetos de la base de datos?

Mas ejemplos en la URL de referencia.

 

Multiplataforma

PostgreSQL puede correr en Linux, BSD y windows. Por lo contrario MSSQL solo corre en windows. La política de Microsoft siempre a sido atrapar al cliente en sus productos, esto protege sus ganancias pero no es necesariamente bueno para los programadores.

Si, ahora «.NET «es «OpenSource»,  pero  históricamente tenemos el ejemplo de el estándar «Office Open XML». Microsoft jugo todos los trucos sucios que existen para no perder su poderío de Office y hoy en día admitamoslo Libre office no es realmente una opción para oficinistas serios. Lo mismo pasa y pasara con .NET

 

Programar con otros lenguajes

PostgreSQL es  muy fácil de conectar y utilizar en entornos de programación, su librería libpq y su API externa están muy bien diseñadas y documentadas por el contrario MSSQL  es solo plug and play en entornos de desarrollo Microsoft, todo lo que este fuera de esto necesita instalaciones fastidiosas de drivers (en el caso de linux) y librerías que solo la mamá del programador aventurado (que escribió la librería) conoce.

La documentación de postgres en relación a su uso con un lenguaje podríamos decir que esta fragmentada por todo Internet, sin embargo eso no es necesariamente malo. no  podemos usar documentación genérica  para el uso de cada librería de X lenguaje. Toda esta documentación esta escrita por programadores para programadores  y no nos toparemos con que 2/3 de la documentación no toca ni un detalle técnico.

Para Microsoft su documentación es un negocio y esta tiene que ser  aburrida, seca, extremadamente categorizada y debe comenzar con aspectos que pueda interesarle al gerente para lograr la compra de sus servicios.

 

PostgreSQL es mas lento que MSSQL

A more accurate rephrasing would be «MS SQL Server is slightly more forgiving if you don’t know what you’re doing».

Para ciertas operaciones postgres es mal lento que mssql. El ejemplo mas sencillo es el Count(*) donde es mssql es prácticamente instantáneo debido a la distinta forma de resolver la concurrencia en cada plataforma.

Postgres es lento «out-of-the-box» por que sus configuraciones son mínimas, cualquier desarrollador serio  puede configurar en poco tiempo para usar mas recursos. por otro lado postgres cuenta con mayor tipo de indexación de datos que pueden hacer a una consulta mas rápida si se sabe lo que se esta haciendo.

 

the argument about speed is never only about computer time; it is about developer time too. That’s why high-level languages like PHP and Python are very popular, despite the fact that C kicks the shit out of them when it comes to execution speed. They are slower to run but much faster to use for development. Would you prefer to spend an hour writing maintainable, elegant SQL followed by an hour of runtime, or spend three days writing buggy, desperate workarounds followed by 45 minutes of runtime?

 

Martin Quinta

Crecí con una computadora desde el kinder. Empece a programar a los 14 y hoy, mas de una década después… realmente odio estar frente a una computadora. Pero programar es en lo que soy bueno, por lo tanto me desahogo en este blog mientras bebo cerveza artesanal y pienso en un mundo bonito donde Java no existe.

Facebook Twitter LinkedIn  

Entradas relacionadas:

8 comentarios en: “PostgreSQL vs SQLserver ¿cual es mejor?

  1. buen post
    realmente confirma mucho de lo que aprendí de mssql
    que no sabía antes de usarlo y que ahora se por experiencia propia, por qué no recomendarlo

  2. jajaja se nota que el tipo odia sql server, pero la comparacion esta hecha con mucho odio y no de manera seria… son muy buenos los dos, llevo trabajando mas de 15 años con cada uno jeje

  3. Comence con mssql, muy bueno hasta que conoci postgesql… me encanto… claro esta ahora programo para sistemas que corren bajo linux… y la base de datos relacional que se usa en postgresql..
    Tambien comence a desarrollar en un pc a los 14, un comodore 64, que tiempos aquellos todo un dia programando en basic, para jugar 2 horas solamente, los juegos venian en codigo fuente en revistas

  4. El articulo se encuentra obsoleto sql server dispone de drop if exist y se puede instalar en linux, tambien esta soportado por practicamente todos los lenguajes de programación, cabe destacar que el cliente de Sql Server Management Studio es muchísimo mas amigable que psql y pgadmin y que sql server permite el archivado de transacciones indibidualmente por cada base de datos. PostgreSQL merece todos los respetos ya que es un gran motor de bases de datos pero SQL Server es más que un mero motor de bases de datos es tambien una herramienta de bussiness inteligence, incorpora Integration Services, Analysis Services y mi favorito el Reporting Services. Como siempre el hecho de cual es mejor dependerá del uso que le quieras dar.

    1. Jordi, concuerdo en cierta parte con lo que comentas pero tengo entendido que sql server recien a sacadonuna version para linux, las anteriores solo funcionan en windows, otro punto es que el mangment studio es muy completo pero lamentablemente sigue solo funcionando en windows y ni en la ultima version que funciona en linux el core no existe managment estudio ni en linux ni en mac, postgresql recién lo estoy conociendo y viendo si realmente es una alternativa para aquellos proyectos Grandes en los que normalmente trabajo mas aun sabiendo que siempre a sido multiplataforma postgresql y considerando que los servidores con mas seguridad son de linux, tambien para abaratar costos con el apoyo de net que tambien funciona en linux, e igual que sql server el visual studio con todo el poder solo funciona en windows lo cual te sigue amarrando a usar Windows y no da la ventaja de poder usar esas herramientas poderosas eb cualquier plataforma que seria los mejor

      1. Realmente cierto y acertado tu análisis, he venido usando ambos gestores en desarrollo y realmente con PSQL no tienes que preocuparte si ocupas una característica adicional como pasa con Microsoft que te da versiones con características amputadas en otros sistemas operativos.

  5. Saludos, como se puede lograr recuperar valores en variables y despues ir pasandolas en los distintas instruciones sql en postgres, un ejemplo clasico es el uso del famoso if not exists () begin, como este
    declare @suc char(4), @numdoc char(8)
    select @suc =’0001′, @numdoc = ‘DOC00001’
    if not exists (select doc from ajustes where sufijo=@suc and doc= @numdoc ) begin
    Insert into ajustes (sufijo,doc,fecha) values(@suc,@numdoc, getdate())
    end
    en Postgres como se realiza ya que comúnmente uso estos script para implementarlo dentro de la aplicación, es decir no uso store procedure o vista alguna sugerencia. gracias

Leave a Reply

Your email address will not be published. Required fields are marked *