Inicio > Base de datos > Una comparación de alto nivel entre Oracle y SQL Server

Una comparación de alto nivel entre Oracle y SQL Server

viernes, 23 de febrero de 2024 Dejar un comentario Ir a comentarios

Las organizaciones a menudo emplean un sin número de plataformas de base de datos en su arquitectura de sistemas de información. No es raro ver a medianas y grandes empresas utilizando de tres a cuatro diferentes paquetes de RDBMS. En consecuencia, los DBA de estas empresas aspiran a tener una amplia gama de habilidades a través de una serie de áreas.
Profesionales de la base de datos que han trabajado con una sola plataforma se preguntan a menudo sobre el aprendizaje de algo diferente a medida que avanzan en su carrera. Algunas personas se vuelven lo suficientemente valientes como para gastar tiempo, dinero y esfuerzo en tomar el camino del aprendizaje. Otros se enfrentan a la tarea de aprender un nuevo sistema que se une a una empresa o de búsqueda de puestos de trabajo. Y, sin duda, especialistas en contratación y los empleadores también prefieren candidatos que tengan experiencia en más de una área.


Desde mi experiencia he encontrado que cuando se trata de aprender una plataforma nueva base de datos, a menudo es mejor mirar a lo que ya sabemos y luego tratar de encontrar el equivalente en el nuevo entorno. Esto hace las cosas mucho más fácil. Claro, habrá nuevos conceptos para comprender y tal vez algún desaprender a hacer así, pero no estamos partiendo de cero tampoco. Para dar un ejemplo, un desarrollador de SQL Server que quiere escribir procedimientos almacenados de Oracle puede empezar mirando las funciones integradas y en qué difieren. También puede comparar quizá cómo se declaran variables y cómo se manejan los errores.

En este artículo voy a tratar de proporcionar un alto nivel de comparación entre Microsoft SQL Server y Oracle RDBMS (10g y superior). Nos centraremos principalmente en los conceptos arquitectónicos entre los dos. No es en modo alguno una lista exhaustiva, pero le ayudará a ver algunas de las similitudes y diferencias entre las dos plataformas de base de datos más utilizadas hoy en día las. Aunque esto ha sido escrito para un DBA SQL Server, puede ayudar a los profesionales de Oracle a mirar al otro lado de la cerca también.

Sin más preámbulos, vamos a empezar a explorar.

Sistemas operativos compatibles

Microsoft SQL Server ha sido siempre una parte de la familia de servidores Windows y hay pocas posibilidades de que Microsoft vaya a lanzar una versión para otro sistema operativo. En la actualidad, SQL Server se ejecuta en XP, Vista, Windows Server 2000, 2003 y 2008. La plataforma de base de datos está disponible para los de 32 bits y 64 bits de Windows.

Para el caso de Oracle, software de base de datos con soporte multiplataforma incluye no sólo Windows (32 bits y 64 bits), pero Linux y diferentes variantes de Unix (Solaris, HP-UX, AIX, etc) también.

Versiones y ediciones

En el momento de escribir esto, SQL Server 2008 es la versión actual del producto de base de datos de Microsoft. La próxima versión que saldrá es SQL Server 2008 R2 que se encuentra en su fase de CTP. La versión anterior, SQL Server 2005, vio una importante actualización de su predecesor, SQL Server 2000. SQL Server 2005 es todavía relativamente nueva para muchas empresas y hay todavía un gran número de organizaciones que utilicen bases de datos de SQL Server 2000.

Oracle por otro lado ha recorrido un largo camino desde sus primeros días y ahora está en la versión 11g R2. La versión más prominente de 10g R2 ha estado presente en el mercado por algún tiempo y es considerado un caballo de batalla. 10g es la primera versión de Oracle que introdujo el concepto de «grid computing». Hay empresas que siguen utilizando Oracle 9i para sus aplicaciones de negocio.

