{"id":6760,"date":"2019-05-26T23:50:29","date_gmt":"2019-05-27T06:50:29","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=6760"},"modified":"2025-06-13T17:32:38","modified_gmt":"2025-06-14T00:32:38","slug":"the-unreasonable-effectiveness-of-sql-in-nosql-databases","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/","title":{"rendered":"A efic\u00e1cia irracional do SQL em bancos de dados NoSQL"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Os aplicativos de neg\u00f3cios t\u00eam requisitos: receber pedidos de clientes, entregar pedidos de clientes, rastrear remessas, gerar relat\u00f3rios de invent\u00e1rio, relat\u00f3rios comerciais de fim de dia\/m\u00eas\/trimestre, gerar pain\u00e9is de neg\u00f3cios e muito mais.  Esses requisitos evoluem lentamente. Eles permanecem mesmo quando voc\u00ea escolhe um <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/resources\/why-nosql\/\">Banco de dados NoSQL<\/a>.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Nos bancos de dados NoSQL, os desafios s\u00e3o enfrentados por uma s\u00e9rie de tecnologias e solu\u00e7\u00f5es alternativas. Aqui est\u00e3o algumas delas:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Copiar os dados com uma chave diferente para facilitar as digitaliza\u00e7\u00f5es.<\/span><\/li>\n<li>Obter todos os dados necess\u00e1rios para o aplicativo e, em seguida, gerar relat\u00f3rios<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Carregar os dados em bancos de dados relacionais para gerar o relat\u00f3rio.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Os produtos oferecem solu\u00e7\u00f5es alternativas com <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/4.1\/developer-guide\/views-intro.html\"><span style=\"font-weight: 400\">visualiza\u00e7\u00f5es de redu\u00e7\u00e3o de mapas<\/span><\/a><span style=\"font-weight: 400\">, <\/span><a href=\"https:\/\/www.mongodb.com\/\"><span style=\"font-weight: 400\">APIs<\/span><\/a><span style=\"font-weight: 400\">etc.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Por fim, o pr\u00f3prio SQL foi <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/unreasonable-effectiveness-of-sql\/\"><span style=\"font-weight: 400\">injustificadamente eficaz<\/span><\/a><span style=\"font-weight: 400\"> para dados estruturados e semiestruturados. Os bancos de dados NoSQL, como <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/\"><span style=\"font-weight: 400\">Couchbase<\/span><\/a><span style=\"font-weight: 400\">, <\/span><a href=\"https:\/\/cassandra.apache.org\/\"><span style=\"font-weight: 400\">Cassandra<\/span><\/a><span style=\"font-weight: 400\">, <\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/cosmos-db\/introduction\"><span style=\"font-weight: 400\">CosmosDB<\/span><\/a><span style=\"font-weight: 400\"> estenderam o SQL para JSON e modelo de dados de coluna ampla.<\/span><\/li>\n<\/ol>\n<p>O NoSQL evoluiu de \"NO SQL\" para Not Only SQL.  Se voc\u00ea estiver interessado em alguns dos antecedentes evolutivos combinados com um hist\u00f3rico da evolu\u00e7\u00e3o do SQL para dar suporte a dados semiestruturados, sugiro as seguintes entrevistas.<\/p>\n<ol>\n<li>Entrevista de Ravi Mayuram com Don Chamberlin [2017]:\u00a0 <a href=\"https:\/\/youtu.be\/-U_UjqnhMBI?t=3492\">https:\/\/youtu.be\/-U_UjqnhMBI?t=3492<\/a><\/li>\n<li>Um painel de discuss\u00e3o entre Ravi Mayuram, Don Chamberlin e o Prof. Mike Carey [2018]:\u00a0 <a href=\"https:\/\/www.youtube.com\/watch?v=LAlDe1w7wxc\">https:\/\/www.youtube.com\/watch?v=LAlDe1w7wxc<\/a><\/li>\n<\/ol>\n<p>Muitos bancos de dados NoSQL alegam ter \"suporte a SQL\". O <a href=\"https:\/\/docs.oracle.com\/database\/121\/SQLRF\/ap_standard_sql001.htm#SQLRF55514\"><span style=\"font-weight: 400\">Padr\u00e3o SQL<\/span><\/a><span style=\"font-weight: 400\"> \u00e9 amplo e profundo, coberto de <\/span><a href=\"https:\/\/blog.ansi.org\/2018\/10\/sql-standard-iso-iec-9075-2016-ansi-x3-135\/#gref\"><span style=\"font-weight: 400\">nove livros volumosos<\/span><\/a><span style=\"font-weight: 400\">. Ningu\u00e9m, nem <\/span><a href=\"https:\/\/docs.oracle.com\/database\/121\/SQLRF\/ap_standard_sql001.htm#SQLRF55514\"><span style=\"font-weight: 400\">Or\u00e1culo<\/span><\/a><span style=\"font-weight: 400\"> nem <\/span><a href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/sql-server-2019\"><span style=\"font-weight: 400\">SQL Server<\/span><\/a><span style=\"font-weight: 400\">O NoSQL, apesar de d\u00e9cadas de trabalho, suporta tudo o que est\u00e1 no padr\u00e3o. Portanto, os bancos de dados NoSQL t\u00eam um longo caminho a percorrer para se atualizarem. Portanto, vale a pena fazer uma avalia\u00e7\u00e3o detalhada do suporte a SQL.\u00a0<\/span><\/p>\n<p>Aqui est\u00e3o os crit\u00e9rios que voc\u00ea deve usar para avaliar o suporte a SQL em bancos de dados NoSQL.<\/p>\n<ol>\n<li>Suporte \u00e0 linguagem: Quais declara\u00e7\u00f5es, tipos de dados, opera\u00e7\u00f5es (jun\u00e7\u00f5es, agrupamento, agrega\u00e7\u00e3o, janelas, pagina\u00e7\u00e3o, etc.)<\/li>\n<li>Suporte \u00e0 indexa\u00e7\u00e3o:  Os \u00edndices s\u00e3o essenciais para o desempenho, especialmente nas cargas de trabalho de aplicativos interativos.<\/li>\n<li>Otimizador: A reescrita de consultas, a escolha do caminho de acesso correto e a cria\u00e7\u00e3o do caminho ideal de execu\u00e7\u00e3o de consultas \u00e9 o que torna o SQL uma 4GL bem-sucedida.  Alguns t\u00eam um otimizador baseado em regras, outros t\u00eam um otimizador baseado em custos e outros t\u00eam ambos.  \u00c9 fundamental avaliar a qualidade do otimizador.  Os benchmarks t\u00edpicos (TPC-C, TPC-DS, YCSB, YCSB-JSON) n\u00e3o o ajudar\u00e3o aqui.<\/li>\n<li>Como diz o ditado: \"H\u00e1 tr\u00eas coisas importantes nos bancos de dados: desempenho, desempenho e desempenho\". \u00c9 importante medir o desempenho de sua carga de trabalho.\u00a0\u00a0<a href=\"https:\/\/github.com\/brianfrankcooper\/YCSB\">YCSB<\/a>\u00a0e a extens\u00e3o\u00a0<a href=\"https:\/\/dzone.com\/articles\/ycsb-json-benchmarking-json-databases-by-extending\">YCSB-JSON<\/a>\u00a0facilitar\u00e1 essa avalia\u00e7\u00e3o.<\/li>\n<li>SDKs: SDKs avan\u00e7ados e suporte a idiomas aceleram seu desenvolvimento.<\/li>\n<li>\u00a0Suporte de ferramentas de BI: Para a an\u00e1lise de grandes volumes de dados, \u00e9 importante o suporte das ferramentas de BI, geralmente por meio de drivers de conectividade de banco de dados padr\u00e3o.<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">Neste artigo, vou comparar e contrastar o suporte \u00e0 linguagem SQL no Cassandra, CosmosDB, Couchbase e MongoDB por meio de suas respectivas implementa\u00e7\u00f5es.  Com certeza, o MongoDB n\u00e3o oferece suporte a SQL, mas tem alguns <a href=\"https:\/\/docs.mongodb.com\/manual\/reference\/sql-comparison\/\">comandos comparativos<\/a>.<\/span><\/p>\n<p>Dividi a an\u00e1lise em v\u00e1rias se\u00e7\u00f5es.  A formata\u00e7\u00e3o do WordPress torna essas tabelas muito grandes.  Aqui est\u00e1 uma vers\u00e3o em PDF que \u00e9 compacta e f\u00e1cil de ler. [Clique na imagem para visualizar o PDF].<\/p>\n<div id=\"attachment_6989\" style=\"width: 310px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/05\/SQL-in-NoSQL-Databases.pdf\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6989\" class=\"wp-image-6989 size-medium\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/05\/Screen-Shot-2019-05-27-at-10.28.14-PM-300x173.png\" alt=\"\" width=\"300\" height=\"173\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-27-at-10.28.14-PM-300x173.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-27-at-10.28.14-PM-1024x589.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-27-at-10.28.14-PM-768x442.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-27-at-10.28.14-PM-1536x883.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-27-at-10.28.14-PM-2048x1178.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-27-at-10.28.14-PM-20x12.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-27-at-10.28.14-PM-1320x759.png 1320w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-6989\" class=\"wp-caption-text\">Resumo do suporte a SQL no Cassandra, CosmosDB, Couchbase e MongoDB.<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><b>Abordagem de suporte ao SQL: \u00a0<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">SQL<\/span><\/td>\n<td><span style=\"font-weight: 400\"> O SQL \u00e9 uma linguagem declarativa, com as opera\u00e7\u00f5es select-join-project servindo como base.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cassandra<\/span><\/td>\n<td><span style=\"font-weight: 400\">CQL: Linguagem inspirada em SQL para o Cassandra.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">Oferece suporte a SQL juntamente com a API do MongoDB, Gremlin (para o gr\u00e1fico), etc. Suporte simples a select-from-where-order-by. \u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Couchbase<\/span><\/td>\n<td><span style=\"font-weight: 400\">N1QL: SQL para JSON.\u00a0<\/span><\/p>\n<p>O Couchbase tem duas implementa\u00e7\u00f5es do N1QL: servi\u00e7o de consulta e servi\u00e7o de an\u00e1lise.<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">MongoDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">Consulta baseada em comandos SQL simplificada e baseada em Javascript.<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>ENTRADA e SA\u00cdDA<\/strong><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">SQL<\/span><\/td>\n<td><span style=\"font-weight: 400\">INPUT: Conjunto de linhas (tuplas)<\/span><\/p>\n<p><span style=\"font-weight: 400\">SA\u00cdDA: Um conjunto de linhas (tuplas)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cassandra<\/span><\/td>\n<td><span style=\"font-weight: 400\">ENTRADA: Conjuntos de linhas<\/span><\/p>\n<p><span style=\"font-weight: 400\">SA\u00cdDA: Conjunto de linhas<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">INPUT: Conjuntos de JSON<\/span><\/p>\n<p><span style=\"font-weight: 400\">SA\u00cdDA: Conjunto de JSON<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Couchbase<\/span><\/td>\n<td><span style=\"font-weight: 400\">INPUT: Conjuntos de JSON<\/span><\/p>\n<p><span style=\"font-weight: 400\">SA\u00cdDA: Conjunto de JSON<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">MongoDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">INPUT: Conjuntos de JSON<\/span><\/p>\n<p><span style=\"font-weight: 400\">SA\u00cdDA: Conjunto de JSON<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>SELECT: FROM Clause<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">SQL<\/span><\/td>\n<td><span style=\"font-weight: 400\">Especifica as tabelas de fontes de dados (rela\u00e7\u00f5es)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cassandra<\/span><\/td>\n<td><span style=\"font-weight: 400\">cl\u00e1usula FROM com apenas uma tabela permitida.  Agora s\u00e3o permitidas jun\u00e7\u00f5es, subconsultas ou express\u00f5es.  A interpreta\u00e7\u00e3o da cl\u00e1usula From \u00e9 igual \u00e0 do SQL.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">A cl\u00e1usula FROM oferece suporte a uma \u00fanica cole\u00e7\u00e3o e a uni\u00f5es pr\u00f3prias (o mesmo que UNNEST no Couchbase). \u00a0\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Couchbase<\/span><\/td>\n<td><span style=\"font-weight: 400\">Cl\u00e1usula FROM com v\u00e1rios espa\u00e7os-chave (subconjunto de bucket), subconsultas, express\u00f5es.  Igual ao SQL<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">MongoDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">db.t1.find() para uma \u00fanica tabela SELECT.<\/span><\/p>\n<p><span style=\"font-weight: 400\">db.t1.aggregate() \u00e9 usado como a estrutura de consulta generalizada. aggregate() pode se unir a cole\u00e7\u00f5es adicionais usando o operador $lookup.  Pode haver v\u00e1rios operadores $lookup na estrutura do pipeline de agrega\u00e7\u00e3o, o que o torna o primo mais pr\u00f3ximo da cl\u00e1usula SQL FROM.<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>SELECT: Cl\u00e1usula WHERE<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Crit\u00e9rios para selecionar uma linha<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>Express\u00f5es booleanas padr\u00e3o. Sem subconsultas.<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td>Igual ao SQL<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Express\u00f5es e subconsultas booleanas padr\u00e3o.<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>db.t1.find({x:10});<\/p>\n<p>aggregate() tem a cl\u00e1usula $match.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>SELECT: Cl\u00e1usula SELECT<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Cl\u00e1usula de proje\u00e7\u00e3o<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>A cl\u00e1usula SELECT \u00e9 igual \u00e0 do SQL.<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td>A cl\u00e1usula SELECT \u00e9 igual \u00e0 do SQL.<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>A cl\u00e1usula SELECT \u00e9 igual \u00e0 do SQL.<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>db.t1.find({x:10}, {a:1, b:1})<\/p>\n<p>Operador do projeto $ no pipeline de agrega\u00e7\u00e3o<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>SELECT: CTE - Express\u00e3o de tabela comum<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">SQL<\/span><\/td>\n<td><span style=\"font-weight: 400\">Fonte de dados definida dinamicamente (tabela, conjunto de resultados)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cassandra<\/span><\/td>\n<td><span style=\"font-weight: 400\">Sem suporte<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">Sem suporte<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Couchbase<\/span><\/td>\n<td><span style=\"font-weight: 400\">WITH; igual ao SQL (na vers\u00e3o 6.5). N\u00e3o h\u00e1 suporte para CTE recursivo<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">MongoDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">Sem suporte<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>SELECT: Subquery<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Subquery: Subconsultas na cl\u00e1usula FROM, na cl\u00e1usula WHERE e em qualquer lugar em que uma express\u00e3o seja permitida.<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<tr>\n<td>Cosmosdb<\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Oferece suporte a subconsultas correlacionadas e n\u00e3o correlacionadas.<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>Sem suporte em find(). Pode adicionar $match no pipeline, mas n\u00e3o \u00e9 exatamente um equivalente de uma subconsulta.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>SELECT: GROUP BY<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Agrupa as linhas com base em uma ou mais express\u00f5es. Bastante \u00fatil em relat\u00f3rios e agrega\u00e7\u00e3o de grupos.<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>Suportado; igual ao SQL.<\/td>\n<\/tr>\n<tr>\n<td>Cosmosdb<\/td>\n<td>Sem suporte. S\u00f3 \u00e9 poss\u00edvel fazer a agrega\u00e7\u00e3o em todo o conjunto de resultados.<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Suportado; semelhante ao SQL.<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>Operador $group no pipeline aggregate()<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>SELECT: cl\u00e1usula HAVING<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Filtragem ap\u00f3s a agrega\u00e7\u00e3o.<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Cl\u00e1usula HAVING; igual ao SQL<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>$match ap\u00f3s o agrupamento e a agrega\u00e7\u00e3o.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>SELECT: Cl\u00e1usula ORDER BY<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>A ordem final dos resultados produzidos pelo bloco de consulta<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>Cl\u00e1usula ORDER BY; igual ao SQL.<\/td>\n<\/tr>\n<tr>\n<td>Cosmosdb<\/td>\n<td>Cl\u00e1usula ORDER BY; igual ao SQL.<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Cl\u00e1usula ORDER BY; igual ao SQL.<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>db.t1.find().sort({a:1, b:-1});<\/p>\n<p>aggregate() tem $sort para especificar a ordem do resultado.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>SELECT: Cl\u00e1usula LIMIT, OFFSET<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Usado para pagina\u00e7\u00e3o do conjunto de resultados<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>\"LIMIT \u00e9 compat\u00edvel.<\/p>\n<p>OFFSET n\u00e3o \u00e9 compat\u00edvel.\"<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td>Cl\u00e1usula LIMIT (TOP) e OFFSET; semelhante ao SQL<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Cl\u00e1usula LIMIT e OFFSET; igual ao SQL<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>m\u00e9todos skip(), limit() com find(). $offset, $limit com aggregate().<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>SELECT: Cl\u00e1usula JOIN<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>INNER JOIN, jun\u00e7\u00f5es externas LEFT\/RIGHT\/FULL.<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>N\u00e3o h\u00e1 suporte para uni\u00f5es.  Os aplicativos ter\u00e3o que modelar os dados para evitar jun\u00e7\u00f5es ou fazer as jun\u00e7\u00f5es na camada do aplicativo.<\/td>\n<\/tr>\n<tr>\n<td>Cosmosdb<\/td>\n<td>Somente self JOINs.  N\u00e3o h\u00e1 jun\u00e7\u00f5es INNER\/LEFT\/RIGHT\/etc.<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Oferece suporte a INNER, LEFT OUTER, NEST, UNNEST e RIGHT outer limitado.  A mesma sintaxe do SQL. N\u00e3o h\u00e1 suporte para jun\u00e7\u00e3o FULL OUTER.<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>LEFT OUTER JOIN limitado somente por meio do operador $lookup.  N\u00e3o h\u00e1 jun\u00e7\u00e3o em elementos de matriz ou express\u00f5es.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>SELECT: Agrega\u00e7\u00e3o<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">SQL<\/span><\/td>\n<td><span style=\"font-weight: 400\">Agrega\u00e7\u00e3o<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cassandra<\/span><\/td>\n<td><span style=\"font-weight: 400\">H\u00e1 suporte para a agrega\u00e7\u00e3o simples em todo o resultado.  A agrega\u00e7\u00e3o com GROUP BY n\u00e3o \u00e9 compat\u00edvel.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">H\u00e1 suporte para a agrega\u00e7\u00e3o simples em todo o resultado.  A agrega\u00e7\u00e3o com GROUP BY n\u00e3o \u00e9 compat\u00edvel.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Couchbase<\/span><\/td>\n<td><span style=\"font-weight: 400\">SUM, AVG, COUNT, MAX, MIN, VARIANCE: igual ao SQL<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">MongoDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">$sum, $count, $avg com suporte a agrupamento<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>SELECT: fun\u00e7\u00f5es agregadas<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">SQL<\/span><\/td>\n<td><span style=\"font-weight: 400\"> H\u00e1 suporte para a agrega\u00e7\u00e3o simples em todo o resultado.  A agrega\u00e7\u00e3o com GROUP BY n\u00e3o \u00e9 compat\u00edvel.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cassandra<\/span><\/td>\n<td><span style=\"font-weight: 400\">Sem suporte<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cosmosdb<\/span><\/td>\n<td><span style=\"font-weight: 400\">Sem suporte<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Couchbase<\/span><\/td>\n<td><span style=\"font-weight: 400\">Oferece suporte \u00e0s fun\u00e7\u00f5es anal\u00edticas da janela SQL Standard na vers\u00e3o 6.5.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">MongoDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">Sem suporte<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>SELECT : Fun\u00e7\u00f5es de janela (anal\u00edticas\/agrega\u00e7\u00e3o)<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">SQL<\/span><\/td>\n<td><span style=\"font-weight: 400\">Fun\u00e7\u00f5es de janela para executar totais usando a cl\u00e1usula OVER()<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cassandra<\/span><\/td>\n<td><span style=\"font-weight: 400\">Sem suporte<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">Sem suporte<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Couchbase<\/span><\/td>\n<td><span style=\"font-weight: 400\">Oferece suporte \u00e0s fun\u00e7\u00f5es anal\u00edticas da janela SQL Standard na vers\u00e3o 6.5.<\/span><\/p>\n<p>Ver detalhes: <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/json-to-insights-fast-and-easy\/\">https:\/\/www.couchbase.com\/blog\/json-to-insights-fast-and-easy\/<\/a><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/get-a-bigger-picture-with-n1ql-window-functions-and-cte\/\">https:\/\/www.couchbase.com\/blog\/get-a-bigger-picture-with-n1ql-window-functions-and-cte\/<\/a><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">MongoDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">Sem suporte<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>INSERT: inser\u00e7\u00e3o de uma \u00fanica linha\/documento.<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">SQL<\/span><\/td>\n<td><span style=\"font-weight: 400\">Inserir uma \u00fanica linha<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cassandra<\/span><\/td>\n<td><span style=\"font-weight: 400\">Declara\u00e7\u00e3o INSERT<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">Inser\u00e7\u00e3o de API<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Couchbase<\/span><\/td>\n<td><span style=\"font-weight: 400\">Declara\u00e7\u00e3o INSERT<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">MongoDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">db.t1.save()<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>INSERT: inser\u00e7\u00e3o de v\u00e1rias linhas\/documentos.<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Declara\u00e7\u00e3o INSERT<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<tr>\n<td>Cosmosdb<\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>INSERT com v\u00e1rios documentos<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>db.t1.insert()<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>Declara\u00e7\u00e3o DELETE<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Excluir um ou mais documentos<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>Declara\u00e7\u00e3o DELETE; igual ao SQL<\/td>\n<\/tr>\n<tr>\n<td>Cosmosdb<\/td>\n<td>Exclus\u00e3o da API<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Declara\u00e7\u00e3o DELETE; igual ao SQL<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>db.t1.delete()<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>Declara\u00e7\u00e3o UPSERT<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>INSERIR.  UPDATE se existir.<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<tr>\n<td>Cosmosdb<\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Declara\u00e7\u00e3o UPSERT.<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>Declara\u00e7\u00e3o de atualiza\u00e7\u00e3o<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">SQL<\/span><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cassandra<\/span><\/td>\n<td><span style=\"font-weight: 400\">UPDATE; o mesmo que SQL<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">Atualiza\u00e7\u00e3o da API<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Couchbase<\/span><\/td>\n<td><span style=\"font-weight: 400\">UPDATE; o mesmo que SQL<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">MongoDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">db.t1.update()<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>MERGE: mescla uma rela\u00e7\u00e3o (conjunto de linhas) com outra.<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Mesclar um conjunto de linhas (documentos) em outro.<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Declara\u00e7\u00e3o MERGE, igual ao SQL.<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>Declara\u00e7\u00e3o PREPARE<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Analisar, analisar e criar um plano de execu\u00e7\u00e3o.<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>Com suporte.   Vejo exemplos de preparedStatement() no Java SDK.dd<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Apoiado; PREPARAR<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>EXECUTAR<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Executar uma declara\u00e7\u00e3o ad-hoc ou preparada.<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>Suportado em Java.<\/td>\n<\/tr>\n<tr>\n<td>Cosmosdb<\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Suportado, semelhante ao SQL.<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>CONCESS\u00c3O\/REVOGA\u00c7\u00c3O<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Conceder\/REVOGAR permiss\u00f5es para opera\u00e7\u00f5es espec\u00edficas no conjunto de dados<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>CONCESS\u00c3O, REVOGA\u00c7\u00c3O<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td>Suporte \u00e0 API<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>CONCEDER FUN\u00c7\u00c3O, REVOGAR FUN\u00c7\u00c3O<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>TBD??<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>Declara\u00e7\u00e3o DESCRIBE<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Descreve o esquema de uma tabela<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>DESCREVER<\/td>\n<\/tr>\n<tr>\n<td>Cosmosdb<\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>O INFER descreve o esquema dos documentos<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>Ferramenta de b\u00fassola - somente gr\u00e1fica.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>Declara\u00e7\u00e3o TRUNCATE<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Trunca os dados da tabela sem alterar a seguran\u00e7a ou o esquema f\u00edsico.<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>TRUNCAR<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td>Sem suporte<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Opera\u00e7\u00e3o FLUSH<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>Sem suporte.  Solu\u00e7\u00e3o alternativa: remover a cole\u00e7\u00e3o e recri\u00e1-la com as mesmas configura\u00e7\u00f5es de seguran\u00e7a.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>L\u00f3gica de valores (valores booleanos)<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>True, False, NULL (Desconhecido)<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>True, False, NULL (Desconhecido)<\/td>\n<\/tr>\n<tr>\n<td>Cosmosdb<\/td>\n<td>True, False, NULL (Desconhecido)<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>True (Verdadeiro), False (Falso), NULL (Desconhecido), Missing (Ausente)<\/p>\n<p><a href=\"https:\/\/docs.couchbase.com\/server\/4.0\/n1ql\/n1ql-language-reference\/booleanlogic.html\">https:\/\/docs.couchbase.com\/server\/4.0\/n1ql\/n1ql-language-reference\/booleanlogic.html<\/a><\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>True, False, NULL (Desconhecido)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>Otimizador de consultas: Tipo de otimizador<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Otimizador baseado em regras e em custos.  Faz reescrita de consultas, sele\u00e7\u00e3o de \u00edndices, ordena\u00e7\u00e3o de jun\u00e7\u00f5es, sele\u00e7\u00e3o de tipos de jun\u00e7\u00f5es e posi\u00e7\u00e3o dos tabuladores (interno\/externo, constru\u00e7\u00e3o\/probe de tabelas de hash)<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>Otimizador baseado em regras.  A sele\u00e7\u00e3o de \u00edndices para a tabela \u00fanica \u00e9 feita, pois n\u00e3o h\u00e1 jun\u00e7\u00f5es.<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td>O otimizador baseado em regras faz principalmente a sele\u00e7\u00e3o de \u00edndices.<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Otimizador baseado em regras, sele\u00e7\u00e3o de \u00edndice(s).  Bloqueia a jun\u00e7\u00e3o de loop aninhado por padr\u00e3o, mas oferece suporte \u00e0 jun\u00e7\u00e3o de hash por meio de dica do usu\u00e1rio na consulta.<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>Otimizador \"baseado em forma\" de acordo com a documenta\u00e7\u00e3o.  Cada nova consulta \u00e9 combinada com uma consulta baseada na \"forma\".  Na primeira vez que uma consulta \u00e9 executada, o otimizador faz a sele\u00e7\u00e3o do \u00edndice, mas quando h\u00e1 v\u00e1rios candidatos, ele executa v\u00e1rias consultas simultaneamente para ver quem retorna os resultados primeiro.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>Otimizador de consultas: Sele\u00e7\u00e3o de \u00edndice<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Sim<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>Sim<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td>Sim<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Sim<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>Sim<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>Otimizador de consultas: Reescrita de consultas<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">SQL<\/span><\/td>\n<td><span style=\"font-weight: 400\">Reescrever partes da consulta em um equivalente l\u00f3gico para melhorar o desempenho. Por exemplo, reescrita de subconsulta, dobramento de visualiza\u00e7\u00e3o, convers\u00e3o de tipo de jun\u00e7\u00e3o, avalia\u00e7\u00e3o de express\u00e3o constante etc.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cassandra<\/span><\/td>\n<td><span style=\"font-weight: 400\">Nenhum<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cosmosdb<\/span><\/td>\n<td><span style=\"font-weight: 400\">Nenhuma reescrita conhecida<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Couchbase<\/span><\/td>\n<td><span style=\"font-weight: 400\">Reescrita de consulta b\u00e1sica.  LEFT OUTER para INNER quando aplic\u00e1vel, avalia\u00e7\u00e3o de express\u00f5es constantes.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">MongoDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">Nenhum<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>Otimiza\u00e7\u00e3o de consultas: Tipo JOIN <\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Escolha o \u00edndice mais eficiente, dentre os tipos de uni\u00e3o dispon\u00edveis.<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>N\u00e3o aplic\u00e1vel, pois n\u00e3o h\u00e1 suporte para uni\u00f5es.<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td>N\u00e3o est\u00e1 claramente documentado.<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Loop aninhado por padr\u00e3o. Jun\u00e7\u00e3o de hash por dica de usu\u00e1rio.<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>Apenas o loop aninhado \u00e9 suportado.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>Suporte \u00e0 TRANSA\u00c7\u00c3O. \u00a0<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">SQL<\/span><\/td>\n<td><span style=\"font-weight: 400\">Suporte ACID com suporte a v\u00e1rias linhas e v\u00e1rias declara\u00e7\u00f5es.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cassandra<\/span><\/td>\n<td><span style=\"font-weight: 400\">N\u00e3o<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cosmosdb<\/span><\/td>\n<td><span style=\"font-weight: 400\">Sim<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Couchbase<\/span><\/td>\n<td><span style=\"font-weight: 400\">N\u00e3o<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">MongoDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">Sim, na vers\u00e3o 4.0<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>\u00cdndices<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>SQL<\/td>\n<td>Estruturas de dados mantidas para acelerar o desempenho da consulta.  Os \u00edndices s\u00e3o<\/td>\n<\/tr>\n<tr>\n<td>Cassandra<\/td>\n<td>Oferece suporte a \u00edndices prim\u00e1rios, secund\u00e1rios e de matriz.  \u00c9 necess\u00e1rio instalar e indexar os dados no SOLR para um \u00edndice de pesquisa.<\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td>Indexa tudo por padr\u00e3o: escalares, matrizes.  N\u00e3o h\u00e1 suporte para o \u00edndice de pesquisa.<\/td>\n<\/tr>\n<tr>\n<td>Couchbase<\/td>\n<td>Oferece suporte a \u00edndices prim\u00e1rios, secund\u00e1rios, compostos, funcionais, adaptativos, de pesquisa, espaciais, particionados e de r\u00e9plica.  Os \u00edndices s\u00e3o eventualmente consistentes.<\/td>\n<\/tr>\n<tr>\n<td>MongoDB<\/td>\n<td>Oferece suporte a \u00edndices prim\u00e1rio, secund\u00e1rio, composto, de pesquisa, espacial, particionado e de r\u00e9plica.  O \u00edndice de pesquisa \u00e9 criado de forma simplista em uma \u00e1rvore B.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><b>SQL: Suporte a tipos de dados.<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">SQL<\/span><\/td>\n<td><span style=\"font-weight: 400\">Amplo suporte a tipos de dados num\u00e9ricos, de caracteres e de data e hora.<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Cassandra<\/span><\/td>\n<td><span style=\"font-weight: 400\">Num\u00e9rico, decimal, duplo. Int, float, varint, Timestamp, cole\u00e7\u00e3o (set, list) <\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">CosmosDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">Tipos de dados JSON: num\u00e9rico, string, booleano, objeto, matrizes<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Couchbase<\/span><\/td>\n<td><span style=\"font-weight: 400\">Tipos de dados JSON: num\u00e9rico, string, booleano, objeto, matrizes<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">MongoDB<\/span><\/td>\n<td><span style=\"font-weight: 400\">Tipos de dados JSON: num\u00e9rico, cadeia de caracteres, booleano, objeto, matrizes e extens\u00f5es personalizadas para o tipo de dados de carimbo de data\/hora.<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Conclus\u00e3o:<\/strong><\/p>\n<p>Os bancos de dados NoSQL populares tentaram estender e dar suporte ao SQL declarativo para os respectivos modelos e arquiteturas de dados. Portanto, \u00e9 importante entender os recursos, as limita\u00e7\u00f5es dos recursos e a arquitetura durante a avalia\u00e7\u00e3o.<\/p>\n<p><strong>Refer\u00eancias:<\/strong><\/p>\n<ol>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/unreasonable-effectiveness-of-sql\/\">A efic\u00e1cia irracional do SQL<\/a><\/li>\n<\/ol>","protected":false},"excerpt":{"rendered":"<p>Business applications have requirements: take customer orders, deliver customer orders, track shipping, generate inventory report, end of the day\/month\/quarter business report, generate business dashboards and more. \u00a0These requirements evolve slowly. They remain even when you choose a NoSQL database. On [&hellip;]<\/p>","protected":false},"author":55,"featured_media":6985,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,2294,1819,1812],"tags":[1886,2136,1261,1590,1309],"ppma_author":[8929],"class_list":["post-6760","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-analytics","category-data-modeling","category-n1ql-query","tag-cassandra","tag-cosmosdb","tag-json","tag-microsoft","tag-mongodb"],"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>The Unreasonable Effectiveness of SQL in NoSQL Databases<\/title>\n<meta name=\"description\" content=\"Compare and contrast SQL language support in Cassandra, CosmosDB, Couchbase, and MongoDB via their respective implementations.\u00a0\" \/>\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\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Unreasonable Effectiveness of SQL in NoSQL Databases\" \/>\n<meta property=\"og:description\" content=\"Compare and contrast SQL language support in Cassandra, CosmosDB, Couchbase, and MongoDB via their respective implementations.\u00a0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-05-27T06:50:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T00:32:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-26-at-7.05.19-PM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1244\" \/>\n\t<meta property=\"og:image:height\" content=\"1670\" \/>\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=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/\"},\"author\":{\"name\":\"Keshav Murthy\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636\"},\"headline\":\"The Unreasonable Effectiveness of SQL in NoSQL Databases\",\"datePublished\":\"2019-05-27T06:50:29+00:00\",\"dateModified\":\"2025-06-14T00:32:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/\"},\"wordCount\":2018,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-26-at-7.05.19-PM.png\",\"keywords\":[\"cassandra\",\"cosmosdb\",\"JSON\",\"Microsoft\",\"mongodb\"],\"articleSection\":[\"Application Design\",\"Couchbase Analytics\",\"Data Modeling\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/\",\"name\":\"The Unreasonable Effectiveness of SQL in NoSQL Databases\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-26-at-7.05.19-PM.png\",\"datePublished\":\"2019-05-27T06:50:29+00:00\",\"dateModified\":\"2025-06-14T00:32:38+00:00\",\"description\":\"Compare and contrast SQL language support in Cassandra, CosmosDB, Couchbase, and MongoDB via their respective implementations.\u00a0\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-26-at-7.05.19-PM.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-26-at-7.05.19-PM.png\",\"width\":1244,\"height\":1670},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Unreasonable Effectiveness of SQL in NoSQL Databases\"}]},{\"@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":"A efic\u00e1cia irracional do SQL em bancos de dados NoSQL","description":"Compare e contraste o suporte \u00e0 linguagem SQL no Cassandra, CosmosDB, Couchbase e MongoDB por meio de suas respectivas implementa\u00e7\u00f5es.\u00a0","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\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/","og_locale":"pt_BR","og_type":"article","og_title":"The Unreasonable Effectiveness of SQL in NoSQL Databases","og_description":"Compare and contrast SQL language support in Cassandra, CosmosDB, Couchbase, and MongoDB via their respective implementations.\u00a0","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-05-27T06:50:29+00:00","article_modified_time":"2025-06-14T00:32:38+00:00","og_image":[{"width":1244,"height":1670,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-26-at-7.05.19-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":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/"},"author":{"name":"Keshav Murthy","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636"},"headline":"The Unreasonable Effectiveness of SQL in NoSQL Databases","datePublished":"2019-05-27T06:50:29+00:00","dateModified":"2025-06-14T00:32:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/"},"wordCount":2018,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-26-at-7.05.19-PM.png","keywords":["cassandra","cosmosdb","JSON","Microsoft","mongodb"],"articleSection":["Application Design","Couchbase Analytics","Data Modeling","SQL++ \/ N1QL Query"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/","url":"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/","name":"A efic\u00e1cia irracional do SQL em bancos de dados NoSQL","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-26-at-7.05.19-PM.png","datePublished":"2019-05-27T06:50:29+00:00","dateModified":"2025-06-14T00:32:38+00:00","description":"Compare e contraste o suporte \u00e0 linguagem SQL no Cassandra, CosmosDB, Couchbase e MongoDB por meio de suas respectivas implementa\u00e7\u00f5es.\u00a0","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-26-at-7.05.19-PM.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/05\/Screen-Shot-2019-05-26-at-7.05.19-PM.png","width":1244,"height":1670},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/the-unreasonable-effectiveness-of-sql-in-nosql-databases\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"The Unreasonable Effectiveness of SQL in NoSQL Databases"}]},{"@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","author_category":"","last_name":"Murthy","first_name":"Keshav","job_title":"","user_url":"https:\/\/blog.planetnosql.com\/","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\/6760","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=6760"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/6760\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/6985"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=6760"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=6760"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=6760"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=6760"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}