{"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\/pt\/couchbase-oracle-developers-part-2-architecture\/","title":{"rendered":"Couchbase para desenvolvedores Oracle - Parte 2 : Arquitetura"},"content":{"rendered":"<p>Em novembro, <a href=\"https:\/\/www.linkedin.com\/in\/raju-suravarjjala-7abb962\/\">Raju Suravarjjala<\/a>(Diretor S\u00eanior, Couchbase QE &amp; Performance) e eu apresentamos \"Mindmap: Oracle to Couchbase For Developers\". Voc\u00ea pode ver o conjunto de slides aqui:\u00a0<a href=\"https:\/\/bit.ly\/2mPdJfo\">https:\/\/bit.ly\/2mPdJfo.<\/a>\u00a0O artigo de vis\u00e3o geral da s\u00e9rie est\u00e1 em est\u00e1 em\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-oracle-developers-part-2-architecture\/\">https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/<\/a>. Esta s\u00e9rie foi escrita em colabora\u00e7\u00e3o com Raju.<\/p>\n<p><span style=\"font-weight: 400\">Esta \u00e9 a segunda parte da s\u00e9rie \"Couchbase para desenvolvedores Oracle\", que discute a arquitetura de alto n\u00edvel dos dois bancos de dados a partir de uma perspectiva de desenvolvedor. O blog pressup\u00f5e que voc\u00ea tenha conhecimento do Oracle e n\u00e3o explica os recursos do Oracle, exceto por motivos de compara\u00e7\u00e3o e contraste. Esta compara\u00e7\u00e3o e contraste \u00e9 apenas para isso.  N\u00e3o se destina a avaliar um recurso ou desempenho em rela\u00e7\u00e3o a outro. \u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Tanto o Oracle quanto o Couchbase foram desenvolvidos para lidar com tarefas espec\u00edficas de aplicativos corporativos.  Ambos se expandiram e est\u00e3o se expandindo. Eles coexistem nas empresas.  \u00c9 com essa sensibilidade que estamos fornecendo uma compara\u00e7\u00e3o desses produtos para ajudar os desenvolvedores Oracle a entender o que \u00e9 o Couchbase. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Agora, vamos \u00e0 arquitetura.<\/span><\/p>\n<div class=\"responsive-table\">\n<table>\n<tbody>\n<tr>\n<td>T\u00f3pico<\/td>\n<td>Or\u00e1culo<\/td>\n<td>Couchbase<\/td>\n<\/tr>\n<tr>\n<td>Implementa\u00e7\u00e3o de n\u00f3 \u00fanico<\/td>\n<td>O Oracle \u00e9 um banco de dados monol\u00edtico de inst\u00e2ncia \u00fanica (na implementa\u00e7\u00e3o mostrada em 1).  Na verdade, ele foi originalmente desenvolvido para ser executado em uma \u00fanica m\u00e1quina e funciona bem em uma m\u00e1quina SMP (multi-socket, multi-core).  Todas as camadas de um banco de dados (l\u00f3gica, gerenciamento de espa\u00e7o f\u00edsico, bloqueio, registro, s\u00e3o gerenciadas a partir de uma \u00fanica m\u00e1quina).   O c\u00f3digo \u00e9 executado em um \u00fanico thread (ou threads cooperativos) com bloqueio de recursos projetado para uma \u00fanica m\u00e1quina.<\/p>\n<p>Essa configura\u00e7\u00e3o \u00e9 a maioria das implementa\u00e7\u00f5es de desenvolvimento e produ\u00e7\u00e3o. Quando voc\u00ea fica sem capacidade de disco, adiciona capacidade.  Quando a capacidade da CPU se esgota, voc\u00ea migra a carga de trabalho para uma m\u00e1quina maior, com mais soquetes, mais n\u00facleos.  Ou, atualmente, VMs ou cont\u00eaineres maiores.<\/p>\n<p>O APP para comunica\u00e7\u00e3o com o servidor usa o protocolo propriet\u00e1rio oracle. Os SDKs de n\u00edvel superior trabalham em cima disso.<\/td>\n<td><span style=\"font-weight: 400\">O servidor Couchbase pode ser instalado em um \u00fanico servidor e geralmente \u00e9 instalado em um \u00fanico n\u00f3 (MacOS, Linux ou Windows) para desenvolvimento. Todas as fun\u00e7\u00f5es do banco de dados s\u00e3o abstra\u00eddas em servi\u00e7os (camada de dados, \u00edndice, consulta, com APIs para acessar os dados diretamente ou por meio de consulta).  Esses servi\u00e7os s\u00e3o coordenados para expor os servi\u00e7os por meio da API REST.  Os aplicativos usam\u00a0<\/span><span style=\"font-weight: 400\">SDKs do Couchbase (dispon\u00edveis em todos os idiomas populares) para obter dados, criar \u00edndices e executar consultas N1QL.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Essa configura\u00e7\u00e3o \u00e9 usada principalmente para desenvolvimento em seu laptop, VM ou em um cont\u00eainer. Ela raramente, ou nunca, \u00e9 usada na implementa\u00e7\u00e3o. Na verdade, o Couchbase emite um aviso quando voc\u00ea faz a implanta\u00e7\u00e3o em um \u00fanico n\u00f3, pois h\u00e1 apenas uma c\u00f3pia dos seus dados!<\/span><\/p>\n<p><span style=\"font-weight: 400\">A API para comunica\u00e7\u00e3o com o servidor \u00e9 via API REST e protocolo bin\u00e1rio Memcached.  Todos os outros SDKs de n\u00edvel superior usam os protocolos REST ou Memcached por baixo.<\/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 (Secure Enterprise Search)<\/span><\/td>\n<td><span style=\"font-weight: 400\">N1QL (SQL para JSON), acesso direto aos dados, FTS (pesquisa de texto completo). <\/span><\/td>\n<\/tr>\n<tr>\n<td>Conex\u00f5es<\/td>\n<td>Uma conex\u00e3o persistente entre o processo do usu\u00e1rio e o processo\/thread do banco de dados executado em nome do aplicativo cliente.<\/td>\n<td>Conex\u00e3o HTTP sobre TCP\/IP.<br \/>\nConex\u00e3o para MemcachedCada solicita\u00e7\u00e3o de busca\/modifica\u00e7\u00e3o de dados e consulta \u00e9 uma solicita\u00e7\u00e3o distinta. Enquanto usamos o TCP e o HTTP keep-alive para tornar a solicita\u00e7\u00e3o de conex\u00e3o eficiente.<\/td>\n<\/tr>\n<tr>\n<td>Sess\u00e3o<\/td>\n<td>Uma sess\u00e3o come\u00e7a de CONNECT a QUIT. Cada \"sess\u00e3o\" de aplicativo tem uma sess\u00e3o correspondente no servidor Oracle. Em uma sess\u00e3o, \u00e9 poss\u00edvel executar uma consulta ou um milh\u00e3o de consultas que abrangem v\u00e1rias transa\u00e7\u00f5es.<\/td>\n<td>Assim como a conex\u00e3o, no Couchbase, cada solicita\u00e7\u00e3o \u00e9 uma solicita\u00e7\u00e3o distinta. Cada solicita\u00e7\u00e3o deve conter par\u00e2metros de liga\u00e7\u00e3o e quaisquer par\u00e2metros de contexto (por exemplo, tempo limite). Depois que a solicita\u00e7\u00e3o \u00e9 processada, o contexto da sess\u00e3o desaparece no servidor.<\/p>\n<p>No entanto, nada impede que os SDKs se lembrem do contexto e dos par\u00e2metros e os repassem na solicita\u00e7\u00e3o subsequente sem interven\u00e7\u00e3o do aplicativo, facilitando o c\u00f3digo.<\/td>\n<\/tr>\n<tr>\n<td>Usu\u00e1rio, autentica\u00e7\u00e3o<\/td>\n<td>Suporta usu\u00e1rio do sistema operacional e usu\u00e1rio do banco de dados. A autentica\u00e7\u00e3o pode ser feita pelo sistema operacional, pelo banco de dados ou por terceiros, como LDAP, kerberos.<\/td>\n<td>Suporta usu\u00e1rio do sistema operacional e usu\u00e1rio do banco de dados. A autentica\u00e7\u00e3o pode ser feita pelo sistema operacional, pelo banco de dados ou por terceiros, como LDAP, kerberos.<\/td>\n<\/tr>\n<tr>\n<td>Banco de dados<\/td>\n<td>Mais baixo que a inst\u00e2ncia, o banco de dados \u00e9 a unidade de gerenciamento de dados e controle de acesso de n\u00edvel superior para usu\u00e1rios e aplicativos.<\/p>\n<p>Uma inst\u00e2ncia Oracle pode ter v\u00e1rios bancos de dados.<br \/>\nUm banco de dados Oracle pode ter v\u00e1rias tabelas (al\u00e9m das tabelas\/cat\u00e1logos do sistema).<\/td>\n<td>Uma inst\u00e2ncia do Couchbase pode ter at\u00e9 10 BUCKETS. A cada bucket \u00e9 alocada uma quantidade fixa de mem\u00f3ria (em cada n\u00f3). Isso \u00e9 usado para armazenar em cache os dados nos n\u00f3s de dados. Pense nisso como o pool de buffer para os dados no Oracle.<\/p>\n<p>Em cada bucket, voc\u00ea armazena documentos JSON. Cada documento JSON em um \u00fanico bucket deve ter uma chave exclusiva (semelhante \u00e0 chave prim\u00e1ria em suas tabelas).<\/p>\n<p>Em cada compartimento, voc\u00ea pode ter v\u00e1rios tipos de documentos (como tabelas e cole\u00e7\u00f5es).<\/p>\n<p>Para permitir a exclusividade e identificar o tipo de documento apenas observando a chave, prefixamos a chave do documento com o tipo do documento.<\/p>\n<p>Por exemplo: \"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 \/>\nTamb\u00e9m \u00e9 comum armazenar o tipo de documento dentro do documento.<\/p>\n<p>{\"type\": \"cust, \"lname\": \"Smith\"}<br \/>\n{\"type\": \"parts\", \"dept\": \"engine\"}<\/td>\n<\/tr>\n<tr>\n<td>Tabela<\/td>\n<td>Tabela<\/td>\n<td>Tipos de documentos em um bucket.<br \/>\nOs documentos do cliente (com um prefixo cust) tornam-se um grupo logicamente e os documentos de pe\u00e7as tamb\u00e9m se tornam um grupo. N\u00e3o h\u00e1 separa\u00e7\u00e3o f\u00edsica, exceto no contexto de um \u00edndice e de uma consulta.<\/td>\n<\/tr>\n<tr>\n<td>Coluna<\/td>\n<td>Coluna<\/td>\n<td>Todos os documentos no Couchbase devem ser documentos JSON em conformidade com https:\/\/json.org\/<br \/>\nConsidere um documento JSON simples de 1 n\u00edvel.<br \/>\nChave do documento: \"cust:2984\"<br \/>\nDoc: {\"a\":1, \"b\": True, \"c\": \"Hello\"}<br \/>\nEm seu mapa mental, voc\u00ea pode pensar nesse documento como uma linha, atributos individuais, \"a\", \"b\", \"c\" como colunas, a chave do documento como uma chave prim\u00e1ria.<br \/>\nEste documento cont\u00e9m valores escalares simples. O JSON pode conter matrizes e objetos, matrizes de objetos, objetos contendo matrizes. Os nomes de atributos s\u00e3o referenciados de cima para baixo (pense em objetos no Oracle), o que ser\u00e1 discutido em detalhes na se\u00e7\u00e3o \"Tipos de banco de dados\".<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Estruturas de esquema l\u00f3gico e f\u00edsico.<\/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\">(role para baixo at\u00e9 SDKs)\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td>Arquitetura de v\u00e1rios n\u00f3s<br \/>\n(Implementa\u00e7\u00e3o homog\u00eanea).<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>Implementa\u00e7\u00e3o multidimensional<\/td>\n<td>N\u00e3o dispon\u00edvel. Cada n\u00f3 no Oracle RAC tem capacidade total de Oracle SQL, incluindo a capacidade transacional e administrativa.<\/td>\n<td>&nbsp;<\/p>\n<p>Cada n\u00f3 do cluster pode ter uma ou mais combina\u00e7\u00f5es dos servi\u00e7os: Dados, Consulta, \u00cdndice, Pesquisa e An\u00e1lise. O gerente do cluster (coordenador) est\u00e1 ciente da distribui\u00e7\u00e3o e da disponibilidade dos servi\u00e7os e informar\u00e1 os servi\u00e7os uns sobre os outros.<\/p>\n<p>O SDK tamb\u00e9m est\u00e1 ciente da distribui\u00e7\u00e3o de dados, da consulta e dos n\u00f3s FTS. O SDK tenta equilibrar a carga de trabalho entre os diferentes n\u00f3s de consulta para a carga de trabalho de consulta, os n\u00f3s de dados para a carga de trabalho de dados\/KV e os n\u00f3s FTS para a carga de trabalho de pesquisa.<\/td>\n<\/tr>\n<tr>\n<td>Arquitetura do sistema<\/td>\n<td>A implanta\u00e7\u00e3o de um \u00fanico n\u00f3 \u00e9 adequada para SMP.<br \/>\nA implementa\u00e7\u00e3o de v\u00e1rios n\u00f3s compartilha o mesmo disco\/armazenamento. Por isso, o sistema de disco compartilhado. Voc\u00ea pode aumentar a escala at\u00e9 certo ponto, adicionando mais computa\u00e7\u00e3o e compartilhando o mesmo disco. Eventualmente, o disco compartilhado e a taxa de transfer\u00eancia de E\/S se tornam o gargalo. O desenvolvedor n\u00e3o se importa (na maioria das vezes) com o tipo de inst\u00e2ncia: RAC de n\u00f3 \u00fanico ou de v\u00e1rios n\u00f3s. O SQL suportado \u00e9 o mesmo e as transa\u00e7\u00f5es funcionam perfeitamente em um ambiente de v\u00e1rios n\u00f3s. A Oracle desenvolveu um sofisticado gerenciador de bloqueio distribu\u00eddo, sincroniza\u00e7\u00e3o de pool de buffer etc. para conseguir isso. Ele requer o caro infiniband para reduzir qualquer efeito negativo sobre o desempenho.<\/p>\n<p>Apesar disso, n\u00e3o \u00e9 incomum particionar a carga de trabalho entre v\u00e1rios n\u00f3s RAC para minimizar os conflitos de bloqueio, etc.<\/td>\n<td>Um \u00fanico n\u00f3 pode ser ampliado, implementado como v\u00e1rios servi\u00e7os cooperativos executados em um \u00fanico sistema. A coordena\u00e7\u00e3o \u00e9 feita por meio da passagem de mensagens, mesmo em um \u00fanico sistema.<\/p>\n<p>Esse conjunto de servi\u00e7os com acoplamento frouxo se presta a ser ampliado sem problemas. Voc\u00ea pode ter todos os servi\u00e7os em cada n\u00f3 e simplesmente adicionar novos n\u00f3s com os mesmos servi\u00e7os. Todos os servi\u00e7os entender\u00e3o a topologia de v\u00e1rios n\u00f3s. Isso \u00e9 conhecido como scale-out.<\/p>\n<p>Os aplicativos n\u00e3o usam todos os servi\u00e7os de maneira uniforme. Os gargalos podem estar nos dados, no indexador da consulta. Portanto, no Couchbase, voc\u00ea dimensiona e adiciona novos n\u00f3s simplesmente para executar os servi\u00e7os com gargalo. Isso proporcionar\u00e1 a utiliza\u00e7\u00e3o ideal dos recursos e melhor desempenho em compara\u00e7\u00e3o com uma implementa\u00e7\u00e3o homog\u00eanea. Isso tamb\u00e9m reduzir\u00e1 seu custo. O dimensionamento multidimensional \u00e9 f\u00e1cil de implementar como qualquer outra configura\u00e7\u00e3o e a capacidade de gerenciamento permanece a mesma.<\/td>\n<\/tr>\n<tr>\n<td>Consulta<\/td>\n<td>O Oracle tem suporte completo a SQL.<br \/>\nAs extens\u00f5es SQL incluem suporte para JSON e pesquisa de texto.<br \/>\nA Oracle tamb\u00e9m tem um banco de dados XML, com suporte a XML, XQuery, SQL\/XML, etc.<\/td>\n<td>O Couchbase pode armazenar bin\u00e1rios e JSON.<br \/>\nAs APIs de desenvolvedor podem obter e definir documentos e subdocumentos diretamente.<br \/>\nO N1QL (SQL para JSON) oferece uma linguagem declarativa. Ele vem com \u00edndices e um mecanismo de consulta completo para executar consultas de forma eficiente. Detalhes em: query.couchbase.com.<br \/>\nO Couchbase FTS (Full Text Search) ajuda voc\u00ea a criar um \u00edndice e uma pesquisa de texto.<br \/>\n<a href=\"https:\/\/bit.ly\/2vbcbOF\">https:\/\/bit.ly\/2vbcbOF<\/a><\/td>\n<\/tr>\n<tr>\n<td>Alta disponibilidade<\/td>\n<td>A MAA (Arquitetura de Disponibilidade M\u00e1xima) da Oracle recomenda: \"Na tela de configura\u00e7\u00e3o do cluster, na se\u00e7\u00e3o Detalhes do grupo de discos, o MAA recomenda escolher a redund\u00e2ncia ALTA do Oracle Automatic Storage Management (ASM) para TODOS os grupos de discos (DATA e RECO) para obter a melhor prote\u00e7\u00e3o e a maior simplicidade operacional\".<\/p>\n<p>A Oracle tem recursos para criar servidores hot standby, replica\u00e7\u00e3o baseada em esquema, captura de altera\u00e7\u00f5es e muito mais.<\/td>\n<td>Em um \u00fanico cluster, \u00e9 poss\u00edvel ter v\u00e1rias c\u00f3pias de dados e \u00edndices, bastando especificar o n\u00famero de c\u00f3pias que deseja ter. Voc\u00ea pode ter at\u00e9 3 c\u00f3pias dos dados e qualquer n\u00famero de c\u00f3pias do \u00edndice.<\/p>\n<p>Em v\u00e1rios clusters, voc\u00ea pode replicar os dados com o XDCR (replica\u00e7\u00e3o entre centros de dados) integrado.<\/td>\n<\/tr>\n<tr>\n<td>Transa\u00e7\u00f5es<\/td>\n<td><span style=\"font-weight: 400\">\u00c1CIDO<\/span><\/p>\n<p><span style=\"font-weight: 400\">Declara\u00e7\u00e3o m\u00faltipla<\/span><\/td>\n<td>Atomicidade de um \u00fanico documento<br \/>\nConsist\u00eancia do servi\u00e7o de dados, \u00edndice - consist\u00eancia eventual<br \/>\nbloqueio otimista (CAS)<br \/>\nconfirma\u00e7\u00e3o adicional de durabilidade<\/td>\n<\/tr>\n<tr>\n<td>Motoristas<\/td>\n<td>JDBC, ODBC, .NET, LINQ e muito mais<\/td>\n<td>Couchbase SDK (Java, .NET, LINQ, PHP, Python, Go), Simba JDBC\/ODBC<\/td>\n<\/tr>\n<tr>\n<td>Modelo de dados<\/td>\n<td>Oferece suporte a modelos de dados normalizados e desnormalizados.<\/td>\n<td>Modelo JSON desnormalizado (agregado).<br \/>\nOs relacionamentos entre v\u00e1rios tipos de documentos (por exemplo, pedidos para clientes) podem ser representados e processados. Tanto o filho (pedidos) quanto o pai (cliente) podem armazenar a chave prim\u00e1ria dos documentos relacionados e, em seguida, junt\u00e1-los. Essa rela\u00e7\u00e3o \u00e9 impl\u00edcita, n\u00e3o codificada por uma restri\u00e7\u00e3o (por exemplo, restri\u00e7\u00e3o de chave estrangeira) no Couchbase. Esse \u00e9 o motivo pelo qual o Couchbase \u00e9 mais flex\u00edvel.<\/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 v25.7.1 (Yoast SEO v25.7) - 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\/pt\/couchbase-oracle-developers-part-2-architecture\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\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\/pt\/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\":\"pt-BR\",\"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\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\",\"@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\/pt\/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\/pt\/couchbase-oracle-developers-part-2-architecture\/","og_locale":"pt_BR","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\/pt\/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":"pt-BR","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":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-oracle-developers-part-2-architecture\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@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":"Blog do Couchbase","description":"Couchbase, o banco de dados 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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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":"pt-BR","@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 \u00e9 vice-presidente de P&amp;D da Couchbase. Anteriormente, ele trabalhou na MapR, IBM, Informix e Sybase, com mais de 20 anos de experi\u00eancia em design e desenvolvimento de bancos de dados. Ele liderou a equipe de P&amp;D de SQL e NoSQL na IBM Informix. Ele recebeu dois pr\u00eamios President's Club na Couchbase e dois Outstanding Technical Achievement Awards na IBM. Keshav \u00e9 bacharel em Ci\u00eancia da Computa\u00e7\u00e3o e Engenharia pela Universidade de Mysore, \u00cdndia, det\u00e9m onze patentes nos EUA e tem quatro patentes pendentes nos EUA.","sameAs":["https:\/\/blog.planetnosql.com\/","https:\/\/x.com\/rkeshavmurthy"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/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","first_name":"Keshav","last_name":"Murthy","user_url":"https:\/\/blog.planetnosql.com\/","author_category":"","description":"Keshav Murthy \u00e9 vice-presidente de P&amp;D da Couchbase. Anteriormente, ele trabalhou na MapR, IBM, Informix e Sybase, com mais de 20 anos de experi\u00eancia em design e desenvolvimento de bancos de dados. Ele liderou a equipe de P&amp;D de SQL e NoSQL na IBM Informix. Recebeu dois pr\u00eamios President's Club na Couchbase e dois Outstanding Technical Achievement Awards na IBM. Keshav \u00e9 bacharel em Ci\u00eancia da Computa\u00e7\u00e3o e Engenharia pela Universidade de Mysore, \u00cdndia, det\u00e9m dez patentes nos EUA e tem tr\u00eas patentes pendentes nos EUA."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/4484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/55"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=4484"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/4484\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/4485"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=4484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=4484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=4484"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=4484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}