En términos de ediciones de SQL Server 2008 R2 ofrece actualmente los siguientes:

  • Enterprise Edition: La edición Enterprise tiene todas habilitadas las características avanzadas y es apto para a gran escala, sitios de base de datos de alto volumen.
  • Standard Edition: Esto ofrece una plataforma asequible para las empresas que no requieren de las funciones avanzadas de la Enterprise Edition. La mayoría de las empresas suele desplegar sus bases de datos en los instancias de la edición estándar.
  • Workgroup Edition: La edición de grupo de trabajo es adecuada para pequeñas aplicaciones departamentales e incorpora las características esenciales del producto.
  • Web Edition: Esta es la destinada a ser utilizada por los proveedores de alojamiento como solución back-end de bajo coste para aplicaciones web.
  • Express Edition: motor del servidor SQL embebido que puede ser utilizados para el almacenamiento local de datos y sistema de desarrollo de pequeñas escala. La edición Express se puede descargar gratis y pueden ser distribuída gratuitamente con un software.
  • Compact Edition: La edición Compact permite a los usuarios desarrollar aplicaciones para computadoras de escritorio de Windows y dispositivos de mano.
  • Developer Edition: Todas las características de la versión Enterprise Edition está disponible en la edición para desarrolladores. Sin embargo, tiene licencia de uso por un usuario a la vez y está destinado a ser utilizado para fines de desarrollo y pruebas.

Aparte de la versión Enterprise Edition, SQL Server 2008 R2 también ofrecerá dos ediciones «premium» para los grandes centros de datos y data warehouses. Estas ediciones se llamarán Datacenter Edition y el Parallel Data Warehouse Edition, respectivamente.

Para Oracle 11g R2, los variantes son:

  • Enterprise Edition: Esta ofrece el máximo rendimiento por tu dinero. Al igual que el SQL Server Enterprise Edition, todas las características y las capacidades del producto están permitido en esta edición.
  • Standard Edition: Al igual que el estándar SQL Server Edition, la edición estándar de Oracle tiene habilitadas las principales características del producto y es adecuado para aplicaciones de negocios.
  • Standard Edition One: Esta edición está diseñada para pequeños grupos de trabajo y la licencia para un mñaximo de 5 usuarios.
  • Express Edition: En pequeña escala, base de datos inicial para fines de desarrollo y tiene licencia para redistribuirlo libremente. Express Edition 10g está todavía en la versión R2.

El siguiente cuadro muestra la comparación entre las distintas ediciones de SQL Server y Oracle:

SQL Server 2008 R2 Oracle Database 11g R2
Enterprise Edition Enterprise Edition
Standard Edition Standard Edition
Workgroup Edition Standard Edition One
Edición Express Express Edition
Web Edition X
Compact Edition X
Developer Edition Enterprise Edition

Instancias, bases de datos y de tablas

Tal vez la primera diferencia de nivel entre la arquitectura de SQL Server y Oracle se encuentra en el concepto de instancias y bases de datos.

Una instancia en términos de SQL Server, significa un servicio de aplicación autocontenida que implica archivos del sistema operativo, las estructuras de memoria, los procesos de segundo plano y la información de registro. Una instancia está representada por un servicio en Windows y puede estar en ejecución o estado detenido. Cuando se ejecuta, una instancia ocupa una porción de la memoria del servidor, y también genera una serie de procesos de segundo plano.

Lo central de una instancia de SQL Server son sus bases de datos. Una base de datos de SQL Server es el repositorio de datos y el código del programa para la manipulación de esos datos. Si una instancia no se está ejecutando, las bases de datos dentro de ella no se puede acceder.

Hay dos tipos de bases de datos de SQL Server: bases de datos de sistema y de bases de datos de usuario. Cuando una instancia de SQL Server se instala por primera vez, cinco bases de datos del sistema se crean: model, tempdb, master, msdb y resource. Si existe más de una instancia de SQL Server que se ejecuta en un equipo, cada instancia tendrá su propio grupo dedicado de bases de datos del sistema. Una instancia no puede iniciar si cualquiera de sus bases de datos del sistema, excepto msdb esta inaccesible o está dañada. Las bases de datos del usuario por otro lado son creadas por desarrolladores y administradores de bases después que la instancia se ha instalado y el sistema de bases de datos ha iniciado. Estas son las bases de datos que almacenan la información de negocios de las organizaciones.
Así pues, en definitiva, una instancia de SQL Server siempre incluye bases de datos (incluso si sólo están las del sistema) y una base de datos estará siempre asociado con una (y sólo una) instancia.

En el nivel físico, una base de datos de SQL Server está representada por un conjunto de archivos del sistema operativo que residen en el sistema de disco del servidor. Hay dos tipos de archivos de base de datos: el archivo de datos (data file) y el archivo de registro de transacciones (transaction log file). Como mínimo, una base de datos tendrá un archivo de datos y un archivo de registro de transacciones. Un archivo de datos es el repositorio central de información en una base de datos SQL. Un archivo de registro de transacciones de otro lado registra los cambios que se han aplicado a los datos. Este archivo es requerido por SQL Server para la recuperación del sistema. Un archivo de datos o de registro siempre pertenecen a una determinada base de datos: no hay dos bases de datos pueden compartir los mismos datos o archivo de registro. Si la base de datos es grande, puede tener múltiples archivos de datos. Múltiples archivos de datos de en una base de datos puede ser lógicamente agrupadas en estructuras conocidas como grupos de archivos.

