{"id":2042,"date":"2015-12-11T20:41:53","date_gmt":"2015-12-11T20:41:53","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2042"},"modified":"2025-10-09T07:24:42","modified_gmt":"2025-10-09T14:24:42","slug":"simba-couchbase-driver-with-dml-4-1","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/simba-couchbase-driver-with-dml-4-1\/","title":{"rendered":"Simba Couchbase Driver y Couchbase Server 4.1"},"content":{"rendered":"<p><strong>Nota: este art\u00edculo ha sido escrito por Mike Howard, de <a href=\"https:\/\/www.simba.com\">Simba Tecnolog\u00edas<\/a>.<\/strong><\/p>\n<h2>N1QL DML<\/h2>\n<p>El soporte de manipulaci\u00f3n de datos N1QL facilita la inserci\u00f3n, actualizaci\u00f3n y eliminaci\u00f3n de datos JSON, sin la sobrecarga de tener que leer primero el documento. Estas sentencias N1QL pueden realizar una operaci\u00f3n en todo un bucket con una \u00fanica petici\u00f3n de red. Las consultas N1QL no est\u00e1n limitadas por el esquema, y por lo tanto pueden ser usadas para manipular datos fuera de las restricciones del esquema. Adem\u00e1s, las consultas N1QL no est\u00e1n restringidas a una sola tabla, y son perfectas para manipular datos a trav\u00e9s de m\u00faltiples tablas simult\u00e1neamente. El controlador Simba Couchbase le permite ejecutar estas consultas directamente a trav\u00e9s del controlador.<\/p>\n<p><strong>INSERTAR<\/strong><\/p>\n<p>N1QL INSERT permite la inserci\u00f3n de un nuevo Documento JSON. Si bien este m\u00e9todo podr\u00eda utilizarse para la simple tarea de agregar una fila a una tabla existente, es particularmente \u00fatil cuando se agregan datos que no coinciden con un esquema existente. La posibilidad de a\u00f1adir datos que no corresponden al esquema permite manipular el esquema: A\u00f1adir un documento de tipo existente con nuevos atributos, o a\u00f1adir un documento de tipo nuevo para crear tablas nuevas. Y obtendr\u00e1 nuevas columnas en el esquema. Sin embargo, tendr\u00e1 que volver a muestrear la base de datos (mediante SQL) para ver cualquier dato nuevo no perteneciente al esquema.<\/p>\n<p>Usando el cubo gamesim-sample como ejemplo, digamos que queremos a\u00f1adir una caracter\u00edstica \"Jefes\" a nuestro juego. Usa un N1QL INSERT para crear una tabla Bosses a\u00f1adiendo un nuevo documento de tipo \"boss\":<\/p>\n<p><em>INSERT INTO `gamesim-sample` (KEY, VALUE) VALUES (\u201cBlue Dragon\u201d, {\u201ctype\u201d:\u201dboss\u201d, \u201chitpoints\u201d: 70000})<\/em><\/p>\n<p>Volver a muestrear con el controlador para crear una nueva tabla de jefe con esta informaci\u00f3n. Si decidimos ampliar nuestra tabla de jefes para incluir puntos de experiencia similares a los de la tabla de monstruos, podemos utilizar N1QL INSERT para insertar nuevos documentos en una tabla existente que no coincidan con el esquema actual de la tabla:<\/p>\n<p><em>INSERT INTO `gamesim-sample` (KEY, VALUE) VALUES (\u201cGolden Griffin\u201d, {\u201ctype\u201d:\u201dboss\u201d, \u201chitpoints\u201d: 80000, \u201cexperienceWhenKilled\u201d: 37000})<\/em><\/p>\n<p>Como en el primer caso, este cambio de esquema no surtir\u00e1 efecto hasta que se vuelva a muestrear la tabla. Sin embargo, los valores que coincidan con el esquema existente seguir\u00e1n estando disponibles:<\/p>\n<p><strong>Tabla Boss despu\u00e9s de INSERT antes de remuestrear<\/strong><\/p>\n<div class=\"responsive-table\">\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td style=\"width: 312px\">PK<\/td>\n<td style=\"width: 312px\"><em>puntos de golpe<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Drag\u00f3n azul<\/td>\n<td style=\"width: 312px\"><em>70000<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Grifo de Oro<\/td>\n<td style=\"width: 312px\"><em>80000<\/em><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>Tabla de jefes tras la remuestreo<\/strong><\/p>\n<div class=\"responsive-table\">\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td style=\"width: 208px\">PK<\/td>\n<td style=\"width: 208px\"><em>puntos de golpe<\/em><\/td>\n<td style=\"width: 208px\"><em>experienciaWhenKilled<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 208px\">Drag\u00f3n azul<\/td>\n<td style=\"width: 208px\"><em>70000<\/em><\/td>\n<td style=\"width: 208px\">NULL<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 208px\">Grifo de Oro<\/td>\n<td style=\"width: 208px\"><em>80000<\/em><\/td>\n<td style=\"width: 208px\">37000<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>ACTUALIZACI\u00d3N<\/strong><\/p>\n<p>Puedes usar N1QL UPDATE para modificar documentos JSON directamente. Al igual que SQL UPDATE, esta operaci\u00f3n puede ser usada para modificar atributos individuales en una tabla, sin embargo el verdadero poder de UPDATE proviene de su alcance en todo el bucket. Usando N1QL UPDATE, puedes modificar cada documento coincidente en el bucket a trav\u00e9s de una sola consulta - en una sola petici\u00f3n de red, sin tener que leer todos los datos primero.<\/p>\n<p>He aqu\u00ed un ejemplo: Actualizar un videojuego para aumentar los puntos de vida de todos los jugadores y monstruos en un multiplicador fijo. Normalmente, esto requerir\u00eda dos consultas: una para actualizar los jugadores y otra para los monstruos:<\/p>\n<p><strong>Tabla de jugadores antes de la ACTUALIZACI\u00d3N<\/strong><\/p>\n<div class=\"responsive-table\">\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td style=\"width: 312px\">PK<\/td>\n<td style=\"width: 312px\">puntos de golpe<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Aaron0<\/td>\n<td style=\"width: 312px\">20210<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Aaron1<\/td>\n<td style=\"width: 312px\">23832<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Aaron2<\/td>\n<td style=\"width: 312px\">10<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Aliaksey0<\/td>\n<td style=\"width: 312px\">10<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>Tabla de monstruos antes de ACTUALIZAR<\/strong><\/p>\n<div class=\"responsive-table\">\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td style=\"width: 312px\">PK<\/td>\n<td style=\"width: 312px\">puntos de golpe<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan0<\/td>\n<td style=\"width: 312px\">3754<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan1<\/td>\n<td style=\"width: 312px\">3627<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan2<\/td>\n<td style=\"width: 312px\">4999<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan3<\/td>\n<td style=\"width: 312px\">4699<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan4<\/td>\n<td style=\"width: 312px\">3070<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Pero con N1QL, podemos emitir una \u00fanica actualizaci\u00f3n de todo el bucket para completar esta tarea:<\/p>\n<p><em>UPDATE `gamesim-sample` SET hitpoints = hitpoints*2<\/em><\/p>\n<p>Esta consulta duplica el valor de cada atributo hitpoints del bucket en una sola operaci\u00f3n.<\/p>\n<p><strong>Tabla de jugadores tras la ACTUALIZACI\u00d3N<\/strong><\/p>\n<div class=\"responsive-table\">\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td style=\"width: 312px\">PK<\/td>\n<td style=\"width: 312px\">puntos de golpe<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Aaron0<\/td>\n<td style=\"width: 312px\">40420<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Aaron1<\/td>\n<td style=\"width: 312px\">47664<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Aaron2<\/td>\n<td style=\"width: 312px\">20<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Aliaksey0<\/td>\n<td style=\"width: 312px\">20<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>Tabla de monstruos tras la actualizaci\u00f3n<\/strong><\/p>\n<div class=\"responsive-table\">\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td style=\"width: 312px\">PK<\/td>\n<td style=\"width: 312px\">puntos de golpe<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan0<\/td>\n<td style=\"width: 312px\">7508<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan1<\/td>\n<td style=\"width: 312px\">7254<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan2<\/td>\n<td style=\"width: 312px\">9998<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan3<\/td>\n<td style=\"width: 312px\">9398<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan4<\/td>\n<td style=\"width: 312px\">6140<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>BORRAR<\/strong><\/p>\n<p>N1QL delete elimina todos los documentos del bucket que coincidan con una condici\u00f3n especificada. Esto puede ser \u00fatil para realizar eliminaciones por lotes. Un ejemplo de operaci\u00f3n podr\u00eda ser la eliminaci\u00f3n de una cervecer\u00eda en el bucket de muestras de cerveza. Para eliminar una cervecer\u00eda y todas las cervezas <sub>asociado<\/sub> con ella, podr\u00edamos emitir la siguiente consulta:<\/p>\n<p>DELETE FROM `beer-sample` WHERE name = &#8220;21st Amendment Brewery Cafe&#8221; OR brewery_id = &#8220;21st_amendment_brewery_cafe&#8221;<\/p>\n<p>Esto elimina todos los datos relacionados con \"21st Amendment Brewery Cafe\" del bucket en una sola operaci\u00f3n. Utilizando SQL esto requerir\u00eda tres consultas, una para eliminar la cervecer\u00eda de la tabla brewery, una segunda para eliminar la direcci\u00f3n de la tabla brewery_address y una tercera para eliminar las cervezas asociadas a la cervecer\u00eda de la tabla beer.<\/p>\n<h2>SQL DML<\/h2>\n<p>El Simba Couchbase Driver tambi\u00e9n le permite manipular tablas utilizando sintaxis SQL. Puede conectar su controlador Couchbase a trav\u00e9s de ODBC o JDBC a herramientas de escritura basadas en SQL, como aplicaciones ETL. Tambi\u00e9n le permite realizar consultas m\u00e1s f\u00e1cilmente a nivel de tabla.<\/p>\n<p><strong>INSERTAR<\/strong><\/p>\n<p>SQL INSERT a\u00f1ade un documento a un bucket que coincide con el esquema de la tabla a la que se est\u00e1 a\u00f1adiendo. A diferencia de N1QL, SQL INSERT aplicar\u00e1 activamente el esquema definido en el mapa de esquema. Para realizar operaciones de inserci\u00f3n que deban coincidir con el esquema actual, es preferible utilizar SQL INSERT, ya que evita la modificaci\u00f3n accidental del esquema.<\/p>\n<p>Para continuar con el ejemplo de la Tabla de Jefes, vamos a a\u00f1adir un nuevo jefe a la tabla. Para empezar, emitimos el comando SQL:<\/p>\n<p>INSERT INTO 'gamesim-sample'.boss (PK, hitpoints, <em>experienceWhenKilled) VALUES (\"Lobo Gris\", 22000, 12000)<\/em><\/p>\n<p>Esto a\u00f1ade la fila Wolf a la tabla Boss. Observe que no es necesario especificar el atributo type, ya que est\u00e1 impl\u00edcito en el nombre de la tabla:<\/p>\n<p>Tabla Boss despu\u00e9s de SQL INSERT<\/p>\n<div class=\"responsive-table\">\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td style=\"width: 208px\">PK<\/td>\n<td style=\"width: 208px\"><em>Puntos de vida<\/em><\/td>\n<td style=\"width: 208px\"><em>experienciaWhenKilled<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 208px\">Drag\u00f3n azul<\/td>\n<td style=\"width: 208px\"><em>70000<\/em><\/td>\n<td style=\"width: 208px\">NULL<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 208px\">Grifo de Oro<\/td>\n<td style=\"width: 208px\"><em>80000<\/em><\/td>\n<td style=\"width: 208px\">37000<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 208px\">Lobo gris<\/td>\n<td style=\"width: 208px\"><em>22000<\/em><\/td>\n<td style=\"width: 208px\">12000<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>ACTUALIZACI\u00d3N<\/strong><\/p>\n<p>SQL UPDATE permite actualizar una \u00fanica tabla. Esto es \u00fatil si desea restringir el alcance de la actualizaci\u00f3n a esa \u00fanica tabla. Para las actualizaciones de tablas espec\u00edficas, se prefiere SQL UPDATE a N1QL, ya que su \u00e1mbito restringido evita la modificaci\u00f3n involuntaria de otros documentos.<\/p>\n<p>Por ejemplo, imaginemos que queremos aumentar los puntos de golpe de los monstruos. Podemos hacerlo emitiendo el comando SQL UPDATE:<\/p>\n<p>UPDATE 'gamesim-sample'.monster SET hitpoints=puntos-de-hit*1.5<\/p>\n<p>Esto actualiza s\u00f3lo los puntos de golpe del monstruo, dejando la tabla del jugador intacta.<\/p>\n<p><strong>Tabla de monstruos tras la actualizaci\u00f3n<\/strong><\/p>\n<div class=\"responsive-table\">\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td style=\"width: 312px\">PK<\/td>\n<td style=\"width: 312px\">puntos de golpe<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan0<\/td>\n<td style=\"width: 312px\">5631<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan1<\/td>\n<td style=\"width: 312px\">5440<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan2<\/td>\n<td style=\"width: 312px\">7498<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan3<\/td>\n<td style=\"width: 312px\">7048<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 312px\">Bauchan4<\/td>\n<td style=\"width: 312px\">4605<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>BORRAR<\/strong><\/p>\n<p>SQL DELETE elimina una sola fila de una tabla. Similar a SQL UPDATE, esto es \u00fatil para limitar la operaci\u00f3n a una sola tabla. Similar a insert <em>y<\/em> update, SQL DELETE es la operaci\u00f3n preferida para eliminar documentos de una misma tabla, ya que evita la eliminaci\u00f3n accidental de otro documento.<\/p>\n<p>Por ejemplo, podemos eliminar todos los jugadores con menos de 100 puntos de vida. Ejecutamos el comando SQL DELETE:<\/p>\n<p>DELETE FROM 'gamesim-sample'.player WHERE hitpoints &lt; 100<\/p>\n<p>Esto elimina a todos los jugadores que tengan menos de 100 puntos de vida, dejando intactos a los monstruos.<\/p>\n<h2>Resumen: manipulaci\u00f3n flexible de datos N1QL\/SQL a nivel de cubo o de tabla<\/h2>\n<p>El controlador Simba Couchbase ofrece a los usuarios la flexibilidad de manipular sus datos a nivel de bucket o de tabla utilizando N1QL o SQL. El uso de N1QL le permite realizar operaciones en todo el bucket, como la manipulaci\u00f3n de esquemas, actualizaciones masivas o eliminaciones masivas en una sola operaci\u00f3n. El uso de SQL le da acceso a las herramientas ETL tradicionales, as\u00ed como a la manipulaci\u00f3n de datos a nivel de tabla. Puede descargar y probar los controladores simba en <a href=\"https:\/\/www.simba.com\/drivers\/couchbase-odbc-jdbc\/.\">https:\/\/www.simba.com\/drivers\/couchbase-odbc-jdbc\/<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Note: this is a guest post by Mike Howard of Simba Technologies. N1QL DML N1QL data manipulation support makes it easy to insert, update, and delete JSON data, without the overhead of having to read the document first. These N1QL [&hellip;]<\/p>","protected":false},"author":4,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8972],"class_list":["post-2042","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v26.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Simba Couchbase Driver and Couchbase Server 4.1 - 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\/simba-couchbase-driver-with-dml-4.1\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Simba Couchbase Driver and Couchbase Server 4.1\" \/>\n<meta property=\"og:description\" content=\"Note: this is a guest post by Mike Howard of Simba Technologies. N1QL DML N1QL data manipulation support makes it easy to insert, update, and delete JSON data, without the overhead of having to read the document first. These N1QL [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/simba-couchbase-driver-with-dml-4.1\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-12-11T20:41:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-09T14:24:42+00:00\" \/>\n<meta name=\"author\" content=\"Don Pinto, Principal Product Manager, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Don Pinto, Principal Product Manager, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4-1\/\"},\"author\":{\"name\":\"Don Pinto, Principal Product Manager, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/eb130a1e0278989e089a7fbbf8bc754c\"},\"headline\":\"Simba Couchbase Driver and Couchbase Server 4.1\",\"datePublished\":\"2015-12-11T20:41:53+00:00\",\"dateModified\":\"2025-10-09T14:24:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4-1\/\"},\"wordCount\":1160,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4-1\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/\",\"name\":\"Simba Couchbase Driver and Couchbase Server 4.1 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-12-11T20:41:53+00:00\",\"dateModified\":\"2025-10-09T14:24:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/#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\/simba-couchbase-driver-with-dml-4.1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Simba Couchbase Driver and Couchbase Server 4.1\"}]},{\"@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\/eb130a1e0278989e089a7fbbf8bc754c\",\"name\":\"Don Pinto, Principal Product Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/39c6d6178c73f0dc09af63f930a4f37d\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g\",\"caption\":\"Don Pinto, Principal Product Manager, Couchbase\"},\"description\":\"Don Pinto is a Principal Product Manager at Couchbase and is currently focused on advancing the capabilities of Couchbase Server. He is extremely passionate about data technology, and in the past has authored several articles on Couchbase Server including technical blogs and white papers. Prior to joining Couchbase, Don spent several years at IBM where he maintained the role of software developer in the DB2 information management group and most recently as a program manager on the SQL Server team at Microsoft. Don holds a master's degree in computer science and a bachelor's in computer engineering from the University of Toronto, Canada.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/don-pinto\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Simba Couchbase Driver and Couchbase Server 4.1 - 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\/simba-couchbase-driver-with-dml-4.1\/","og_locale":"es_MX","og_type":"article","og_title":"Simba Couchbase Driver and Couchbase Server 4.1","og_description":"Note: this is a guest post by Mike Howard of Simba Technologies. N1QL DML N1QL data manipulation support makes it easy to insert, update, and delete JSON data, without the overhead of having to read the document first. These N1QL [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/simba-couchbase-driver-with-dml-4.1\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-12-11T20:41:53+00:00","article_modified_time":"2025-10-09T14:24:42+00:00","author":"Don Pinto, Principal Product Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Don Pinto, Principal Product Manager, Couchbase","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4-1\/"},"author":{"name":"Don Pinto, Principal Product Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/eb130a1e0278989e089a7fbbf8bc754c"},"headline":"Simba Couchbase Driver and Couchbase Server 4.1","datePublished":"2015-12-11T20:41:53+00:00","dateModified":"2025-10-09T14:24:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4-1\/"},"wordCount":1160,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4-1\/","url":"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/","name":"Simba Couchbase Driver and Couchbase Server 4.1 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-12-11T20:41:53+00:00","dateModified":"2025-10-09T14:24:42+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/simba-couchbase-driver-with-dml-4.1\/#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\/simba-couchbase-driver-with-dml-4.1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Simba Couchbase Driver and Couchbase Server 4.1"}]},{"@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\/eb130a1e0278989e089a7fbbf8bc754c","name":"Don Pinto, Director Principal de Producto, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/39c6d6178c73f0dc09af63f930a4f37d","url":"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g","caption":"Don Pinto, Principal Product Manager, Couchbase"},"description":"Don Pinto es Gerente Principal de Producto en Couchbase y actualmente est\u00e1 enfocado en avanzar las capacidades de Couchbase Server. Es un apasionado de la tecnolog\u00eda de datos, y en el pasado ha escrito varios art\u00edculos sobre Couchbase Server, incluyendo blogs t\u00e9cnicos y libros blancos. Antes de unirse a Couchbase, Don pas\u00f3 varios a\u00f1os en IBM, donde desempe\u00f1\u00f3 el papel de desarrollador de software en el grupo de gesti\u00f3n de la informaci\u00f3n DB2 y, m\u00e1s recientemente, como director de programa en el equipo de SQL Server en Microsoft. Don tiene un m\u00e1ster en inform\u00e1tica y una licenciatura en ingenier\u00eda inform\u00e1tica por la Universidad de Toronto, Canad\u00e1.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/don-pinto\/"}]}},"authors":[{"term_id":8972,"user_id":4,"is_guest":0,"slug":"don-pinto","display_name":"Don Pinto, Principal Product Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g","author_category":"","last_name":"Pinto, Principal Product Manager, Couchbase","first_name":"Don","job_title":"","user_url":"","description":"Don Pinto es Gerente Principal de Producto en Couchbase y actualmente est\u00e1 enfocado en avanzar las capacidades de Couchbase Server. Es un apasionado de la tecnolog\u00eda de datos, y en el pasado ha escrito varios art\u00edculos sobre Couchbase Server, incluyendo blogs t\u00e9cnicos y libros blancos. Antes de unirse a Couchbase, Don pas\u00f3 varios a\u00f1os en IBM, donde desempe\u00f1\u00f3 el papel de desarrollador de software en el grupo de gesti\u00f3n de la informaci\u00f3n DB2 y, m\u00e1s recientemente, como director de programa en el equipo de SQL Server en Microsoft. Don tiene un m\u00e1ster en inform\u00e1tica y una licenciatura en ingenier\u00eda inform\u00e1tica por la Universidad de Toronto, Canad\u00e1."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2042","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\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=2042"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2042\/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=2042"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=2042"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=2042"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=2042"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}