showing - MySQL vs. SQL Server vs. Oracle
result grid mysql workbench windows (12)
Siempre he usado MySQL y ningún otro sistema de base de datos.
Hoy surgió una pregunta en una reunión de la compañía y me avergonzaba no saber: para un desarrollador, ¿qué funcionalidad agitadora ofrecen MS o Oracle que carece de MySQL y que permite a MS y Oracle cobrar por sus sistemas?
¡MySQL no es gratis!
Se entiende ampliamente que es gratis, pero usted está vendiendo o distribuyendo paquetes de software que incorporan MySQL, tiene restricciones bastante severas. En estos casos, es gratis solo para proyectos de código abierto u organizaciones sin fines de lucro. Si logras separar completamente la base de datos y los controladores del resto de tu aplicación, y obligar a tu cliente a descargar e instalar MySQL por su cuenta, probablemente estés bien.
De lo contrario, cuesta $ 2,000 / año para la edición "estándar", que es más o menos comparable con el costo de licenciar SQL Server.
Ambas son bases de datos muy buenas, pero entre las ventajas de SQL Server están:
- Un lenguaje de procedimiento rico y expresivo (T-SQL)
- Un mejor optimizador de consultas y un mejor rendimiento en entornos de escritura intensiva
- Un conjunto sólido de herramientas y capacidades auxiliares, que incluyen un entorno de programación, una herramienta ETL (SSIS), modelado dimensional (SSAS), un entorno de informes (SSRS) y un programador de tareas razonablemente sofisticado.
- Depuración interactiva de procedimientos almacenados y UDF.
- Una herramienta de administración basada en la ventana relativamente fácil de usar que le permite realizar la mayoría de las tareas de administración de manera "por clic".
Muchas personas se oponen ideológicamente al uso de las herramientas de Microsoft, o están encerradas en un entorno Windows, y puedo entender eso. Pero MySQL NO es gratuito para el uso comercial, y eso no parece ser ampliamente entendido.
Para revisar la política de licencias de MySQL, échele un vistazo a su sitio web: http://www.mysql.com/about/legal/licensing/index.html
Algunas características de Oracle que realmente me gustan son
- Real Application Clusters, una forma bastante poderosa de crear clusters de bases de datos
- Vistas materializadas refrescables y rápidas, una forma muy eficiente de almacenar y actualizar resultados de consultas
- Funciones analíticas (también conocidas como funciones de ventana) que permiten agrupar funciones en un subconjunto de la consulta de forma eficiente. Esto puede evitar las autocombinaciones en la mayoría de los casos.
Por lo que yo sé, ninguno de estos está disponible en MySQL. Y hay muchas más funciones útiles, especialmente en la edición empresarial y sus opciones.
Algunas otras cosas que Oracle tiene sobre mysql.
- Colas
- programación interna de trabajos
- lenguaje de procedimiento almacenado maduro
- tablas pareadas
- control de acceso y auditoría de granularidad
- características de recuperación fuertes (por ejemplo, flashback, rman, dataguard)
- enlaces remotos
- aplicación express
Creo que la pregunta tiene la suposición implícita de que son características de desarrollo que permiten que SQL Server / Oracle cobren. Sospecho que es más la implementación / soporte.
La copia de seguridad en caliente es una característica importante que vale la pena pagar, al menos para la mayoría de las instalaciones.
Para Oracle, un gran valor agregado es RAC: múltiples servidores que coinciden con los mismos datos (es decir, los mismos discos) sin que haya ninguna complicada replicación. En general, no es aparente para el desarrollador.
Creo que otros comentaristas tienen toda la razón al destacar todas las habilidades RDBMS adicionales no centrales que se incluyen con las soluciones comerciales.
Aquí hay una matriz de ediciones y características de Oracle que valdría la pena explorar solo para comprender las características "adicionales", particularmente en el contexto de lo que costaría desarrollar y respaldar su propia versión de las mismas (si eso fuera posible) en un producto como MySQL: http://www.oracle.com/us/products/database/product-editions-066501.html
Por ejemplo, si tenía un requisito que decía: "Los usuarios podrán recuperar cualquier versión anterior de los datos que hayan eliminado / actualizado hasta una semana después de que se hayan confirmado los cambios", eso implica una cierta sobrecarga de desarrollo que creo Sería mucho más alto en un sistema que no tenía una función incorporada, como Flashback Query de Oracle.
Hasta que administré RDBS de otros proveedores, Oracle repetía "los lectores no bloquean a los escritores, los escritores no bloquean a los lectores" significaba poco para mí. Realmente no sabía mucho sobre el manejo de problemas de bloqueo en 8 años como un DBA de Oracle. años de Informix y 3 o SQL Server y créanme, sé mucho más sobre el bloqueo.
Entonces, diría que, además de los comentarios sobre funciones de soporte y que no son de RDBMS, agregue comportamiento de bloqueo.
Hay demasiadas funciones para enumerar. Ver la referencia de Wikipedia en el mensaje de nullptr. Pero supongo que la pregunta real en la reunión es: "para un desarrollador, ¿qué funcionalidad de sacudida de tierra ofrecen MS o Oracle que retrasa MySQL, lo que permite a MS y Oracle cobrar por sus sistemas y que nuestra empresa puede utilizar de manera efectiva ?"
Todas las ventajas son realmente ventajas si coinciden con sus necesidades ...
Inspirado por la respuesta de ThinkJet, creo que otro factor que entra en juego es: "¿En qué medida estamos dispuestos a renunciar a la independencia de la base de datos para proporcionar un desarrollo más rápido y más barato de aplicaciones de mayor rendimiento?" Si el énfasis de la compañía es que todo el código debe ser portátil entre las bases de datos, entonces no tiene mucho sentido utilizar otro que no sea el RDBMS más simple, y las mejoras y ventajas que Oracle y Microsoft han proporcionado no cuentan para nada.
Se necesita muy poco para romper la verdadera independencia de la base de datos, y mi filosofía es que debes lanzarte de todo corazón para aprovechar cada función que hayas pagado: mejoras de SQL, PL / SQL, etc.
Otros pueden diferir, por supuesto.
Las capas de RDBMS puras de Oracle y MSSQL ofrecen principalmente un entorno programable más maduro que MySQL e InnoDB. T-SQL y PL / SQL aún no pueden ser igualados por los procedimientos y desencadenantes almacenados de MySQL.
Las otras diferencias son diferencias sintácticas y semánticas leves que hacen que las cosas sean más fáciles o más difíciles (como las 500 principales frente al límite / compensación).
Pero el verdadero asesino es que hay un montón de herramientas integradas y servicios encima de las capas RDBMS de MSSQL (Reporting Services, Analysis Services) y Oracle (Data Warehousing, RAC) que MySQL no tiene (todavía).
MySQL no ofrecía el entorno de programación más completo que Oracle y MSSQL ofrecían, especialmente en las primeras encarnaciones, cuando ni siquiera tenía procedimientos almacenados. Desde mi punto de vista, tiendo a poner la mayor parte de mi lógica empresarial en la aplicación, a través de mapeadores DAO o ORM, etc. Por lo tanto, el motor de base de datos subyacente es menos importante y, en teoría, la aplicación es transportable. Desde una perspectiva de administración, MSSQL ofrece una serie de beneficios (muchos de ellos ya incluidos) que facilitan enormemente la tarea de ser propietario de la base de datos. Microsoft también proporciona el excelente y liviano SQLExpress para el desarrollo, con el que he encontrado fácil de trabajar y se integra muy bien en Visual Studio.
NOTA: No puedo decir nada sobre Oracle, por lo que responderé solo para SQL Server.
Bueno, por supuesto, pequeñas diferencias en el motor de base de datos, como la instrucción MERGE, BULK INSERT, GROUPING SETs, etc.
Pero creo que la parte más importante son cosas como Integration Services, Analysis Services y Reporting Services. Esas son tecnologías importantes que, en mi opinión, valen la pena el dinero que cuestan.
Clústeres de tablas de Oracle y clústeres de hash de tablas únicas (que tampoco encontrará en SQL Server).