Con Oracle, las cosas funcionan en la dirección inversa. Cuando Oracle se inicia, funciona igual que SQL en que una porción de la memoria del servidor se asigna para su funcionamiento. Esta área de memoria, conocido como el Área Global de Sistema (SGA), se divide en una serie de estructuras diferentes. Junto con el espacio de memoria, una serie de procesos de fondo que también se inician para interactuar con el SGA. En conjunto, el espacio de memoria y los procesos constituyen una instancia de Oracle. Tenga en cuenta que la base de datos Oracle todavía no está presente. De hecho, una instancia de Oracle podría estar funcionando perfectamente bien sin su base de datos en línea o incluso ser accesible. Cuando instalas Oracle, hay una opción para instalar sólo el software y crear la base de datos más tarde.
Una base de datos en Oracle es una colección de archivos de sistema operativo. A diferencia de SQL Server, una base de datos Oracle no representan a la agrupación lógica de los objetos, sino que es un único término genérico para una serie de archivos en el disco que principalmente tienen datos.

Los archivos que componen una base de datos de Oracle se pueden clasificar en tres tipos: el archivo de datos (data file), archivo de rehacer (redo log file) y el archivo de control (control file). Los archivos de datos es donde residen todos los datos. Puede haber cualquier número de archivos de datos en una base de datos de Oracle. Archivos Rehacer son como los archivos de registro de transacciones de SQL Server que registra que cada cambio realizado a los datos y se utiliza para la recuperación del sistema. Los archivos de control son un tipo especial de archivo que contiene pequeñas piezas de información vital acerca de la base de datos. Sin este archivo, la instancia no será capaz de abrir la base de datos.
Aparte de los archivos de datos, archivos rehacer y los archivos de control, la base de datos contendrá también un archivo de parámetros , y un archivo de contraseñas, opcionalmente,archivos de registro de archivado (archive log file). Vamos a discutir acerca de cada tipo de archivos de base de datos Oracle en breve.

Cuando se inicia un sistema de Oracle, primero la instancia se crea en la memoria. La instancia a continuación, se conecta a la base de datos que residen en el disco y, finalmente, se abre la base de datos para la interacción del usuario. Cuando el sistema se apaga, la instancia se borrará de la memoria: todas las estructuras de memoria y los procesos se terminan, pero la base de datos todavía existen en el disco, aunque en un estado cerrado. Como se dijo anteriormente, es posible tener la instancia de Oracle que se ejecutan sin necesidad de abrir la base de datos – es una gran diferencia de SQL Server donde una instancia no puede comenzar sin primero tener sus bases de datos de sistemas en línea. Sin embargo, como SQL Server, es imposible conectarse a una base de datos de Oracle, si la instancia no ha comenzado.

En general, la relación entre una instancia de Oracle y su base de datos es uno a uno. Una instancia tendrá una base de datos asociada con ella. Una base de datos por otra parte puede tener una o más instancias para acceder a ella. Una instalación independiente de Oracle constará de una única instancia de acceso a una base de datos única. Las instalaciones de Oracle configuradas como RAC (Real Application Cluster) tendrán varias instancias que se ejecutan en diferentes máquinas que acceden a la misma base de datos en un disco compartido.

Entonces, ¿dónde está la agrupación lógica de los objetos de base de datos Oracle? En SQL Server, esta agrupación lógica es realizada por la propia base de datos. Para Oracle, se realiza a través de algo llamado espacios de tablas (tablespaces). Un espacio de tablas de Oracle es una estructura lógica que agrupa a las tablas, vistas, índices y otros objetos de la base de datos. Por ejemplo, la base de datos Oracle de producción puede tener uno de tablas dedicado a la aplicación de recursos humanos y otro de tablas para la nómina. Cada espacio de tablas está físicamente representado por uno o más archivos de datos en el disco y forma parte de la base de datos. La base de datos es, lógicamente, compuesto de una serie de espacios de tabla y los espacios de tabla, a su vez están físicamente compuesto de uno o más archivos de datos.

