{"id":2308,"date":"2016-06-28T18:35:52","date_gmt":"2016-06-28T18:35:51","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2308"},"modified":"2024-09-12T01:15:19","modified_gmt":"2024-09-12T08:15:19","slug":"sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/","title":{"rendered":"Publicaci\u00f3n en el blog de un socio: SQL y N1QL en armon\u00eda: Ejecuci\u00f3n colaborativa de consultas en controladores Simba Couchbase"},"content":{"rendered":"<p>El lenguaje de consulta estructurado (SQL) se dise\u00f1\u00f3 originalmente como un lenguaje de consulta intuitivo para almacenes de datos relacionales. NoSQL, relativamente incipiente en comparaci\u00f3n, a\u00fan requiere compatibilidad con SQL, ya que muchas herramientas y aplicaciones de BI lo entienden. Couchbase soporta su propio lenguaje de consulta, <a href=\"https:\/\/www.couchbase.com\/blog\/es\/n1ql\/\">N1QL<\/a>que ampl\u00eda SQL para consultar documentos JSON almacenados en <a href=\"https:\/\/www.couchbase.com\/blog\/es\/nosql-databases\/couchbase-server\/\">Servidor Couchbase<\/a>. Los drivers ODBC y JDBC de Simba Couchbase permiten a los usuarios \"tener su pastel y com\u00e9rselo tambi\u00e9n\" permitiendo a los usuarios aprovechar tanto SQL como N1QL. Una de las formas de conseguirlo es con el controlador <a href=\"https:\/\/www.simba.com\/resources\/sdk\/knowledge-base\/cqe-filters\/?__hstc=1833966.e43638dbb6ffde0bd1799c71f6128f04.1466541164167.1466636500735.1466646529605.4&amp;__hssc=1833966.1.1466646529605&amp;__hsfp=3049910071\">Ejecuci\u00f3n colaborativa de consultas (CQE) <\/a>que ofrece SimbaEngine X. Este art\u00edculo explica c\u00f3mo los controladores Simba Couchbase utilizan CQE, aprovechando las similitudes entre SQL y N1QL, para garantizar un rendimiento \u00f3ptimo.<\/p>\n<h2>Operaci\u00f3n JOIN<\/h2>\n<p>N1QL admite<a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/n1ql\/n1ql-language-reference\/from.html#story-h2-3\"> B\u00fasqueda de uniones<\/a>que se pueden traducir a grandes rasgos en JOINs an\u00e1logos en SQL. Aqu\u00ed explicaremos c\u00f3mo los drivers Simba Couchbase aprovechan la caracter\u00edstica CQE para pasar las operaciones JOIN a Couchbase Server.<\/p>\n<p>Considere el conjunto de datos de muestra de cerveza con documentos de cerveza y cervecer\u00eda. Con los controladores Simba Couchbase, estos documentos se pueden asignar a dos tablas diferentes (cerveza y cervecer\u00eda) y los usuarios pueden ejecutar consultas JOIN en estas dos tablas.<\/p>\n<p>Digamos que si un usuario desea averiguar todas las cervezas que se fabrican en el estado de California, emitir\u00eda una sentencia SQL como la siguiente:<\/p>\n<pre>\r\n<code class=\"language-sql\">SELECT beer.name, brewery.name FROM beer JOIN brewery ON beer.brewery_id=brewery.PK WHERE brewery.state=&apos;California&apos;<\/code><\/pre>\n<p>Para generar el resultado de esta consulta SQL tendr\u00eda que hacer lo siguiente:<\/p>\n<ul>\n<li>Recuperar todos los documentos de cerveza de Couchbase Server al cliente<\/li>\n<li>Recuperar todos los documentos de cervecera de Couchbase Server al cliente<\/li>\n<li>Ejecutar la uni\u00f3n<\/li>\n<li>Filtra los resultados cuyo estado sea California.<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p>Esto no es muy eficiente, ya que puede suponer una gran carga para el cliente si las tablas de uni\u00f3n son muy grandes. Adem\u00e1s, las operaciones JOIN y WHERE est\u00e1n soportadas en N1QL. Transferir la carga al servidor mejorar\u00eda el rendimiento.<br \/>\nLos drivers Simba Couchbase, hacen exactamente eso. Con CQE, los drivers de Simba Couchbase traducen el SQL dado a N1QL an\u00e1logo, que puede ser pasado a Couchbase Server para su ejecuci\u00f3n. La sentencia SQL anterior puede traducirse a N1QL de la siguiente manera:<\/p>\n<pre>\r\n<code class=\"language-sql\">SELECT `$sb_c5_name`,`$sb_c6_name` \r\nFROM `beer-sample` `$sb_t0_beer` \r\nJOIN `beer-sample` `$sb_t1_brewery` \r\nON KEYS TOSTRING(IFMISSING(`$sb_t0_beer`.`brewery_id`,NULL)) \r\nLET `$sb_c0_PK` = META(`$sb_t0_beer`).id,\r\n    `$sb_c1_TableType` = TOSTRING(IFMISSING(`$sb_t0_beer`.`type`,NULL)),\r\n    `$sb_c2_PK` = META(`$sb_t1_brewery`).id,\r\n    `$sb_c3_TableType` = TOSTRING(IFMISSING(`$sb_t1_brewery`.`type`,NULL)),\r\n    `$sb_c4_state` = TOSTRING(IFMISSING(`$sb_t1_brewery`.`state`,NULL)),\r\n    `$sb_c5_name` = TOSTRING(IFMISSING(`$sb_t0_beer`.`name`,NULL)),\r\n    `$sb_c6_name` = TOSTRING(IFMISSING(`$sb_t1_brewery`.`name`,NULL)) \r\nWHERE \r\n(`$sb_c0_PK`!=&apos;~~~SchemaMap&apos;)\r\nAND(`$sb_c1_TableType` = &apos;beer&apos;)\r\nAND(`$sb_c2_PK`!=&apos;~~~SchemaMap&apos;)\r\nAND(`$sb_c3_TableType` = &apos;brewery&apos;)\r\nAND(`$sb_c4_state` = \"California\");<\/code><\/pre>\n<p>\u00a0<\/p>\n<p>Bajo el cap\u00f3, los controladores Simba Couchbase utilizan Simba SQL Engine para el an\u00e1lisis sint\u00e1ctico, la preparaci\u00f3n y la ejecuci\u00f3n de consultas. Antes de la ejecuci\u00f3n de la consulta, los controladores crean una representaci\u00f3n de \u00e1rbol de expresiones algebraicas (AE-Tree). La sentencia SQL adopta esta forma justo antes de que Simba SQL Engine la transforme en un plan de ejecuci\u00f3n y la ejecute. Antes de la ejecuci\u00f3n, el controlador puede revisar el plan y ver si puede ejecutar alguna parte del mismo. Esto se denomina paso de paso hacia abajo.<\/p>\n<p>Justo antes de la etapa de pass-down (como se describe en el <a href=\"https:\/\/www.simba.com\/resources\/sdk\/knowledge-base\/sqlengine-aetree-optimization-overview\/?__hstc=1833966.e43638dbb6ffde0bd1799c71f6128f04.1466541164167.1466636500735.1466646529605.4&amp;__hssc=1833966.1.1466646529605&amp;__hsfp=3049910071\">Optimizaci\u00f3n del AETree <\/a>art\u00edculo), el \u00e1rbol AE tiene el siguiente aspecto:<\/p>\n<pre>\r\n<code class=\"language-sql\">AEQuery\r\n    AEProject\r\n        AEJoin: AE_INNER_JOIN\r\n            AETable: cbdefault.beer-sample.beer\r\n            AESelect\r\n                AETable: cbdefault.beer-sample.brewery\r\n                AEComparison: EQ\r\n                    AEValueList\r\n                        AEColumn: \"cbdefault\".\"beer-sample\".\"brewery\".\"state\"\r\n                    AEValueList\r\n                        AELiteral: California; Character String Literal\r\n            AEComparison: EQ\r\n                AEValueList\r\n                    AEColumn: \"cbdefault\".\"beer-sample\".\"beer\".\"brewery_id\"\r\n                AEValueList\r\n                    AEColumn: \"cbdefault\".\"beer-sample\".\"brewery\".\"PK\"\r\n        AEValueList\r\n            AEColumn: \"cbdefault\".\"beer-sample\".\"beer\".\"name\"\r\n            AEColumn: \"cbdefault\".\"beer-sample\".\"brewery\".\"name\"<\/code><\/pre>\n<p>\u00a0<\/p>\n<p>Y despu\u00e9s del pass-down, el AETree tiene este aspecto:<\/p>\n<p>\u00a0<\/p>\n<pre>\r\n<code class=\"language-sql\">        AEQuery\r\n            AETable: beer_JOIN_brewery<\/code><\/pre>\n<p>\nComo puedes ver, el AE-Tree s\u00f3lo contiene un nodo que representa la tabla unida, lo que significa que todo lo dem\u00e1s, incluyendo la uni\u00f3n y el filtrado, se pasa a Couchbase Server. Menos datos enviados a trav\u00e9s del cable desde Couchbase Server al controlador y menos operaciones realizadas del lado del cliente = \u00a1mejor rendimiento!<\/p>\n<h1>Operaci\u00f3n UNNEST<\/h1>\n<p>N1QL soporta la cl\u00e1usula UNNEST, que conceptualmente realiza una uni\u00f3n de un array anidado con su objeto padre.<\/p>\n<p>En los drivers Simba Couchbase, cualquier array anidado se mapea a una tabla virtual y los usuarios pueden JOIN la tabla padre con la tabla virtual. Esto utiliza de nuevo la capacidad CQE de SimbaEngine X y aprovecha la cl\u00e1usula N1QL UNNEST.<\/p>\n<p>Por ejemplo, todos los documentos de cervecer\u00eda del conjunto de datos de muestras de cerveza contienen matrices anidadas llamadas brewery_address. En los drivers Simba Couchbase estos documentos se mapean a una tabla brewery y una tabla virtual brewery_address. Digamos que si un usuario desea obtener todos los nombres de las cervecer\u00edas tras unir brewery y brewery_address, emitir\u00eda una sentencia SQL como la siguiente:<\/p>\n<pre>\r\n<code class=\"language-sql\">      SELECT brewery.name FROM brewery JOIN brewery_address ON brewery.PK=brewery_address.PK;<\/code><\/pre>\n<p>\nLos controladores Simba Couchbase traducen la sentencia SQL anterior a N1QL de la siguiente manera:<\/p>\n<pre>\r\n<code class=\"language-sql\">      SELECT `$sb_c4_name` \r\n      FROM `beer-sample` `$sb_t0_brewery` \r\n      UNNEST `$sb_t0_brewery`.`address` `$sb_t1_brewery_address` \r\n      LET `$sb_c0_PK` = META(`$sb_t0_brewery`).id,\r\n          `$sb_c1_TableType` = TOSTRING(IFMISSING(`$sb_t0_brewery`.`type`,NULL)),\r\n          `$sb_c2_PK` = META(`$sb_t0_brewery`).id,\r\n          `$sb_c3_TableType` = TOSTRING(IFMISSING(`$sb_t0_brewery`.`type`,NULL)),\r\n          `$sb_c4_name` = TOSTRING(IFMISSING(`$sb_t0_brewery`.`name`,NULL)) \r\n      WHERE \r\n             (`$sb_c0_PK`!=&apos;~~~SchemaMap&apos;)\r\n          AND(`$sb_c1_TableType` = &apos;brewery&apos;)\r\n          AND(`$sb_c2_PK`!=&apos;~~~SchemaMap&apos;)\r\n          AND(`$sb_c3_TableType` = &apos;brewery&apos;);<\/code><\/pre>\n<p>\u00a0<\/p>\n<p>Antes del pass-down, el \u00e1rbol AE tiene el siguiente aspecto:<\/p>\n<pre>\r\n<code class=\"language-sql\">AEQuery\r\n    AEProject\r\n        AEJoin: AE_INNER_JOIN\r\n            AETable: cbdefault.beer-sample.brewery\r\n            AETable: cbdefault.beer-sample.brewery_address\r\n            AEComparison: EQ\r\n                AEValueList\r\n                    AEColumn: \"cbdefault\".\"beer-sample\".\"brewery\".\"PK\"\r\n                AEValueList\r\n                    AEColumn: \"cbdefault\".\"beer-sample\".\"brewery_address\".\"PK\"\r\n        AEValueList\r\n            AEColumn: \"cbdefault\".\"beer-sample\".\"brewery\".\"name\"<\/code><\/pre>\n<p>\u00a0<\/p>\n<p>Despu\u00e9s del pass-down, el \u00e1rbol AE tiene el siguiente aspecto:<\/p>\n<pre>\r\n<code class=\"language-sql\">AEQuery\r\n    AETable: brewery_JOIN_brewery_address<\/code><\/pre>\n<p>\nComo puedes ver, el AE-Tree s\u00f3lo contiene un nodo que representa la tabla unida, lo que significa que todo lo dem\u00e1s se pasa a Couchbase Server para su ejecuci\u00f3n. De nuevo, cuantas m\u00e1s operaciones se realicen en el servidor, y menos datos vuelvan al controlador, mayor ser\u00e1 el rendimiento de la consulta.<\/p>\n<p>Estos dos ejemplos destacan c\u00f3mo los drivers Simba Couchbase utilizan todo el potencial de Couchbase Server, pasando las operaciones N1QL soportadas al servidor para su ejecuci\u00f3n. Para cualquier caracter\u00edstica SQL que no est\u00e9 soportada por N1QL, los drivers ejecutan las operaciones (del lado del cliente). De esta forma, los controladores garantizan una amplia compatibilidad con SQL y N1QL, as\u00ed como un alto rendimiento.<\/p>\n<h1>Ahora es su turno<\/h1>\n<p>Descargue una evaluaci\u00f3n gratuita de <a href=\"https:\/\/www.simba.com\/drivers\/couchbase-odbc-jdbc\/?__hstc=1833966.e43638dbb6ffde0bd1799c71f6128f04.1466541164167.1466636500735.1466646529605.4&amp;__hssc=1833966.1.1466646529605&amp;__hsfp=3049910071\">Controladores ODBC\/JDBC de Couchbase<\/a> \u00a1y pru\u00e9belos con el nuevo Couchbase Server 4.5!<\/p>","protected":false},"excerpt":{"rendered":"<p>Structured Query Language (SQL) was originally designed as an intuitive query language for relational data stores. NoSQL, relatively nascent in comparison, still requires compatibility with SQL as many BI tools and applications understand it. Couchbase supports its own query language, [&hellip;]<\/p>\n","protected":false},"author":77,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1812],"tags":[],"ppma_author":[9047],"class_list":["post-2308","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-n1ql-query"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Partner Blog Post: SQL and N1QL in Harmony: Collaborative Query Execution in Simba Couchbase Drivers - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Partner Blog Post: SQL and N1QL in Harmony: Collaborative Query Execution in Simba Couchbase Drivers\" \/>\n<meta property=\"og:description\" content=\"Structured Query Language (SQL) was originally designed as an intuitive query language for relational data stores. NoSQL, relatively nascent in comparison, still requires compatibility with SQL as many BI tools and applications understand it. Couchbase supports its own query language, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-28T18:35:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-12T08:15:19+00:00\" \/>\n<meta name=\"author\" content=\"Nowrin Anwar Joyita\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nowrin Anwar Joyita\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\\\/\"},\"author\":{\"name\":\"Nowrin Anwar Joyita\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/90dc5afc5f8781a07c9d3f9b19ca2c40\"},\"headline\":\"Partner Blog Post: SQL and N1QL in Harmony: Collaborative Query Execution in Simba Couchbase Drivers\",\"datePublished\":\"2016-06-28T18:35:51+00:00\",\"dateModified\":\"2024-09-12T08:15:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\\\/\"},\"wordCount\":802,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"SQL++ \\\/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\\\/\",\"name\":\"Partner Blog Post: SQL and N1QL in Harmony: Collaborative Query Execution in Simba Couchbase Drivers - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-06-28T18:35:51+00:00\",\"dateModified\":\"2024-09-12T08:15:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Partner Blog Post: SQL and N1QL in Harmony: Collaborative Query Execution in Simba Couchbase Drivers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/admin-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/90dc5afc5f8781a07c9d3f9b19ca2c40\",\"name\":\"Nowrin Anwar Joyita\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/79860cfbf2db4a2eab20600a0c7fe3593ee307b568bdc720fd1b253170778ae6?s=96&d=mm&r=g05dcdd5d72e8fe12ef046bbcceb50427\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/79860cfbf2db4a2eab20600a0c7fe3593ee307b568bdc720fd1b253170778ae6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/79860cfbf2db4a2eab20600a0c7fe3593ee307b568bdc720fd1b253170778ae6?s=96&d=mm&r=g\",\"caption\":\"Nowrin Anwar Joyita\"},\"description\":\"Currently, Nowrin Anwar Joyita is working a Software Developer at Bit Quill Technologies. Prior joining to bit Quill Technologies, Nowrin spent around 2 years in Simba Technologies as a Computer Scientist. She has worked on multiple ODBC (C++) and JDBC (Java) drivers in Simba namely Athena ODBC and JDBC drivers, Couchbase ODBC and JDBC drivers, MongoDB ODBC driver, Presto JDBC driver, Drill ODBC driver.\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/es\\\/author\\\/nowrin-joyita\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Partner Blog Post: SQL and N1QL in Harmony: Collaborative Query Execution in Simba Couchbase Drivers - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/","og_locale":"es_MX","og_type":"article","og_title":"Partner Blog Post: SQL and N1QL in Harmony: Collaborative Query Execution in Simba Couchbase Drivers","og_description":"Structured Query Language (SQL) was originally designed as an intuitive query language for relational data stores. NoSQL, relatively nascent in comparison, still requires compatibility with SQL as many BI tools and applications understand it. Couchbase supports its own query language, [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-06-28T18:35:51+00:00","article_modified_time":"2024-09-12T08:15:19+00:00","author":"Nowrin Anwar Joyita","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Nowrin Anwar Joyita","Est. reading time":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/"},"author":{"name":"Nowrin Anwar Joyita","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/90dc5afc5f8781a07c9d3f9b19ca2c40"},"headline":"Partner Blog Post: SQL and N1QL in Harmony: Collaborative Query Execution in Simba Couchbase Drivers","datePublished":"2016-06-28T18:35:51+00:00","dateModified":"2024-09-12T08:15:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/"},"wordCount":802,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/","url":"https:\/\/www.couchbase.com\/blog\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/","name":"Partner Blog Post: SQL and N1QL in Harmony: Collaborative Query Execution in Simba Couchbase Drivers - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-06-28T18:35:51+00:00","dateModified":"2024-09-12T08:15:19+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/sql-and-n1ql-in-harmony-collaborative-query-execution-in-simba-couchbase-drivers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Partner Blog Post: SQL and N1QL in Harmony: Collaborative Query Execution in Simba Couchbase Drivers"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/90dc5afc5f8781a07c9d3f9b19ca2c40","name":"Nowrin Anwar Joyita","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/79860cfbf2db4a2eab20600a0c7fe3593ee307b568bdc720fd1b253170778ae6?s=96&d=mm&r=g05dcdd5d72e8fe12ef046bbcceb50427","url":"https:\/\/secure.gravatar.com\/avatar\/79860cfbf2db4a2eab20600a0c7fe3593ee307b568bdc720fd1b253170778ae6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/79860cfbf2db4a2eab20600a0c7fe3593ee307b568bdc720fd1b253170778ae6?s=96&d=mm&r=g","caption":"Nowrin Anwar Joyita"},"description":"Actualmente, Nowrin Anwar Joyita trabaja como Desarrollador de Software en Bit Quill Technologies. Antes de unirse a Bit Quill Technologies, Nowrin pas\u00f3 alrededor de 2 a\u00f1os en Simba Technologies como Inform\u00e1tica. Ha trabajado en m\u00faltiples drivers ODBC (C++) y JDBC (Java) en Simba, concretamente en los drivers ODBC y JDBC de Athena, los drivers ODBC y JDBC de Couchbase, el driver ODBC de MongoDB, el driver JDBC de Presto y el driver ODBC de Drill.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/nowrin-joyita\/"}]}},"acf":[],"authors":[{"term_id":9047,"user_id":77,"is_guest":0,"slug":"nowrin-joyita","display_name":"Nowrin Anwar Joyita","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/79860cfbf2db4a2eab20600a0c7fe3593ee307b568bdc720fd1b253170778ae6?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2308","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/77"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=2308"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2308\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=2308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=2308"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=2308"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=2308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}