{"id":4484,"date":"2018-01-22T13:51:07","date_gmt":"2018-01-22T21:51:07","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4484"},"modified":"2025-06-13T17:32:52","modified_gmt":"2025-06-14T00:32:52","slug":"couchbase-oracle-developers-part-2-architecture","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-oracle-developers-part-2-architecture\/","title":{"rendered":"Couchbase para desarrolladores Oracle - Parte 2 : Arquitectura"},"content":{"rendered":"<p>En noviembre, <a href=\"https:\/\/www.linkedin.com\/in\/raju-suravarjjala-7abb962\/\">Raju Suravarjjala<\/a>(Sr. Director, Couchbase QE &amp; Performance) y yo presentamos \"Mindmap: Oracle to Couchbase For Developers\". Puedes ver las diapositivas aqu\u00ed:\u00a0<a href=\"https:\/\/bit.ly\/2mPdJfo\">https:\/\/bit.ly\/2mPdJfo.<\/a>\u00a0El art\u00edculo general de la serie est\u00e1 en\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-oracle-developers-part-2-architecture\/\">https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/<\/a>. Esta serie est\u00e1 escrita en colaboraci\u00f3n con Raju.<\/p>\n<p><span style=\"font-weight: 400\">Esta es la segunda parte de la serie \"Couchbase para desarrolladores de Oracle\" que discute la arquitectura de alto nivel de las dos bases de datos desde la perspectiva de un desarrollador. El blog asume que tienes conocimiento de Oracle y no explica las caracter\u00edsticas de Oracle, excepto por razones de comparaci\u00f3n y contraste. Esta comparaci\u00f3n y contraste es s\u00f3lo para eso.  No pretende evaluar una caracter\u00edstica o rendimiento frente a otra. \u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Tanto Oracle como Couchbase se desarrollaron para gestionar trabajos espec\u00edficos de aplicaciones empresariales.  Ambos se han expandido y se est\u00e1n expandiendo. Coexisten en las empresas.  Es con esta sensibilidad, que estamos proporcionando una comparaci\u00f3n de estos productos para ayudar a los desarrolladores de Oracle a entender lo que es Couchbase. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Pasemos ahora a la arquitectura.<\/span><\/p>\n<div class=\"responsive-table\">\n<table>\n<tbody>\n<tr>\n<td>Tema<\/td>\n<td>Oracle<\/td>\n<td>Couchbase<\/td>\n<\/tr>\n<tr>\n<td>Despliegue de un solo nodo<\/td>\n<td>Oracle es una base de datos monol\u00edtica de instancia \u00fanica (en el despliegue mostrado en 1).  De hecho, se desarroll\u00f3 originalmente para ejecutarse en una sola m\u00e1quina y funciona bien en una m\u00e1quina SMP (multi-socket, multi-core).  Todas las capas de una base de datos (l\u00f3gica, gesti\u00f3n del espacio f\u00edsico, bloqueo, registro, se gestionan desde una \u00fanica m\u00e1quina).   El c\u00f3digo se ejecuta en un \u00fanico subproceso (o subprocesos cooperativos) con bloqueo de recursos dise\u00f1ado para una \u00fanica m\u00e1quina.<\/p>\n<p>Esta configuraci\u00f3n es la mayoritaria en el despliegue de desarrollo y producci\u00f3n. Cuando te quedas sin capacidad de disco, a\u00f1ades capacidad.  Cuando te quedas sin capacidad de CPU, migras la carga de trabajo a una m\u00e1quina m\u00e1s grande con m\u00e1s sockets, m\u00e1s n\u00facleos.  O, hoy en d\u00eda, a m\u00e1quinas virtuales o contenedores m\u00e1s grandes.<\/p>\n<p>La APP para la comunicaci\u00f3n con el servidor utiliza el protocolo propietario oracle. Los SDK de nivel superior funcionan sobre este.<\/td>\n<td><span style=\"font-weight: 400\">El servidor Couchbase se puede instalar en un \u00fanico servidor y normalmente se instala en un \u00fanico nodo (MacOS, Linux o Windows) para el desarrollo. Todas las funciones de la base de datos se abstraen en servicios (capa de datos, \u00edndice, consulta, con APIs para acceder a los datos directamente o mediante consulta).  Estos servicios se coordinan para exponer los servicios a trav\u00e9s de REST API.  Las aplicaciones utilizan\u00a0<\/span><span style=\"font-weight: 400\">Couchbase SDKs (disponible en todos los lenguajes populares) para obtener datos, crear \u00edndices, ejecutar consultas N1QL.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Esta configuraci\u00f3n se utiliza principalmente para el desarrollo en su ordenador port\u00e1til, VM o un contenedor. Rara vez o nunca se utiliza en el despliegue. De hecho, Couchbase te avisa cuando has desplegado en un solo nodo, \u00a1solo hay una copia de tus datos!<\/span><\/p>\n<p><span style=\"font-weight: 400\">La API para la comunicaci\u00f3n con el servidor es a trav\u00e9s de la API REST y el protocolo binario Memcached.  Todos los dem\u00e1s SDK de nivel superior utilizan protocolos REST o Memcached por debajo.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Idiomas<\/span><\/td>\n<td><span style=\"font-weight: 400\">SQL, PL\/SQL,XQuery, SES (B\u00fasqueda Empresarial Segura)<\/span><\/td>\n<td><span style=\"font-weight: 400\">N1QL (SQL para JSON), Acceso directo a datos, FTS (b\u00fasqueda de texto completo). <\/span><\/td>\n<\/tr>\n<tr>\n<td>Conexiones<\/td>\n<td>Conexi\u00f3n persistente entre el proceso de usuario y el proceso\/hilo de base de datos que se ejecuta en nombre de la aplicaci\u00f3n cliente.<\/td>\n<td>Conexi\u00f3n HTTP sobre TCP\/IP.<br \/>\nConexi\u00f3n para MemcachedCada solicitud de obtenci\u00f3n\/modificaci\u00f3n de datos, consulta es una solicitud distinta. Utilizamos TCP y HTTP keep-alive para que la solicitud de conexi\u00f3n sea eficiente.<\/td>\n<\/tr>\n<tr>\n<td>Sesi\u00f3n<\/td>\n<td>Una sesi\u00f3n comienza desde CONNECT hasta QUIT. Cada \"sesi\u00f3n\" de aplicaci\u00f3n tiene una sesi\u00f3n correspondiente en el servidor Oracle. Dentro de una sesi\u00f3n, se puede ejecutar una consulta o un mill\u00f3n de consultas que abarquen varias transacciones.<\/td>\n<td>Al igual que en connection, en Couchbase, cada petici\u00f3n es una petici\u00f3n distinta. Cada petici\u00f3n tiene que llevar tanto par\u00e1metros bind como cualquier par\u00e1metro de contexto (por ejemplo, timeout). Una vez procesada la petici\u00f3n, el contexto de sesi\u00f3n desaparece del servidor.<\/p>\n<p>Sin embargo, nada impide que los SDK recuerden el contexto y los par\u00e1metros y los transmitan en peticiones posteriores sin intervenci\u00f3n de la aplicaci\u00f3n, lo que facilita la codificaci\u00f3n.<\/td>\n<\/tr>\n<tr>\n<td>Usuario, autenticaci\u00f3n<\/td>\n<td>Soporta usuario OS, usuario de base de datos. La autenticaci\u00f3n se puede hacer por OS, base de datos, terceros como LDAP, kerberos.<\/td>\n<td>Soporta usuario OS, usuario de base de datos. La autenticaci\u00f3n se puede hacer por OS, base de datos, terceros como LDAP, kerberos.<\/td>\n<\/tr>\n<tr>\n<td>Base de datos<\/td>\n<td>Por debajo de la instancia, la base de datos es la unidad de gesti\u00f3n de datos y control de acceso de nivel superior para usuarios y aplicaciones.<\/p>\n<p>Una instancia de Oracle puede tener varias bases de datos.<br \/>\nUna base de datos Oracle puede tener varias tablas (adem\u00e1s de las tablas\/cat\u00e1logos del sistema).<\/td>\n<td>Una instancia de Couchbase puede tener hasta 10 BUCKETS. A cada bucket se le asigna una cantidad fija de memoria (en cada nodo). Se utiliza para almacenar en cach\u00e9 los datos en los nodos de datos. Piensa en ello como el buffer pool para los datos en Oracle.<\/p>\n<p>En cada bucket se almacenan documentos JSON. Cada documento JSON de un mismo bucket debe tener una clave \u00fanica (similar a la clave primaria de las tablas).<\/p>\n<p>Dentro de cada cubo, puede tener varios tipos de documentos (como tablas y colecciones).<\/p>\n<p>Para permitir la unicidad e identificar el tipo de documento con s\u00f3lo mirar la clave, anteponemos a la clave del documento el tipo de documento.<\/p>\n<p>Por ejemplo: \"cust.x817.022.4u2\"<br \/>\n\u201ccust.x2317.402.2742\u201d<br \/>\n\"parts.lkfh38.sldkv\"<br \/>\n\"parts.lkfh38.sldkv\"<br \/>\n\"parts.lkfh38.sldkv\"<br \/>\nTambi\u00e9n es t\u00edpico almacenar el tipo de documento dentro del documento.<\/p>\n<p>{ \"type\": \"cust\", \"lname\": \"Smith\"}<br \/>\n{\"tipo\": \"parts\", \"dept\": \"engine\"}<\/td>\n<\/tr>\n<tr>\n<td>Cuadro<\/td>\n<td>Cuadro<\/td>\n<td>Tipos de documentos dentro de un bucket.<br \/>\nLos documentos de clientes (con prefijo cust) se convierten en un grupo l\u00f3gicamente y los documentos de piezas tambi\u00e9n se convierten en un grupo. No hay separaci\u00f3n f\u00edsica, salvo en el contexto de un \u00edndice y una consulta.<\/td>\n<\/tr>\n<tr>\n<td>Columna<\/td>\n<td>Columna<\/td>\n<td>Todos los documentos en Couchbase tienen que ser documentos JSON conformes a https:\/\/json.org\/<br \/>\nConsidere un simple documento JSON de 1 nivel.<br \/>\nClave de documento: \"cust:2984\"<br \/>\nDoc: {\"a\":1, \"b\": True, \"c\": \"Hola\"}<br \/>\nEn su mapa mental, puede pensar en este documento como una fila, los atributos individuales, \"a\", \"b\", \"c\" como columnas, la clave del documento como clave primaria.<br \/>\nJSON puede contener arrays y objetos, arrays de objetos, objetos que contienen arrays. Los nombres de los atributos se referencian de arriba hacia abajo (piense en los objetos en Oracle.Esto se discutir\u00e1 en detalle en la secci\u00f3n \"Tipos de base de datos\".<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Estructuras de esquema l\u00f3gicas y f\u00edsicas.<\/span><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">SDKs<\/span><\/td>\n<td><a href=\"https:\/\/bit.ly\/20TCGn0\">https:\/\/bit.ly\/20TCGn0<\/a><\/p>\n<p><a href=\"https:\/\/bit.ly\/2FoiFP8\">https:\/\/bit.ly\/2FoiFP8<\/a><\/td>\n<td>https:\/\/www.couchbase.com\/downloads\u00a0\u00a0<span style=\"font-weight: 400\">(despl\u00e1cese hacia abajo hasta SDKs)\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td>Arquitectura multinodo<br \/>\n(Despliegue homog\u00e9neo).<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>Despliegue multidimensional<\/td>\n<td>No disponible. Cada nodo en Oracle RAC tiene plena capacidad Oracle SQL incluyendo la capacidad transaccional y administrativa.<\/td>\n<td>&nbsp;<\/p>\n<p>Cada nodo del cl\u00faster puede tener una o varias combinaciones de los servicios: Datos, Consulta, \u00cdndice, B\u00fasqueda y An\u00e1lisis. El gestor del cl\u00faster (coordinador) conoce la distribuci\u00f3n y disponibilidad de los servicios e informar\u00e1 a los servicios entre s\u00ed.<\/p>\n<p>El SDK tambi\u00e9n es consciente de la distribuci\u00f3n de datos, consulta y nodos FTS. El SDK intenta equilibrar la carga de trabajo entre los distintos nodos de consulta para la carga de trabajo de consulta, los nodos de datos para la carga de trabajo de datos\/KV, los nodos FTS para la carga de trabajo de b\u00fasqueda.<\/td>\n<\/tr>\n<tr>\n<td>Arquitectura del sistema<\/td>\n<td>La implantaci\u00f3n en un \u00fanico nodo es adecuada para SMP.<br \/>\nEl despliegue multi-nodo comparte el mismo disco\/almacenamiento. De ah\u00ed lo de Sistema de Disco Compartido. Se puede escalar hasta cierto punto a\u00f1adiendo m\u00e1s computaci\u00f3n y compartiendo el mismo disco. A la larga, el disco compartido y el rendimiento de E\/S se convierten en el cuello de botella.El desarrollador es ajeno (en su mayor parte) al tipo de instancia: nodo \u00fanico o RAC multinodo. Oracle ha desarrollado un sofisticado gestor de bloqueos distribuidos, sincronizaci\u00f3n de buffer pool, etc. para conseguirlo. Requiere el costoso infiniband para reducir cualquier efecto negativo en el rendimiento.<\/p>\n<p>A pesar de ello, no es infrecuente particionar la carga de trabajo entre varios nodos RAC para minimizar los conflictos en el bloqueo, etc.<\/td>\n<td>Un \u00fanico nodo puede ampliarse, implementado como servicios m\u00faltiples cooperativos que se ejecutan en un \u00fanico sistema. La coordinaci\u00f3n se realiza mediante el paso de mensajes, incluso en un \u00fanico sistema.<\/p>\n<p>Este conjunto de servicios poco acoplados se presta a escalarse sin problemas. Puedes tener todos los servicios en cada nodo y simplemente a\u00f1adir nuevos nodos con los mismos servicios. Todos los servicios entender\u00e1n la topolog\u00eda multinodo. Esto se conoce como escalabilidad horizontal.<\/p>\n<p>Las aplicaciones no utilizan todos los servicios de manera uniforme. Los cuellos de botella pueden estar en los datos, el indexador de la consulta. As\u00ed, en Couchbase, se dimensionan y a\u00f1aden nuevos nodos simplemente para ejecutar los servicios con cuellos de botella. Esto proporcionar\u00e1 una utilizaci\u00f3n \u00f3ptima de los recursos y un mejor rendimiento en comparaci\u00f3n con un despliegue homog\u00e9neo. Tambi\u00e9n reducir\u00e1 tus costes. El escalado multidimensional es f\u00e1cil de desplegar como cualquier otra configuraci\u00f3n y la manejabilidad sigue siendo la misma.<\/td>\n<\/tr>\n<tr>\n<td>Consulta<\/td>\n<td>Oracle tiene soporte completo de SQL.<br \/>\nLas extensiones SQL incluyen soporte para JSON y b\u00fasqueda de texto.<br \/>\nOracle tambi\u00e9n dispone de XML DB, compatible con XML, XQuery, SQL\/XML, etc.<\/td>\n<td>Couchbase puede almacenar binarios y JSON.<br \/>\nLas API para desarrolladores pueden GET y SET documentos, subdocumentos directamente.<br \/>\nN1QL (SQL para JSON) proporciona un lenguaje declarativo. Viene con \u00edndices y un motor de consulta completo para ejecutar consultas de manera eficiente. M\u00e1s informaci\u00f3n en: query.couchbase.com.<br \/>\nCouchbase FTS (Full Text Search) te ayuda a crear \u00edndices y b\u00fasquedas de texto.<br \/>\n<a href=\"https:\/\/bit.ly\/2vbcbOF\">https:\/\/bit.ly\/2vbcbOF<\/a><\/td>\n<\/tr>\n<tr>\n<td>Alta disponibilidad<\/td>\n<td>MAA (Maximum Availability Architecture) de Oracle recomienda: \"En la pantalla de configuraci\u00f3n del Cluster, en la secci\u00f3n Disk Group Details, MAA recomienda elegir Oracle Automatic Storage Management (ASM) HIGH redundancy para TODOS los grupos de discos (DATA y RECO) para obtener la mejor protecci\u00f3n y la mayor simplicidad operativa\"<\/p>\n<p>Oracle permite crear servidores en espera en caliente, replicaci\u00f3n basada en esquemas, captura de cambios y probablemente mucho m\u00e1s.<\/td>\n<td>Dentro de un mismo cluster, puedes tener m\u00faltiples copias de datos e \u00edndices con s\u00f3lo especificar el n\u00famero de copias que deseas tener. Puedes tener hasta 3 copias de los datos y cualquier n\u00famero de copias del \u00edndice.<\/p>\n<p>A trav\u00e9s de m\u00faltiples cl\u00fasteres, puede replicar los datos con XDCR integrado (replicaci\u00f3n entre centros de datos).<\/td>\n<\/tr>\n<tr>\n<td>Transacciones<\/td>\n<td><span style=\"font-weight: 400\">\u00c1CIDO<\/span><\/p>\n<p><span style=\"font-weight: 400\">Declaraci\u00f3n m\u00faltiple<\/span><\/td>\n<td>Atomicidad de un solo documento<br \/>\nConsistencia del Servicio de Datos, \u00cdndice - consistencia eventual<br \/>\nbloqueo optimista (CAS)<br \/>\nconfirmaci\u00f3n adicional de durabilidad<\/td>\n<\/tr>\n<tr>\n<td>Conductores<\/td>\n<td>JDBC, ODBC, .NET, LINQ y mucho m\u00e1s<\/td>\n<td>SDK de Couchbase (Java, .NET, LINQ, PHP, Python, Go), Simba JDBC\/ODBC<\/td>\n<\/tr>\n<tr>\n<td>Modelo de datos<\/td>\n<td>Admite modelos de datos normalizados y desnormalizados.<\/td>\n<td>Modelo JSON desnormalizado (agregado).<br \/>\nSe pueden representar y procesar relaciones entre varios tipos de documentos (por ejemplo, pedidos a clientes). Tanto el hijo (pedidos) como el padre (cliente) pueden almacenar la clave primaria de los documentos relacionados y luego UNIRLOS. Esta relaci\u00f3n est\u00e1 impl\u00edcita, no codificada por una restricci\u00f3n (por ejemplo, Foreign Key Constraint) en Couchbase. Esta es la raz\u00f3n por la que Couchbase es m\u00e1s flexible.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Back in November, Raju Suravarjjala, (Sr. Director, Couchbase QE &amp; Performance) and I\u00a0 presented \u201cMindmap: Oracle to Couchbase For Developers\u201d. You can see the slide deck here:\u00a0https:\/\/bit.ly\/2mPdJfo.\u00a0Overview article for the series is at is at\u00a0https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/. This series is written in [&hellip;]<\/p>","protected":false},"author":55,"featured_media":4485,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1821,1812],"tags":[1311,1497,1261,1458,1592],"ppma_author":[8929],"class_list":["post-4484","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-couchbase-architecture","category-n1ql-query","tag-architecture","tag-developer","tag-json","tag-migration","tag-oracle"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase for Oracle Developers \u2013 Part 2 : Architecture - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Check the second part of &quot;Couchbase for Oracle Developers\u201d series discussing the high-level architecture of the two databases from a developer perspective.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-oracle-developers-part-2-architecture\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase for Oracle Developers \u2013 Part 2 : Architecture\" \/>\n<meta property=\"og:description\" content=\"Check the second part of &quot;Couchbase for Oracle Developers\u201d series discussing the high-level architecture of the two databases from a developer perspective.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-oracle-developers-part-2-architecture\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-01-22T21:51:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T00:32:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-21-at-6.50.38-PM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1364\" \/>\n\t<meta property=\"og:image:height\" content=\"826\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Keshav Murthy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rkeshavmurthy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Keshav Murthy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/\"},\"author\":{\"name\":\"Keshav Murthy\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636\"},\"headline\":\"Couchbase for Oracle Developers \u2013 Part 2 : Architecture\",\"datePublished\":\"2018-01-22T21:51:07+00:00\",\"dateModified\":\"2025-06-14T00:32:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/\"},\"wordCount\":1695,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-21-at-6.50.38-PM.png\",\"keywords\":[\"Architecture\",\"developer\",\"JSON\",\"migration\",\"oracle\"],\"articleSection\":[\"Application Design\",\"Couchbase Architecture\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/\",\"name\":\"Couchbase for Oracle Developers \u2013 Part 2 : Architecture - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-21-at-6.50.38-PM.png\",\"datePublished\":\"2018-01-22T21:51:07+00:00\",\"dateModified\":\"2025-06-14T00:32:52+00:00\",\"description\":\"Check the second part of \\\"Couchbase for Oracle Developers\u201d series discussing the high-level architecture of the two databases from a developer perspective.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-21-at-6.50.38-PM.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-21-at-6.50.38-PM.png\",\"width\":1364,\"height\":826},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase for Oracle Developers \u2013 Part 2 : Architecture\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636\",\"name\":\"Keshav Murthy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4e51d72fc07c662aa791316deafffac4\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g\",\"caption\":\"Keshav Murthy\"},\"description\":\"Keshav Murthy is a Vice President at Couchbase R&amp;D. Previously, he was at MapR, IBM, Informix, Sybase, with more than 20 years of experience in database design &amp; development. He lead the SQL and NoSQL R&amp;D team at IBM Informix. He has received two President's Club awards at Couchbase, two Outstanding Technical Achievement Awards at IBM. Keshav has a bachelor's degree in Computer Science and Engineering from the University of Mysore, India, holds eleven US patents and has four US patents pending.\",\"sameAs\":[\"https:\/\/blog.planetnosql.com\/\",\"https:\/\/x.com\/rkeshavmurthy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/keshav-murthy\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase for Oracle Developers \u2013 Part 2 : Architecture - The Couchbase Blog","description":"Check the second part of \"Couchbase for Oracle Developers\u201d series discussing the high-level architecture of the two databases from a developer perspective.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-oracle-developers-part-2-architecture\/","og_locale":"es_MX","og_type":"article","og_title":"Couchbase for Oracle Developers \u2013 Part 2 : Architecture","og_description":"Check the second part of \"Couchbase for Oracle Developers\u201d series discussing the high-level architecture of the two databases from a developer perspective.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-oracle-developers-part-2-architecture\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-01-22T21:51:07+00:00","article_modified_time":"2025-06-14T00:32:52+00:00","og_image":[{"width":1364,"height":826,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-21-at-6.50.38-PM.png","type":"image\/png"}],"author":"Keshav Murthy","twitter_card":"summary_large_image","twitter_creator":"@rkeshavmurthy","twitter_misc":{"Written by":"Keshav Murthy","Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/"},"author":{"name":"Keshav Murthy","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636"},"headline":"Couchbase for Oracle Developers \u2013 Part 2 : Architecture","datePublished":"2018-01-22T21:51:07+00:00","dateModified":"2025-06-14T00:32:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/"},"wordCount":1695,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-21-at-6.50.38-PM.png","keywords":["Architecture","developer","JSON","migration","oracle"],"articleSection":["Application Design","Couchbase Architecture","SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/","name":"Couchbase for Oracle Developers \u2013 Part 2 : Architecture - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-21-at-6.50.38-PM.png","datePublished":"2018-01-22T21:51:07+00:00","dateModified":"2025-06-14T00:32:52+00:00","description":"Check the second part of \"Couchbase for Oracle Developers\u201d series discussing the high-level architecture of the two databases from a developer perspective.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-21-at-6.50.38-PM.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/01\/Screen-Shot-2018-01-21-at-6.50.38-PM.png","width":1364,"height":826},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase for Oracle Developers \u2013 Part 2 : Architecture"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636","name":"Keshav Murthy","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4e51d72fc07c662aa791316deafffac4","url":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","caption":"Keshav Murthy"},"description":"Keshav Murthy es Vicepresidente de Couchbase R&amp;D. Anteriormente, estuvo en MapR, IBM, Informix, Sybase, con m\u00e1s de 20 a\u00f1os de experiencia en dise\u00f1o y desarrollo de bases de datos. Dirigi\u00f3 el equipo de I+D de SQL y NoSQL en IBM Informix. Ha recibido dos premios President's Club en Couchbase y dos premios Outstanding Technical Achievement en IBM. Keshav es licenciado en Inform\u00e1tica e Ingenier\u00eda por la Universidad de Mysore (India), es titular de once patentes estadounidenses y tiene cuatro pendientes.","sameAs":["https:\/\/blog.planetnosql.com\/","https:\/\/x.com\/rkeshavmurthy"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/keshav-murthy\/"}]}},"authors":[{"term_id":8929,"user_id":55,"is_guest":0,"slug":"keshav-murthy","display_name":"Keshav Murthy","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","author_category":"","last_name":"Murthy","first_name":"Keshav","job_title":"","user_url":"https:\/\/blog.planetnosql.com\/","description":"Keshav Murthy es Vicepresidente de Couchbase R&amp;D. Anteriormente, estuvo en MapR, IBM, Informix, Sybase, con m\u00e1s de 20 a\u00f1os de experiencia en dise\u00f1o y desarrollo de bases de datos. Dirigi\u00f3 el equipo de I+D de SQL y NoSQL en IBM Informix. Ha recibido dos premios President's Club en Couchbase y dos premios Outstanding Technical Achievement en IBM. Keshav es licenciado en Inform\u00e1tica e Ingenier\u00eda por la Universidad de Mysore (India), es titular de diez patentes estadounidenses y tiene tres pendientes."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/4484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/55"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=4484"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/4484\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/4485"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=4484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=4484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=4484"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=4484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}