El equivalente de Oracle para las base de datos de SQL Server es un espacio de tablas.

Y puesto que son tan similares en sus funciones, el proceso de creación de una base de datos en SQL Server es muy similar a la creación de un espacio de tablas en Oracle. Cuando se crea una base de datos o de un espacio de tablas, el DBA debe especificar un nombre. El DBA asigna uno o más archivos de datos a la base de datos o tablas de espacios y especifica el tamaño inicial y los incrementos de crecimiento de cada archivo.

Al igual que una base de datos de usuario de SQL Server se puede poner fuera de línea o de sólo lectura, también se puede en un espacio de tablas de usuario de Oracle. Y al igual que uno o más archivos de datos en una base de datos de usuarios de SQL Server puede ser de sólo lectura, uno o más archivos de datos en un espacio de tablas de usuarios de Oracle pueden ser marcados fuera de línea.

Sin embargo, las bases de datos y de tablas difieren entre sí en las siguientes puntos:

  • En SQL Server, los archivos de datos puede ser, lógicamente, agrupados en grupos de archivos. Los espacios de tablas de Oracle no tienen este concepto.
  • En las bases de datos SQL Server, cada base de datos tendrá su propio registro de transacciones y las propiedades del archivo de registro deberá ser especificado durante la creación de bases de datos. Para Oracle, las transacciones de la base de datos completa (esto significa que por cada espacio de tablas) se registran en un registro rehacer (redo log). Por consiguiente, no existe ninguna disposición para crear archivos de registro individuales para espacios de tablas.
  • Para SQL Server, la base de datos puede ser creada con el modo de recuperación simple. El modo de recuperación simple: la parte inactiva del registro de base de datos se trunca después de cada punto de control. Oracle tiene un concepto similar, que veremos más adelante – pero no es posible configurar esa propiedad para espacios de tablas individuales.

Los nombres de instancia vs SID

Ambos SQL Server y Oracle permiten ejecutar simultáneamente varias instancias del software servidor en el mismo equipo. Estos múltiples contextos de ejecución son totalmente independientes unos de otros: en lo que se refiere a un motor de base de datos, no sabe ni le importa si otro se está ejecutando en el mismo equipo.

En SQL Server, este mecanismo se activa a través del concepto de instancias. SQL Server puede funcionar tanto como una instancia nombrada o como una instancia predeterminada. La instancia predeterminada tiene el mismo nombre que el servidor de Windows que lo hospeda. Obviamente, puede ser acogida una sola instancia predeterminada, pero es posible ejecutar varias instancias nombradas en esa misma máquina. Una instancia con nombre se identifica en la forma de HOSTNAME\INSTANCE_NAME, donde cada INSTANCE_NAME ejecutándose en la máquina tiene que ser único. Cada instancia tendrá su propio conjunto de archivos binarios con algunos componentes comunes y compartidos entre todos.

Para Oracle, funciona de la misma manera. Cuando se instala Oracle, el DBA debe especificar un nombre global de base de datos (Global Database Name) y un identificador del sistema (SID). La instancia y bases de datos son entidades completamente separadas en Oracle. Un nombre de base de datos global identifica unívocamente a una base de datos en la red donde se encuentra alojada y puede tener un nombre completo en la forma de database_name.network_domain_name. Un SID por otra parte identifica la instancia asociada con la base de datos. En la mayoría de los casos una sola instancia se asocia a una única base de datos, el SID y el nombre de base de datos será el mismo. Los entornos de Oracle Real Application Cluster (RAC) son una excepción: RAC permite que múltiples instancias accedan a la misma base de datos alojada en un almacenamiento compartido; los nombres de instancia son diferentes del nombre de base de datos en estos casos. Sin embargo, al igual que un equipo de SQL Server, un servidor de base de datos Oracle no puede tener dos instancias en ejecución con el mismo SID.

Un DBA de SQL Server puede ejecutar la siguiente consulta para saber el nombre de la instancia a la que está actualmente conectado a:

SELECT @@SERVERNAME

Un DBA Oracle ejecutar consultas como la siguiente para obtener la instancia y el nombre de base de datos:

SELECT INSTANCE_NAME, HOST_NAME, VERSION, DATABASE_STATUS FROM V$INSTANCE;
SELECT NAME, DATABASE_ROLE, CREATED FROM V$DATABASE;

Sistema de bases de datos y sistema de tablas

