Buenas prácticas y tutoriales

Migración de datos de Oracle a Couchbase

Puede que conozcas Couchbase como la plataforma NoSQL más rápida y escalable disponible. Sin embargo, ¿sabías que Couchbase también puede ser una base de datos relacional? Couchbase es una plataforma de datos que puede operar con múltiples personalidades simultáneas en la misma plataforma. Puede ser estructurada o no estructurada. Y puede ser transaccional o analítica. En este blog, vamos a ver cómo mover datos de Oracle a Couchbase.

Fuente Base de datos Oracle

Para una base de datos fuente, vamos a utilizar Swingbench. Se trata de un generador de cargas de trabajo sintéticas para Oracle. Es autónomo y crea esquemas que recuerdan a lo que podría encontrarse en una aplicación de producción real. Para este blog, vamos a utilizar el esquema Simple Order Entry (SOE) creado por la utilidad. A continuación se muestra una representación visual del esquema SOE. Generando el esquema con un parámetro de escala de 1 da como resultado un conjunto de datos con unos 15 millones de registros.

Oracle to Couchbase - swingbench schema

Importación de datos

Para migrar los datos de Oracle a Couchbase, utilizaremos el método cbperf herramienta de demostración. Esta utilidad genera principalmente esquemas sintéticos aleatorios para Couchbase, pero también puede importar datos a Couchbase a través de un plugin desde fuentes de datos externas. El plugin de Oracle para cbperf replicará todas las tablas disponibles para el usuario que se conecta, copiará los datos de las tablas asociadas, y para cada tabla, extraerá las columnas que están indexadas para recrear los índices en Couchbase. 

Suponiendo que el esquema SOE se configuró con el nombre de usuario y la contraseña por defecto, que es soe y soerespectivamente, esta sintaxis exportará los datos de la base de datos SID testdb en el host orahost e importarlo al bucket de Couchbase soe con alcance soe donde un nodo del cluster es cbhost.

Los datos en Couchbase

Quitemos por adelantado una importante advertencia. Para una aplicación de producción, probablemente no querrás simplemente "levantar y cambiar" los datos e índices. En su lugar, se necesita hacer un análisis para determinar la configuración óptima en Couchbase junto con los cambios requeridos en la aplicación. El nivel final de esfuerzo variará según la aplicación.

Dicho esto, una vez que el cbperf habrá unos 15 millones de documentos en Couchbase. El sitio soe scope tendrá colecciones que corresponden a cada tabla de Oracle.

Estas son las tablas en Oracle:

Oracle tables for Couchbase import

Estas son las colecciones en Couchbase:

Couchbase collections set up for Oracle schema import

Cada fila que estaba en la base de datos Oracle es ahora un documento en Couchbase. La clave del documento se construye a partir del nombre de la colección más dos puntos ":" más el número secuencial del documento (básicamente el número de fila). Las claves JSON del documento son los nombres de las columnas de la tabla, y los valores son los valores de las columnas para esa fila.

Query in Oracle

Oracle document in Couchbase query

Por último, podemos ver todos los índices que se generaron automáticamente a partir de las columnas indexadas en la base de datos Oracle. Para permitir la mayor flexibilidad de consulta, cada índice cubre una columna. 

Oracle indexes imported into Couchbase

Ejecutar una consulta

Buscando en el código fuente de Swingbench, he encontrado la siguiente consulta:

Ejecutando esta consulta contra la base de datos Oracle, obtengo los siguientes resultados:

Oracle query results

Y ejecutando la consulta en Couchbase, obtengo los mismos resultados. Lo único que tuve que cambiar en la consulta fue anteponer a las colecciones el prefijo soe.soe. para construir un espacio de claves Couchbase.

Couchbase query results from Oracle import

table of query results in Couchbase

Dato curioso

Es posible que conozca el ORACLE_SID como identificador de instancia de la base de datos Oracle, pero ¿sabe lo que hace en secreto? Representa el Identificador del emplazamiento. Se codifica con ORACLE_HOME para obtener una clave SGA (System Global Area) que es la clave de memoria compartida en los sistemas Unix/Linux. Cuando se obtiene una ORA-01034: ORACLE no disponible es porque esta clave de memoria compartida no está presente en el sistema. Por lo tanto no puedes comunicarte con la base de datos. Afortunadamente, trabajar con Couchbase es mucho más sencillo, permitiéndote centrarte en otras cosas. A menos, por supuesto, que te gusten las cosas internas del sistema operativo.

Conclusión

Aunque pueda parecer una tarea desalentadora, importar datos de una base de datos relacional a Couchbase no es tan difícil. Para ser justos, hay más que considerar que sólo columnas e índices, como procedimientos almacenados (funciones definidas por el usuario en Couchbase), pero es ciertamente muy factible.

Referencias

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Michael Minichino

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.