{"id":9763,"date":"2021-08-02T00:00:41","date_gmt":"2021-08-02T07:00:41","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=9763"},"modified":"2025-06-13T17:21:11","modified_gmt":"2025-06-14T00:21:11","slug":"couchbase-transactions-with-n1ql","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-transactions-with-n1ql\/","title":{"rendered":"El lenguaje de consulta N1QL ya admite transacciones ACID distribuidas"},"content":{"rendered":"<p><strong>Ya est\u00e1n disponibles las transacciones ACID distribuidas y multidocumento<\/strong> en Couchbase como parte del lenguaje de consulta N1QL.<\/p>\n<p>Presentaci\u00f3n de Couchbase <a href=\"https:\/\/www.couchbase.com\/blog\/es\/transactions\/?ref=blog\" rel=\"noopener\" target=\"_blank\">Transacciones ACID en su v6.5<\/a> con los SDK de Couchbase, y ahora se ha ampliado al servicio de consulta N1QL de Couchbase en <a href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-server-7-0-release\/?ref=blog\" rel=\"noopener\" target=\"_blank\">la versi\u00f3n 7.0<\/a>.<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/capella\/\" rel=\"noopener\" target=\"_blank\">Couchbase<\/a> proporciona soporte para transacciones ACID multi-documento para su plataforma de base de datos distribuida que es escalable horizontalmente y tambi\u00e9n soporta alta disponibilidad. Esta funci\u00f3n est\u00e1 disponible para los desarrolladores de aplicaciones a trav\u00e9s del SDK y las API de Couchbase. Las API permiten a los desarrolladores realizar modificaciones de forma segura en los documentos de la base de datos dentro de una transacci\u00f3n y, a continuaci\u00f3n, confirmar o revertir todos los cambios en la transacci\u00f3n en funci\u00f3n de la l\u00f3gica de la aplicaci\u00f3n. <\/p>\n<p>Las transacciones de Couchbase funcionan en todas partes: a trav\u00e9s de nodos, documentos, buckets, Scopes y Collections. El proceso de transacciones asegura que s\u00f3lo los datos comprometidos son legibles por otros procesos, y maneja autom\u00e1ticamente el bloqueo y la detecci\u00f3n de conflictos.<\/p>\n<p>La versi\u00f3n 7.0 ampl\u00eda el soporte de transacciones distribuidas a <a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/n1ql\/?ref=blog\" rel=\"noopener\" target=\"_blank\">el lenguaje de consulta N1QL<\/a>. <\/p>\n<p>Para los usuarios de bases de datos relacionales (RDBMS), esta mejora de N1QL proporciona construcciones transaccionales familiares, como por ejemplo <code>INICIAR TRANSACCI\u00d3N<\/code>, <code>GUARDAR PUNTO<\/code>, <code>ROLLBACK<\/code> y <code>COMPROMETERSE<\/code>. Las transacciones N1QL tambi\u00e9n soportan todos los lenguajes de manipulaci\u00f3n de datos (DML), lo que est\u00e1 en l\u00ednea con otras implementaciones RDBMS.<\/p>\n<h2>Ventajas de las transacciones N1QL<\/h2>\n<p>Las principales ventajas de incorporar el soporte de transacciones distribuidas al lenguaje de consulta N1QL son:<\/p>\n<ul>\n<ul>\n<li>Un entorno m\u00e1s seguro para la manipulaci\u00f3n de datos ad hoc, que permite a los desarrolladores y administradores de bases de datos modificar los datos y verificar su correcci\u00f3n antes de consignar los cambios en la base de datos. <\/li>\n<li>Una forma sencilla de conceptualizar el proceso que permite a los desarrolladores validar la l\u00f3gica antes de incrustar las operaciones en el c\u00f3digo de la aplicaci\u00f3n. <\/li>\n<li>La funcionalidad completa del lenguaje de manipulaci\u00f3n de datos N1QL (seleccionar\/insertar\/actualizar\/borrar\/fusionar), que permite realizar operaciones en varios documentos a la vez.<\/li>\n<li>Compatibilidad total con el SDK de Couchbase, lo que permite a las aplicaciones incluir tanto el servicio de datos como la API de consulta N1QL en la misma transacci\u00f3n.<\/li>\n<\/ul>\n<\/ul>\n<p>Las transacciones N1QL permiten que todo lo anterior tenga lugar. Al mismo tiempo, las transacciones N1QL mantienen la integridad de los datos al garantizar que los cambios incompletos se a\u00edslan y no se consignan en la base de datos hasta que se completa la transacci\u00f3n o en caso de cualquier fallo imprevisto del sistema.<\/p>\n<h2>Transacciones ACID de Couchbase con N1QL<\/h2>\n<p>La funci\u00f3n de transacciones N1QL se cre\u00f3 sobre el actual marco de transacciones ACID de Couchbase y, por lo tanto, ofrec\u00eda las mismas ventajas que las transacciones ACID de Couchbase. <a href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-brings-distributed-multi-document-acid-transactions-to-nosql\/?ref=blog\" rel=\"noopener\" target=\"_blank\">garant\u00edas de conformidad total con ACID<\/a>. <\/p>\n<table>\n<tbody>\n<tr>\n<td>Atomicidad<\/td>\n<td>La sem\u00e1ntica de \"todo o nada\" para la actualizaci\u00f3n de varios documentos en varios fragmentos o nodos se extiende ahora a la atomicidad a nivel de declaraci\u00f3n. Por ejemplo, un <code>ACTUALIZACI\u00d3N<\/code> que califica 100 documentos debe lograr actualizar todos los documentos o retroceder. No se realizar\u00e1n actualizaciones parciales.<\/td>\n<\/tr>\n<tr>\n<td>Coherencia<\/td>\n<td>El marco de transacciones de Couchbase proporciona el nivel m\u00e1s alto de consistencia para el Servicio de Datos, es decir, las r\u00e9plicas son inmediatamente consistentes con el commit de la transacci\u00f3n. <\/p>\n<p>Para N1QL no transaccional, la opci\u00f3n de consistencia de escaneo sigue siendo la misma que antes: admite <code>sin l\u00edmites<\/code>, <code>at_plus<\/code>y <code>solicitud_plus<\/code>. Para transacciones N1QL, la consistencia de escaneo por defecto es <code>solicitud_plus<\/code> para todas las lecturas transaccionales.<\/td>\n<\/tr>\n<tr>\n<td>Aislamiento<\/td>\n<td>N1QL Aislamiento admite <code>LEER COMPROMETIDO<\/code> para todos los lectores, independientemente de si la lectura est\u00e1 en una transacci\u00f3n o no.<\/td>\n<\/tr>\n<tr>\n<td>Durabilidad<\/td>\n<td>Mientras que el marco de transacciones de Couchbase soporta los tres niveles de durabilidad, las transacciones N1QL a trav\u00e9s de no-SDK (WebUI\/cbq\/RestAPI) ser\u00e1n por defecto \"Mayor\u00eda\".<\/p>\n<p>Consulte la documentaci\u00f3n de Couchbase para <a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/data\/durability.html?ref=blog\" rel=\"noopener\" target=\"_blank\">m\u00e1s detalles sobre la durabilidad<\/a>. <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<h2>Escalabilidad horizontal y transacciones N1QL<\/h2>\n<p>Como con cualquier servicio en Couchbase, la escalabilidad horizontal es un requisito clave. <\/p>\n<p>Todo el procesamiento de las transacciones N1QL se inicia en el Servicio de Consulta, y la escalabilidad horizontal se logra a trav\u00e9s de lo siguiente:  <\/p>\n<p><strong>No hay gesti\u00f3n centralizada de las transacciones:<\/strong> Todas las tareas de transacci\u00f3n y los gastos generales se realizan y mantienen dentro del Servicio de Consulta. En efecto, la gesti\u00f3n de las transacciones se distribuye a trav\u00e9s de diferentes servicios de consulta, y por lo tanto no tiene un punto central de fallo.<\/p>\n<p><strong>Volumen y tama\u00f1o de las transacciones:<\/strong> El tama\u00f1o de la transacci\u00f3n, que actualmente s\u00f3lo est\u00e1 limitado por los recursos de que dispone el Servicio de Consulta, se escala en funci\u00f3n de la complejidad de la transacci\u00f3n. As\u00ed, la transacci\u00f3n puede ampliarse r\u00e1pidamente con nodos adicionales del Servicio de Consulta.<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9764\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/Screen-Shot-2020-11-13-at-1.24.27-PM.png\" alt=\"A Couchbase cluster with N1QL transactions\" width=\"899\" height=\"720\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.24.27-PM.png 1868w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.24.27-PM-300x240.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.24.27-PM-1024x820.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.24.27-PM-768x615.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.24.27-PM-1536x1230.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.24.27-PM-20x16.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-1.24.27-PM-1320x1057.png 1320w\" sizes=\"auto, (max-width: 899px) 100vw, 899px\" \/><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<p><strong>El diagrama anterior pone de relieve los siguientes puntos:<\/strong><\/p>\n<ul>\n<ul>\n<li>Las consultas N1QL no transaccionales se sirven mediante <em>cualquier<\/em> de los Servicios de Consulta disponibles. El Servicio de consulta seleccionado por el SDK viene determinado por el <code>ns_servidor<\/code> y, por lo general, se utiliza un sistema de rotaci\u00f3n c\u00edclica.<\/li>\n<li>Para una transacci\u00f3n N1QL ejecutada bajo el contexto de transacci\u00f3n que proporcionan las librer\u00edas Couchbase Transactions, todas las operaciones DML subsiguientes (identificadas con <code>txid<\/code>) se dirigen al mismo nodo de consulta, hasta que la transacci\u00f3n se consigna o se revierte. Esto est\u00e1 disponible en <a href=\"https:\/\/docs.couchbase.com\/java-sdk\/current\/howtos\/distributed-acid-transactions-from-the-sdk.html?ref=blog\" rel=\"noopener\" target=\"_blank\">Java SDK 1.1.3<\/a><\/li>\n<li>Los SDK gestionan autom\u00e1ticamente la afinidad entre nodos SDK y Query.<\/li>\n<li>Las transacciones de Couchbase soportan operaciones DML tanto de valor-clave como del Servicio de Consulta a trav\u00e9s de la librer\u00eda de transacciones Java de Couchbase. Tambi\u00e9n puedes acceder a otros servicios, como Full-Text Search y Analytics, con solicitudes de consistencia de escaneo que honran el commit bajo la transacci\u00f3n.<\/li>\n<\/ul>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<h2>D\u00f3nde puede utilizar las transacciones N1QL<\/h2>\n<p>La funci\u00f3n de transacciones N1QL es compatible en cualquier lugar donde se utilice una consulta N1QL.<\/p>\n<p>El principal requisito es que <code>txid<\/code> devuelto por la funci\u00f3n <code>INICIAR TRANSACCI\u00d3N<\/code> se utiliza con todos los DML N1QL posteriores si forman parte de la transacci\u00f3n. Lo mismo ocurre con el comando final <code>COMPROMETERSE<\/code> o <code>ROLLBACK<\/code>.<\/p>\n<p>Si est\u00e1 utilizando Query Workbench y cbq shell, pasando <code>txid<\/code> se gestiona de forma transparente. No necesitas realizar ninguna acci\u00f3n expl\u00edcita.<\/p>\n<h3>Concha CBQ<\/h3>\n<p>Aqu\u00ed hay un ejemplo de una transacci\u00f3n N1QL usando cbq shell:<\/p>\n<pre class=\"lang:default decode:true\">\r\ncbq&gt; \\SET -query_context \"default:`viaje-muestra`._default\"\r\ncbq&gt; START TRANSACTION;\r\ncbq&gt; SELECT COUNT(*) FROM airport WHERE city='Stanted';\r\ncbq&gt; UPDATE airport SET city='London' WHERE faa='STN';\r\ncbq&gt; SAVEPOINT s1;\r\ncbq&gt; DELETE FROM airport WHERE city='London' AND faa != 'STN';\r\ncbq&gt; ROLLBACK TRANSACTION TO SAVEPOINT s1;\r\ncbq&gt; COMMIT TRANSACTION;\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<h3>API REST DE N1QL<\/h3>\n<p>Una vez que se inicia una transacci\u00f3n, el shell cbq establece una sesi\u00f3n con un servicio de consulta espec\u00edfico y garantiza que todos los DML N1QL posteriores se env\u00eden con la etiqueta <code>txid<\/code> (devuelto con <code>TRANSACCI\u00d3N<\/code>) al mismo Servicio de Consulta.<\/p>\n<p>Con la API REST, debe proporcionar el valor de la variable <code>txid<\/code> con los DML posteriores. Por ejemplo:<\/p>\n<pre class=\"lang:default decode:true\">\r\n&gt;curl -u Administrador:contrase\u00f1a https:\/\/localhost:8093\/query\/service -H \"Content-Type: application\/json\" -d '{\"statement\": \"START TRANSACTION\", \"pretty\":true, \"txtimeout\": \"2m\", \"scan_consistency\": \"request_plus\", \"durability_level\": \"majority\", \"durability_timeout\": \"2s\"}'\r\n{\r\n    \"requestID\": \"34d585a7-3c4a-4f0e-8cd3-d3ffa7df0bb3\",\r\n    \"signature\": \"json\",\r\n    \"results\": [\r\n    {\r\n        \"txid\": \"d81d9b4a-b758-4f98-b007-87ba262d3a51\"\r\n    }\r\n    ],\r\n    \"status\": \"success\",\r\n    \"metrics\": {\r\n        \"elapsedTime\": \"4.196083ms\",\r\n        \"executionTime\": \"4.12112ms\",\r\n        \"resultCount\": 1,\r\n        \"resultSize\": 62,\r\n        \"serviceLoad\": 0\r\n    }\r\n}\r\n\r\n&gt;curl -u Administrador:contrase\u00f1a https:\/\/localhost:8093\/query\/service -H 'Content-Type: application\/json' -d '\r\n{\"statement\":\"SQL statement\", \"pretty\":true,\"txid\":\"d81d9b4a-b758-4f98-b007-87ba262d3a51\"}'\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<h2>Ajuste impl\u00edcito de la transacci\u00f3n<\/h2>\n<p>Como parte de las transacciones N1QL, tambi\u00e9n est\u00e1 la configuraci\u00f3n impl\u00edcita de la transacci\u00f3n: <code>tximplicit<\/code>. <\/p>\n<p>En pocas palabras, cuando esto se establece en true, todos los DMLs N1QL subsiguientes se ejecutan como si estuvieran envueltos entre un <code>INICIAR TRANSACCI\u00d3N<\/code> y un <code>COMPROMETER TRANSACCI\u00d3N<\/code>. Esta configuraci\u00f3n significa que puede utilizar todas las mejoras de N1QL que forman parte de la funci\u00f3n de transacciones N1QL.<\/p>\n<h3>Durabilidad<\/h3>\n<p>N1QL no transaccional no soporta actualmente ning\u00fan ajuste para la durabilidad. Todas las mutaciones a trav\u00e9s de N1QL utilizan <code>durabilidad=ninguna<\/code>. Con <code>tximplicit<\/code> establecido, el DML N1QL obtiene la durabilidad<\/p>\n<p><strong>Implicaciones<\/strong>: Este <code>tximplicit<\/code> le permite establecer indirectamente la durabilidad, pero debe esperar una latencia adicional.<\/p>\n<h3>Consistencia de la exploraci\u00f3n<\/h3>\n<p>La consistencia de escaneo N1QL no transaccional se establece en el SDK a cualquier nivel requerido por la aplicaci\u00f3n. (<a href=\"https:\/\/docs.couchbase.com\/server\/5.0\/indexes\/performance-consistency.html?ref=blog\" rel=\"noopener\" target=\"_blank\">Para m\u00e1s informaci\u00f3n, consulte la documentaci\u00f3n sobre rendimiento y coherencia.<\/a>.)<\/p>\n<p>Sin embargo, con <code>tximplicit<\/code> establecido, el DML se ejecuta con consistencia de barrido como <code>solicitud_plus<\/code>.<\/p>\n<p><strong>Implicaciones<\/strong>: Con esta configuraci\u00f3n, la latencia de la consulta puede aumentar. Esto se debe a que el DML debe asegurarse de que los \u00edndices dependientes se actualizan con la misma fecha y hora que la consulta.<\/p>\n<h3>Uso de los recursos<\/h3>\n<p>El servicio de consulta necesita recursos de memoria para procesar la consulta, especialmente para las operaciones de agregaci\u00f3n y ordenaci\u00f3n. <\/p>\n<p>Para los DML no transaccionales, todas las mutaciones tienen efecto inmediato. Para los DML transaccionales, todas las mutaciones dentro de una transacci\u00f3n se mantienen localmente en el servicio de consulta hasta el momento de la confirmaci\u00f3n. Por esta raz\u00f3n, el uso de recursos de memoria es mucho mayor para el tramo transaccional.<\/p>\n<p><strong>Implicaciones<\/strong>: Las mutaciones de las transacciones N1QL aumentan el uso de memoria.<\/p>\n<h2>Directrices sobre cu\u00e1ndo (y cu\u00e1ndo no) utilizar transacciones N1QL<\/h2>\n<p>Con la introducci\u00f3n de las transacciones N1QL, es importante tener en cuenta algunas directrices sobre cu\u00e1ndo (y cu\u00e1ndo no) utilizar esta nueva capacidad en su aplicaci\u00f3n.<\/p>\n<p>La regla general es <strong>utilice las transacciones N1QL s\u00f3lo cuando sea necesario<\/strong>. El servicio de consultas de Couchbase est\u00e1 dise\u00f1ado para proporcionar un alto rendimiento y una baja latencia, que se ven afectados por las transacciones. Esto se debe a los requisitos y costes subsiguientes en t\u00e9rminos de durabilidad, consistencia de escaneo y uso de recursos.<\/p>\n<p>Tambi\u00e9n debe <strong>reducir el tama\u00f1o de las transacciones<\/strong> en cuanto al n\u00famero de documentos y operaciones afectados por las mutaciones. Y, por \u00faltimo, no recomendamos utilizar transacciones N1QL para casos de uso de mutaciones de gran volumen.<\/p>\n<h2>M\u00e1s recursos sobre las transacciones N1QL<\/h2>\n<ul>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-server-7-0-release\/?ref=blog\" rel=\"noopener\" target=\"_blank\">Publicaci\u00f3n en el blog: Anuncio de Couchbase Server 7.0<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/7.0\/introduction\/whats-new.html?ref=blog\" rel=\"noopener\" target=\"_blank\">Documentaci\u00f3n: Novedades de Couchbase 7.0<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/7.0\/release-notes\/relnotes.html?ref=blog\" rel=\"noopener\" target=\"_blank\">Notas de la versi\u00f3n de Couchbase 7.0<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/scopes-and-collections-for-modern-multi-tenant-applications-couchbase-7-0\/?ref=blog\" rel=\"noopener\" target=\"_blank\">Blog Post: \u00c1mbitos y colecciones para aplicaciones multiusuario modernas<\/a><\/li>\n<\/ul>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 30px;\" aria-hidden=\"true\"> <\/div>\n<div style=\"text-align:center;\"><strong>\u00bfListo para probar las transacciones N1QL?<br><br \/>\n<a href=\"https:\/\/www.couchbase.com\/blog\/es\/downloads\/?ref=blog\" rel=\"noopener\" target=\"_blank\">Descargue Couchbase Server 7.0 hoy mismo<\/a><\/strong><\/div>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<p>&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Multi-document, distributed ACID transactions are now available in Couchbase as part of the N1QL query language. Couchbase introduced ACID transactions in its v6.5 release with the Couchbase SDKs, and this has now been extended to the Couchbase N1QL Query Service [&hellip;]<\/p>","protected":false},"author":26326,"featured_media":9836,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1816,1818,9336,1812,2396],"tags":[9499,9346,9348,8191,1514,2313,1950],"ppma_author":[8919],"class_list":["post-9763","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-couchbase-server","category-java","category-scopes-and-collections","category-n1ql-query","category-transactions","tag-acid-transactions","tag-data-integrity","tag-data-manipulation-language","tag-distributed-transactions","tag-dml","tag-key-value","tag-rest-api"],"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>The N1QL Query Language Now Supports Distributed ACID Transactions<\/title>\n<meta name=\"description\" content=\"Learn how to execute distributed ACID transactions in Couchbase with familiar SQL syntax using the latest capabilities of the N1QL query language.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-transactions-with-n1ql\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The N1QL Query Language Now Supports Distributed ACID Transactions\" \/>\n<meta property=\"og:description\" content=\"Learn how to execute distributed ACID transactions in Couchbase with familiar SQL syntax using the latest capabilities of the N1QL query language.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-transactions-with-n1ql\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-02T07:00:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T00:21:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Transactions-in-N1QL-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1327\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Binh Le\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Transactions-in-N1QL-scaled.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Binh Le\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 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-transactions-with-n1ql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/\"},\"author\":{\"name\":\"Binh Le\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f89064928e262c71eb43bee996c48c63\"},\"headline\":\"The N1QL Query Language Now Supports Distributed ACID Transactions\",\"datePublished\":\"2021-08-02T07:00:41+00:00\",\"dateModified\":\"2025-06-14T00:21:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/\"},\"wordCount\":1361,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Transactions-in-N1QL-scaled.jpg\",\"keywords\":[\"ACID transactions\",\"data integrity\",\"Data Manipulation Language\",\"distributed transactions\",\"dml\",\"key value\",\"REST API\"],\"articleSection\":[\"Application Design\",\"Couchbase Server\",\"Java\",\"Scopes and Collections\",\"SQL++ \/ N1QL Query\",\"Transactions\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/\",\"name\":\"The N1QL Query Language Now Supports Distributed ACID Transactions\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Transactions-in-N1QL-scaled.jpg\",\"datePublished\":\"2021-08-02T07:00:41+00:00\",\"dateModified\":\"2025-06-14T00:21:11+00:00\",\"description\":\"Learn how to execute distributed ACID transactions in Couchbase with familiar SQL syntax using the latest capabilities of the N1QL query language.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Transactions-in-N1QL-scaled.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Transactions-in-N1QL-scaled.jpg\",\"width\":2560,\"height\":1327,\"caption\":\"N1QL supports Transactions\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The N1QL Query Language Now Supports Distributed ACID Transactions\"}]},{\"@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\/f89064928e262c71eb43bee996c48c63\",\"name\":\"Binh Le\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5b68c37e30928a9d7b2c8470b1a303b7\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g\",\"caption\":\"Binh Le\"},\"description\":\"Binh Le is a Principal Product Manager for Couchbase Query service. Prior to Couchbase, he worked at Oracle and led the product management team for Sales Cloud Analytics and CRM OnDemand. Binh holds a Bachelor's Degree in Computer Science from the University of Brighton, UK.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/binh-le-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"El lenguaje de consulta N1QL ya admite transacciones ACID distribuidas","description":"Learn how to execute distributed ACID transactions in Couchbase with familiar SQL syntax using the latest capabilities of the N1QL query language.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-transactions-with-n1ql\/","og_locale":"es_MX","og_type":"article","og_title":"The N1QL Query Language Now Supports Distributed ACID Transactions","og_description":"Learn how to execute distributed ACID transactions in Couchbase with familiar SQL syntax using the latest capabilities of the N1QL query language.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-transactions-with-n1ql\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-08-02T07:00:41+00:00","article_modified_time":"2025-06-14T00:21:11+00:00","og_image":[{"width":2560,"height":1327,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Transactions-in-N1QL-scaled.jpg","type":"image\/jpeg"}],"author":"Binh Le","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Transactions-in-N1QL-scaled.jpg","twitter_misc":{"Written by":"Binh Le","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/"},"author":{"name":"Binh Le","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f89064928e262c71eb43bee996c48c63"},"headline":"The N1QL Query Language Now Supports Distributed ACID Transactions","datePublished":"2021-08-02T07:00:41+00:00","dateModified":"2025-06-14T00:21:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/"},"wordCount":1361,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Transactions-in-N1QL-scaled.jpg","keywords":["ACID transactions","data integrity","Data Manipulation Language","distributed transactions","dml","key value","REST API"],"articleSection":["Application Design","Couchbase Server","Java","Scopes and Collections","SQL++ \/ N1QL Query","Transactions"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/","name":"El lenguaje de consulta N1QL ya admite transacciones ACID distribuidas","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Transactions-in-N1QL-scaled.jpg","datePublished":"2021-08-02T07:00:41+00:00","dateModified":"2025-06-14T00:21:11+00:00","description":"Learn how to execute distributed ACID transactions in Couchbase with familiar SQL syntax using the latest capabilities of the N1QL query language.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Transactions-in-N1QL-scaled.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Transactions-in-N1QL-scaled.jpg","width":2560,"height":1327,"caption":"N1QL supports Transactions"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-transactions-with-n1ql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"The N1QL Query Language Now Supports Distributed ACID Transactions"}]},{"@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\/f89064928e262c71eb43bee996c48c63","name":"Binh Le","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5b68c37e30928a9d7b2c8470b1a303b7","url":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","caption":"Binh Le"},"description":"Binh Le is a Principal Product Manager for Couchbase Query service. Prior to Couchbase, he worked at Oracle and led the product management team for Sales Cloud Analytics and CRM OnDemand. Binh holds a Bachelor's Degree in Computer Science from the University of Brighton, UK.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/binh-le-2\/"}]}},"authors":[{"term_id":8919,"user_id":26326,"is_guest":0,"slug":"binh-le-2","display_name":"Binh Le","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","first_name":"Binh","last_name":"Le","user_url":"","author_category":"","description":"Binh Le es director de producto principal del servicio de consultas de Couchbase. Antes de Couchbase, trabaj\u00f3 en Oracle y dirigi\u00f3 el equipo de gesti\u00f3n de productos para Sales Clould Analytics y CRM OnDemand. Binh es licenciado en Inform\u00e1tica por la Universidad de Brighton, Reino Unido."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/9763","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\/26326"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=9763"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/9763\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/9836"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=9763"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=9763"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=9763"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=9763"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}