Una instancia de SQL Server dispondrá de cinco bases de datos de sistema (cuatro para las versiones anteriores de 2005) presente: master, model, msdb, tempdb y resource. Una base de datos Oracle necesita un mínimo de tres espacios de tablas de sistema para su funcionamiento: SYSTEM , SYSAUX y TEMP.

Las base de datos master y resource son los repositorios centrales de toda la información de SQL Server para gestionar las necesidades de sí mismo. Entre muchas otras cosas, contiene la configuración de su sistema, la lista de bases de datos y la ubicación de sus archivos, puntos finales, servidores vinculados y las cuentas de usuario (o «logins»). Objetos de nivel de sistema se almacenan en una base de datos de sólo lectura conocida como base de datos “resource”.

Para Oracle, el espacio de tablas del sistema es el equivalente de la base de datos master. El espacio de tablas SYSTEM contiene el diccionario de datos, que son los metadatos de Oracle sobre sí misma. El diccionario de datos se puede comparar con la base de datos de recursos de SQL. Y probablemente ya has adivinado: Oracle no se iniciará si el espacio de tablas del sistema no está disponible o está dañado.

Para una instancia de SQL Server, la base de datos model es la «plantilla» que se utiliza para crear cada nueva base de datos en esa instancia. Se puede realizar un cambio en la base de datos model y el cambio se reflejará después en cada nueva base de datos creada. Para Oracle, no existe tal modelo, pero cuando se crea un espacio de tablas, puede especificar si será un espacio de tablas permanente o de cualquier otro tipo como un espacio de tablas TEMP o UNDO. Los espacios de tablas permanentes son los que contienen datos de usuario.

Tempdb de SQL Server se utiliza como una «scratch pad» para la instancia en su conjunto. Tempdb se crea cada vez que la instancia se reinicia y destruyó cada vez que la instancia se cierra. Los espacio de tablas TEMP de después hacen más o menos la misma tarea: se utiliza para ordenar los resultados que tienen operaciones a gran escala. Sin embargo, tempdb de SQL también se puede utilizar para versionado de filas. Cuando se activa para una base de datos, el versionado de filas asegura que el motor de base de datos mantiene un registro de cada versión de una fila de datos cuando se modifican. El copia pre-modificada de la fila es copiada en un almacén de versiones en la base de datos tempdb. Las consultas solicitando la fila de datos siempre tendrán la última versión confirmada. Cuando una operación de lectura utiliza un nivel de aislamiento basado en versionado de filas, no bloquea otras transacciones que intentan modificar los mismos datos. Esto es porque la consulta de lectura no pone un bloqueo compartido en las filas de datos. Sin embargo, este comportamiento debe ser explícitamente habilitado para cada base de datos.

Oracle utiliza el mismo concepto con otro tipo de espacios de tablas – conocido como el espacio de tablas UNDO. Un espacio de tablas UNDO tiene la posibilidad de copiar lecturas consistentes de datos que están siendo modificadas por una declaración DML. Cuando un usuario comienza a hacer cambios a los datos, una versión previa a la modificación de los datos es almacenada en el espacio de tabla UNDO. Si otro usuario desea consultar las mismas filas de los datos, obtendrá la versión previa a la modificación desde el espacio de tabla UNDO. A diferencia de SQL, esta función no tiene que ser activada explícitamente – es parte del mecanismo de acceso concurrente a datos de Oracle.

Por último, la base de datos msdb de SQL Server es necesaria para el funcionamiento de su servicio de Agente. El Agente SQL Server es el responsable de los trabajos programados, alertas, la replicación y el trasvase entre muchas otras cosas. Sin la base de datos msdb, el servicio del agente no se ejecuta.

No existe un equivalente claro de msdb en Oracle. El espacio de tablas SYSAUX es un espacio de tablas del sistema, creado durante el proceso de instalación. Contiene información como el Repositorio de Carga de Trabajo Automático (AWR) de Oracle, datos espaciales y multimedia, bases de datos XML, etc

Comparte y diviertete:
  • Print
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Yahoo! Buzz
  • Twitter
  • Google Bookmarks
  • BarraPunto
  • Bitacoras.com
  • BlinkList
  • Blogosphere
  • Live
  • Meneame
  • MSN Reporter
  • MySpace
  • RSS
  • Suggest to Techmeme via Twitter
  • Technorati
  • LinkedIn
  • email
  • FriendFeed
  • PDF
  • Reddit
  • Wikio IT
  • Add to favorites
  • blogmarks
Top Footer