El mundo del big data se expande por segundos. Las empresas grandes y pequeñas se esfuerzan por gestionar la información que tienen bajo su mando. Estos datos incluyen las cifras de ventas, las estadísticas de las campañas de marketing, las preferencias y el comportamiento de los clientes, y mucho más. Escondidos en estos datos hay muchos conocimientos potencialmente valiosos que pueden ayudar a tu empresa y a tus empleados a rendir mejor.
Según una encuesta realizada en 2016 por HubSpot, la organización media supervisa ahora 163 terabytes de información. Eso es suficiente espacio para almacenar 40.000 películas de larga duración en DVD.
Para las empresas que crecen y escalan, encontrar la mejor manera de manejar eficientemente esta información es un reto. La mayoría de las grandes empresas han almacenado tradicionalmente sus datos en un sistema de gestión de bases de datos relacionales (RDBMS).
Microsoft SQL Server y Oracle Database son dos de las opciones más populares y probadas en el tiempo para la gestión de bases de datos relacionales en las grandes empresas. Debido a que ambos son alternativas muy fuertes, hacer la elección entre SQL Server y Oracle no siempre es fácil. Necesitará un análisis en profundidad de las capacidades de cada uno, así como de sus objetivos y necesidades como organización.
En este artículo, repasaremos todo lo que necesita saber al comparar Oracle frente a SQL Server. Comenzaremos con una visión general de las bases de datos relacionales, y luego discutiremos los hechos sobre ambas alternativas y los pros y los contras de su uso.
¿Qué es un RDBMS?
Los diferentes tipos de bases de datos tienen sus propios métodos para organizar y conectar la información. Un sistema de gestión de bases de datos relacionales (RDBMS) utiliza el concepto de bases de datos relacionales para gestionar los datos.
Las bases de datos relacionales son bases de datos que organizan la información en tablas con columnas y filas. Los expertos en big data se refieren a este enfoque como el «modelo relacional».
¿Está familiarizado con las aplicaciones de hojas de cálculo como Microsoft Excel? Ya tiene una buena idea de cómo es el modelo relacional. Excel carece del rendimiento y la sofisticación de una verdadera base de datos relacional. Sin embargo, al igual que una base de datos relacional, Excel utiliza filas y columnas para almacenar información en tablas.
Ejemplo: Base de datos de estudiantes universitarios
Digamos que quiere almacenar datos sobre los estudiantes de una determinada universidad. Estos datos incluyen su nombre e información de contacto, así como las clases que están tomando.
Hay múltiples formas de organizar la información bajo el modelo relacional. Por ejemplo, una tabla podría contener la información personal de los estudiantes. También podría tener una tabla para cada clase que se ofrece en la universidad.
La tabla «Estudiantes» tendrá columnas como:
- nombre
- apellido
- fecha de nacimiento
- dirección
- número_de_teléfono
- identificación_del_alumno
- SELECT especifica las columnas que se quieren recibir en los resultados.
- FROM especifica la tabla que se quiere consultar.
- WHERE especifica las condiciones que debe cumplir cada entrada de la tabla para aparecer en los resultados.
- MongoDB
- Apache Cassandra
- Apache HBase
- Redis
- Neo4j
- Microsoft SQL Server
- Oracle Database
- MySQL
- IBM DB2
- Enterprise Edition: Incluye el motor de base de datos principal de SQL Server, así como servicios complementarios. SQL Server 2017 Enterprise puede admitir bases de datos de hasta 524 petabytes (524 millones de gigabytes), utilizar un número ilimitado de núcleos de procesador y acceder a toda la memoria que permita el sistema operativo.
- Edición estándar: Incluye el motor de base de datos principal y los servicios independientes. SQL Server 2017 Standard puede admitir bases de datos de hasta 524 petabytes, utilizar hasta 24 núcleos de procesador y acceder a hasta 128 gigabytes de memoria por instancia para el tamaño de la reserva de búfer. A la Standard Edition le faltan ciertas características avanzadas de la Enterprise Edition, como el Cifrado de datos transparente y la alta disponibilidad avanzada.
- Edición Express: Incluye el motor de base de datos principal en línea. SQL Server 2017 Express puede admitir bases de datos de hasta 10 gigabytes, utilizar hasta 4 núcleos de procesador y acceder a un máximo de 1410 megabytes de memoria por instancia para el tamaño del grupo de búferes. También le faltan características como la alta disponibilidad, la integración de datos y la inteligencia empresarial.
- Developer Edition: Incluye las mismas características y funcionalidades que la Enterprise Edition, pero limitadas por la licencia de software sólo para fines de desarrollo y pruebas.
- Enterprise Edition (EE): Oracle Database Enterprise Edition es para empresas más grandes que necesitan un gran rendimiento, seguridad, disponibilidad y escalabilidad de su infraestructura de base de datos. EE permite a las empresas desarrollar aplicaciones web de gran potencia, aplicaciones de procesamiento de transacciones en línea (OLTP) y almacenes de datos.
- Standard Edition 2 (SE2): Según Oracle, SE2 «incluye todas las características necesarias para desarrollar aplicaciones de grupo de trabajo, a nivel de departamento y de la web.» La SE2 está destinada en gran medida a las pequeñas y medianas empresas, al igual que SQL Server Standard Edition.
- Personal Edition (PE): La Personal Edition está destinada a ser utilizada por un único usuario en una sola máquina, y sólo está disponible en Windows. PE incluye toda la funcionalidad de Enterprise Edition, excepto la opción Oracle Real Application Clusters.
- Express Edition (XE): Por último, Express Edition es una versión básica y gratuita de Oracle Database. Puede actualizar fácilmente XE a las otras versiones mencionadas anteriormente. XE puede almacenar hasta 4 gigabytes de datos, utilizar 1 gigabyte de memoria y usar sólo 1 CPU.
- Replicación avanzada para la replicación unidireccional y multimaster de los datos en un sistema distribuido
- Compresión avanzada para mejorar el rendimiento y reducir su huella de almacenamiento
- Oracle Data Guard para alta disponibilidad, protección de datos, y recuperación ante desastres
- Computación paralela para escaneos de índices, reconstrucción de índices y recuperación de copias de seguridad
- Retirar el dinero de la cuenta corriente
- Añadir el dinero a la cuenta de ahorro
- Registrar la transferencia en el libro de cuentas del banco
.
Cada columna sólo puede contener un tipo de datos especificado, como una cadena, un entero o una fecha. Cada fila de la tabla contiene la información de un alumno diferente.
Supongamos también que tenemos una tabla «Geología101». Esta tabla contiene información sobre todos los alumnos que están cursando la clase de Geología 101.
Note que los alumnos pueden tener el mismo nombre y apellido, pero no el mismo número de identificación. Esto significa que debemos utilizar el campo «student_ID» para identificar de forma única a los estudiantes, no sus nombres.
Además de la columna «student_ID», la tabla «Geology101» también podría tener columnas para los resultados de los exámenes del estudiante, las puntuaciones de los deberes y la nota final.
SQL
Casi todos los sistemas de gestión de bases de datos relacionales utilizan SQL (Structured Query Language), un lenguaje específico del dominio para almacenar, acceder y manipular la información almacenada en bases de datos relacionales.
Las consultas SQL son comandos que obtienen información de una base de datos relacional. En general, las consultas SQL básicas utilizan tres cláusulas: SELECT, FROM y WHERE.
Supongamos que quiere los identificadores de todos los alumnos matriculados en Geología 101 que han recibido una calificación inferior a C en el primer parcial. La consulta SQL correspondiente tendría el aspecto siguiente:
SELECT student_ID
FROM Geology101
WHERE midterm1 < 70;
Esta consulta busca en la columna «midterm1» de la base de datos «Geology101» para encontrar las entradas que tienen menos de 70 (es decir.e., una calificación inferior a C). A continuación, devuelve la entrada correspondiente en la misma fila bajo la columna «student_ID».
Si en cambio desea toda la información sobre todos los estudiantes matriculados en la universidad, podría utilizar la consulta SQL simple:
SELECT *
FROM Students;
La palabra clave asterisco * selecciona todos los campos de la base de datos. Tenga en cuenta que la cláusula WHERE es opcional en este ejemplo.
Bases de datos relacionales vs. no relacionales
Las bases de datos relacionales son el paradigma más común para organizar grandes cantidades de información. Sin embargo, no son ni mucho menos el único.
Las «bases de datos no relacionales» (también llamadas bases de datos NoSQL) organizan los datos de una manera distinta a las tradicionales filas y columnas de una base de datos relacional. Pueden adoptar la forma de claves y valores, gráficos, documentos o varios otros paradigmas.
Las bases de datos relacionales normalmente sólo son capaces de trabajar con datos estructurados. Se trata de información que se ha organizado claramente en campos estandarizados discretos.
Las bases de datos no relacionales, sin embargo, destacan por trabajar con datos semiestructurados. Se trata de información que no está organizada en campos o registros. Sin embargo, los datos semiestructurados siguen conteniendo cierto grado de jerarquía para poder entender las relaciones entre las diferentes entradas.
Cuando se escalan las bases de datos a docenas o cientos de servidores, las bases de datos no relacionales tienden a tener un mejor rendimiento. Mientras tanto, las bases de datos relacionales son sencillas y familiares, y tienen un buen rendimiento para la mayoría de las situaciones.
Algunas de las bases de datos no relacionales más populares son:
Mientras tanto, las cuatro bases de datos relacionales más populares son:
.
En el resto de este artículo, analizaremos los pros y los contras de dos de estas bases de datos relacionales: SQL Server y Oracle Database.
¿Qué es SQL Server?
Microsoft SQL Server es un RDBMS desarrollado por Microsoft. Lanzado por primera vez en 1989, SQL Server ahora viene en más de una docena de ediciones y sabores diferentes, cada uno adecuado para un propósito y caso de uso diferente. Las cuatro ediciones principales de SQL Server 2017 son:
Cada una de estas cuatro ediciones está destinada a un público diferente. SQL Server Enterprise es para organizaciones grandes, de gran potencia y con datos, mientras que SQL Server Standard es para organizaciones con necesidades de datos menos intensivas.
Tanto la edición Express como la Developer son gratuitas. Sin embargo, tienen importantes limitaciones que las hacen inviables como solución a largo plazo para la mayoría de las organizaciones.
Como uno de los productos estrella de Microsoft, SQL Server ha recibido constantes actualizaciones y atención a lo largo de los años. Las recientes incorporaciones a la plataforma incluyen nuevas capacidades para el ajuste del rendimiento, el análisis operativo en tiempo real, el análisis de big data, la visualización de datos y el soporte de la nube híbrida.
¿Qué es Oracle Database?
Oracle Database es un RDBMS desarrollado por Oracle. Al igual que SQL Server, Oracle Database viene en cuatro ediciones separadas destinadas a diferentes casos de uso:
La mayoría de las empresas que eligen Oracle Database querrán utilizar EE o SE2. Para ayudarle a tomar su decisión, las características que se indican a continuación son algunas de las que están disponibles en EE pero no están presentes en SE2:
Al igual que SQL Server, Oracle Database ha estado innovando en los últimos años para mantenerse al día con las demandas de los clientes para el procesamiento de big data. Oracle Database es fácil de integrar con el resto de software empresarial de Oracle: contabilidad, planificación de recursos empresariales (ERP), gestión de relaciones con los clientes (CRM), etc.
SQL Server vs. Oracle Database: Pros, Contras y Diferencias
A continuación, analizaremos algunos de los puntos de distinción más importantes entre SQL Server y Oracle. Esto le ayudará a llegar a una decisión final que sea adecuada para su situación.
Dependencia de la plataforma
Como producto de Microsoft, SQL Server tradicionalmente solo ha estado disponible para el sistema operativo Windows. Sin embargo, a partir de SQL Server 2017, la plataforma está disponible también en Linux. Ten en cuenta que si quieres usar una versión anterior de SQL Server, tendrás que usarla con Windows.
Oracle, por su parte, tiene un largo historial de soporte tanto para Windows como para Linux. Oracle Database también está disponible para otros sistemas operativos basados en Unix, como Oracle Solaris, IBM AIX y HP-UX. Sin embargo, ni Oracle ni SQL Server son compatibles con Mac OS X.
Base de usuarios
Durante décadas, Oracle ha tenido mejor escalabilidad y seguridad que SQL Server, por lo que es más adecuado para las grandes empresas. Además, SQL Server sólo estaba disponible para Windows, dejando fuera a los usuarios de Linux.
Esta percepción ha evolucionado en los últimos años. Tanto Oracle como SQL Server han lanzado versiones empresariales y estándar maduras de su plataforma, tanto para Windows como para Linux.
La mayoría de los analistas estarían de acuerdo en que Oracle sigue teniendo una ligera ventaja sobre Microsoft tanto en lo que respecta a las características principales de las bases de datos como a la funcionalidad de vanguardia. Sin embargo, estas capacidades adicionales tienen un inconveniente. Oracle suele ser más complejo de gestionar, tiene una curva de aprendizaje más alta y su mantenimiento es más costoso.
Lenguaje
Tanto Oracle como SQL Server vienen con su propio «dialecto» del lenguaje SQL que amplía la funcionalidad básica de SQL. Oracle utiliza PL/SQL (Procedural Language/SQL), mientras que SQL Server utiliza T-SQL (Transact-SQL).
Como tal, los administradores de bases de datos que se especializan en Oracle, o en SQL Server, «hablarán» una versión ligeramente diferente de SQL. PL/SQL y T-SQL tienen cada uno sus propias características, habilidades y sintaxis.
Las principales diferencias entre PL/SQL y T-SQL son la forma en que los dos lenguajes manejan las variables, los procedimientos almacenados y las funciones incorporadas. PL/SQL también permite a los usuarios agrupar procedimientos en paquetes, lo que no es posible con T-SQL.
Sintaxis y esquema
Usar Oracle y SQL Server «se siente diferente» no sólo debido al sabor de SQL, sino también debido a las muchas variaciones en su sintaxis y esquema. Por ejemplo, debido a que DATE es una palabra reservada en Oracle pero no en SQL Server, es perfectamente legal tener una columna llamada DATE en SQL Server (pero no en Oracle).
Además, muchos tipos de datos que son los mismos bajo el capó tienen nombres diferentes en SQL Server y Oracle. Por ejemplo, el tipo INTEGER en SQL Server y el tipo NUMBER(10) en Oracle sirven para los mismos fines.
Estas diferencias son principalmente cosméticas, pero son importantes si está planeando una migración de una plataforma a la otra. Para ver una lista completa de las diferencias en la sintaxis, los tipos de datos y el esquema, puede consultar esta página en el sitio web de Oracle.
El control de transacciones
El control de transacciones es otro punto de partida importante entre Oracle y SQL Server. En una base de datos relacional, una transacción es una única unidad de trabajo que puede contener múltiples operaciones o tareas. Para no causar discrepancias en los datos, la base de datos debe aplicar o revertir todas las operaciones de la transacción. Una sola operación fallida provocará el fallo de toda la transacción.
Por ejemplo, cuando los clientes transfieren dinero entre sus cuentas corrientes y de ahorro, la transferencia debe ser una única transacción. Esta transacción consta de tres operaciones:
Si alguna de estas operaciones falla, la base de datos debe retroceder toda la transacción para que los saldos de las cuentas del cliente sean correctos.
SQL Server ejecuta las operaciones de una transacción de forma secuencial e individual. Esto hace que sea difícil o incluso imposible revertir la transacción si se produce un error a mitad de camino. El comando BEGIN TRANSACTION declara el comienzo de una transacción y el comando COMMIT declara el final. No es posible retroceder más allá de la sentencia COMMIT más reciente.
En Oracle, sin embargo, cada nueva conexión a la base de datos es una nueva transacción. Para la mayoría de los casos de uso, la base de datos realiza cambios en memoria y los consigna sólo con una sentencia COMMIT explícita. Esto es más flexible y permite un mayor control manual de los errores.
Precio y coste total
Mucho de lo que ocurre con SQL Server frente a Oracle es cuestión de opiniones, pero lo que no admite discusión es la comparación de precios. Las licencias de SQL Server son significativamente más baratas que las de Oracle.
Según una estimación, un servidor con 4 CPUs y 4 núcleos por CPU costaría 380.000 dólares con Oracle, pero sólo 114.000 dólares con SQL Server. Los costes aumentan aún más con características adicionales como el particionamiento de tablas, la compresión de datos y el procesamiento analítico en línea (OLAP).
Aunque el precio de etiqueta puede ser más bajo en SQL Server, también debe considerar el coste total de propiedad durante la vida útil de la base de datos. Esto incluye consideraciones como el soporte, el mantenimiento y la productividad durante el uso diario.
En este sentido, Oracle parece ganar, según un estudio de Oracle Database 11g y Microsoft SQL Server 2015. Los administradores de bases de datos cualificados pueden realizar las funciones típicas un 41% más rápido en Oracle que en SQL Server.
Este ahorro de tiempo se acumula con el tiempo. El mismo estudio estima que las mejoras de Oracle en la productividad de los DBA pueden ahorrar a las empresas hasta 33.000 dólares por DBA al año.
Pensamientos finales
En años y décadas anteriores, la cuestión de Oracle frente a SQL Server era más fácil de responder. Con más características y mayor complejidad, Oracle era mejor para las grandes empresas que necesitaban un alto rendimiento. SQL Server era mejor para las organizaciones que no querían ir a por todas.
Sin embargo, las líneas están empezando a difuminarse con las nuevas versiones tanto de SQL Server como de Oracle. Tanto Oracle como SQL Server son opciones maduras y excelentes para la gestión de bases de datos relacionales.
Al final, debe elegir la herramienta adecuada para el trabajo en función de su configuración tecnológica existente, su conjunto de habilidades internas, su presupuesto, sus proveedores y sus clientes. ¿Necesita asesoramiento sobre la cuestión de Oracle frente a SQL Server? Póngase en contacto con un socio de base de datos con experiencia que puede ayudar a dar el consejo correcto.
Acerca de SQLBot
SQLBot.co ofrece a los desarrolladores & profesionales de BI una herramienta de informes de correo electrónico Slack bot & muy simple. Introduce tu SQL y obtén instantáneamente informes bajo demanda en Slack o informes programados en Slack o por correo electrónico. Pruébalo hoy mismo.
0 comentarios