Articles

Guerras de bases de datos: MSSQL Server, Oracle PL/SQL y MySQL

Posted on

Con tantas bases de datos en el mercado, las guerras mentales han comenzado y es el momento adecuado para entender la diferencia y la importancia de las 3 principales bases de datos relacionales en el mercado – Microsoft SQL Server, Oracle PL/SQL y MySQL. Los sistemas de gestión de bases de datos relacionales se han convertido actualmente en la columna vertebral de la industria y con tantas opciones disponibles, es difícil averiguar cuál elegir.

Los sistemas de gestión de bases de datos relacionales se introdujeron en la década de 1980. Este artículo se centra en explorar la historia y las características de tres RDBMS populares en la industria: Microsoft SQL Server, Oracle y MySQL. Microsoft SQL Server y Oracle son el software comercial, MySQL es el RDBMS de código abierto.

Oracle fue la primera empresa en sacar un RDBMS para uso comercial en la década de 1980. A mediados de los 90, Microsoft entró en el mercado con SQL Server como un serio competidor de Oracle. MySQL, por su parte, se desarrolló y distribuyó originalmente como un software de código abierto. MySQL fue lanzado por primera vez en 1995, y la versión para Windows fue lanzada en 1998. En 2008 fue adquirida por SUN y posteriormente por Oracle.

El Lenguaje – Corazón de la Comunicación

La columna vertebral de cualquier RDBMS es el lenguaje que se utiliza para ejecutar las consultas y es así como se repercute en su rendimiento e implementación. Aunque los tres sistemas de gestión de bases de datos utilizan una versión de Structured Query Language, o SQL. Microsoft SQL Server utiliza Transact-SQL, o T-SQL, que es una extensión de SQL desarrollada originalmente por Sybase y utilizada por Microsoft. Mientras que Oracle, por su parte, utiliza PL/SQL, o Procedural Language/SQL.

Ambos son diferentes «sabores» o dialectos de SQL y ambos lenguajes tienen sintaxis y capacidades ligeramente diferentes. La principal diferencia entre los dos lenguajes es cómo manejan las variables, los procedimientos almacenados y las funciones incorporadas. PL/SQL en Oracle también puede agrupar procedimientos en paquetes, lo que no se puede hacer en MS SQL Server. PL/SQL puede ser un poco más complejo y potencialmente más potente, mientras que T-SQL es mucho más simple y más fácil de implementar.

MySQL, por otro lado, utiliza la versión ligera de T-SQL y también combina el lenguaje procedimental que se relaciona estrechamente con SQL/PSM. Sin embargo los objetos-código almacenados de MySQL se acercan a los estándares ANSI, pero de nuevo, no tienen la amplitud y profundidad de T-SQL, la extensión propietaria de Microsoft y Sybase para SQL.

Control de transacciones

Se puede decir que una transacción es un grupo de operaciones que se ejecutan como una sola unidad. Por ejemplo, si el usuario está tratando de ejecutar algunas consultas SQL, entonces se ejecutan todas o ninguna. Esta es una de las principales diferencias entre Oracle y MS SQL Server en referencia al control de transacciones.

Por defecto, MS SQL Server ejecutará y consignará cada comando/tarea individualmente, y será difícil o imposible deshacer los cambios si se produce algún error en el camino. El comando «BEGIN TRANSACTION» se utiliza para agrupar adecuadamente las sentencias y declarar el inicio de una transacción, y se puede utilizar una sentencia COMMIT al final. Esta sentencia COMMIT escribirá los datos modificados en el disco, y terminará la transacción. Dentro de una transacción, ROLLBACK descartará cualquier cambio realizado dentro del bloque de transacción. Después de emitir un COMMIT, no es posible retroceder más allá del comando COMMIT.

Mientras que en Oracle, cada nueva conexión a la base de datos se toma como una nueva transacción. A medida que se ejecutan las consultas y se emiten los comandos, los cambios se realizan sólo en la memoria de la base de datos y permanecen en la caché. No se consigna nada hasta que se da una sentencia COMMIT explícita. Después del COMMIT, el siguiente comando emitido esencialmente inicia una nueva transacción, y el proceso comienza de nuevo. Esto proporciona una mayor flexibilidad y ayuda para el control de errores también, ya que ningún cambio se compromete en el disco hasta que el comando COMMIT se ejecuta explícitamente.

En el caso de MySQL, el soporte de transacciones es fácilmente compatible con InnoDB. InnoDB es un motor de almacenamiento para MySQL y por defecto está disponible con MySQL. Proporciona las características estándar de transacciones compatibles con ACID, junto con el soporte de claves foráneas.

Organización de los objetos de la base de datos

La organización de los objetos de la base de datos también es un gran diferenciador en estas 3 bases de datos. MS SQL Server organiza todos los objetos, como tablas, vistas y procedimientos, por nombres de bases de datos. Los usuarios de MS SQL se asignan a un nombre de usuario, al que se le conceden accesos a las bases de datos específicas y también a sus objetos. En Microsoft SQL Server, cada base de datos tiene un archivo de disco privado y no compartido en el servidor.

Mientras que en Oracle, todos los objetos de la base de datos están agrupados por esquemas. Los esquemas no son más que las estructuras de la base de datos que son una colección de subconjuntos de objetos de la base de datos. Todos los objetos de la base de datos son compartidos entre todos los esquemas y usuarios. Aunque todo es compartido, se definen los roles y permisos para cada usuario y los mismos pueden ser limitados a ciertos esquemas y tablas.

En definitiva, los tres, MySQL, Oracle y SQL Server son potentes opciones de RDBMS. Aunque hay una serie de otras diferencias en cómo funcionan «bajo el capó» y se implementan, se pueden utilizar de manera casi equivalente. Cada uno puede utilizarse con un objetivo diferente en un entorno distinto. El propósito puede ser el mismo, pero la implementación varía.

raja

Publicado el 16-Enero-2020 12:26:19
Anuncios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *