{"id":1534,"date":"2013-12-06T09:00:00","date_gmt":"2013-12-06T08:00:00","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1534"},"modified":"2023-06-28T01:35:52","modified_gmt":"2023-06-28T08:35:52","slug":"couchbase-102-q-and-a","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-102-q-and-a\/","title":{"rendered":"Couchbase 102: PREGUNTAS Y RESPUESTAS"},"content":{"rendered":"<p><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">En nuestra serie de formaci\u00f3n continua, cada vez surgen una serie de preguntas, que enumero a continuaci\u00f3n con sus respectivas respuestas.<\/span><\/p>\n<p><span style=\"color: #007da4;font-size: 23px;font-weight: 600;line-height: 1.4\">Couchbase 102 - Operaciones SDK<\/span><\/p>\n<p class=\"p1\"><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">Conceptos de operaciones por idioma:\u00a0<\/span><a href=\"https:\/\/github.com\/couchbaselabs\/DeveloperDay\"><span style=\"font-family: inherit\"><span style=\"font-size: 1em;line-height: 1.4375em\">https:\/\/github.com\/c<\/span><\/span>ouchbaselabs\/DeveloperDay<\/a><\/p>\n<p class=\"p1\"><strong><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">P: \u00bfSon estas operaciones las mismas para las aplicaciones m\u00f3viles?<\/span><\/strong><\/p>\n<p class=\"p1\">R: No, no son lo mismo. Couchbase Lite tiene su propia API. Puedes ver la documentaci\u00f3n de la API de Couchbase Lite Beta 2 para iOS aqu\u00ed:\u00a0<a href=\"https:\/\/couchbase.github.io\/couchbase-lite-ios\/docs\/html\/annotated.html\">https:\/\/couchbase.github.io\/couchbase-lite-ios\/docs\/html\/annotated.html<\/a><\/p>\n<p class=\"p1\"><strong>P: \u00bfPuede Couchbase garantizar que todas las operaciones son persistentes? es decir, una vez que un put a Couchbase retorna, el valor se considera persistente incluso si Couchbase\u00a0<span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">el servidor sufre un fallo grave mientras los datos siguen en la cola de disco y en la cola de replicaci\u00f3n.  \u00bfQu\u00e9 mecanismo se utiliza para garantizarlo?<\/span><\/strong><\/p>\n<p class=\"p1\">R: No, no podemos garantizarlo. Es posible que el cliente vea una operaci\u00f3n exitosa, pero que el servidor se bloquee antes de ser replicado o persistido. En los hard crashes ning\u00fan sistema est\u00e1 a salvo. Lo que intentamos es minimizar la p\u00e9rdida de datos y mantener un alto rendimiento. Con la replicaci\u00f3n y la conmutaci\u00f3n por error podemos lograrlo y ser capaces de promover r\u00e1pidamente las r\u00e9plicas y mantener el cl\u00faster y la aplicaci\u00f3n en funcionamiento durante los fallos de los nodos. Ofrecemos observaciones de durabilidad para las operaciones de almacenamiento en funci\u00f3n de la operaci\u00f3n de cada documento; s\u00f3lo obtendr\u00e1 una devoluci\u00f3n de llamada si el documento se ha replicado, persistido o ambas cosas. Estas observaciones aumentan la latencia de las operaciones, por lo que es mejor utilizarlas cuando sea necesario en lugar de para todas las operaciones.<\/p>\n<p class=\"p1\"><strong>P: Estoy seguro de que utilizar Storage con Observe introducir\u00e1 una gran sobrecarga... \u00bfPuede Jasdeep proporcionar alguna cifra (proporci\u00f3n con y sin)?<\/strong><\/p>\n<p class=\"p1\">R: No hay forma de dar una cifra exacta porque var\u00eda en funci\u00f3n del hardware y de la escala horizontal. Lo que puedo decir es que es lo suficientemente significativo como para pens\u00e1rselo dos veces antes de hacerlo para cada operaci\u00f3n de almacenamiento, especialmente si tienes un gran volumen de escritura.<\/p>\n<p class=\"p1\"><strong>P: \u00bfQu\u00e9 ocurre cuando hay un nuevo par K-V (misma clave, pero distintos valores) que se inserta simult\u00e1neamente exactamente al mismo tiempo en dos centros de datos? En este caso, dado que se est\u00e1 escribiendo en la cach\u00e9 (es decir, la cola XDCR est\u00e1 a\u00fan retrasada), no se puede ser realmente \"coherente\", \u00bfverdad? \u00bfC\u00f3mo se gestiona este conflicto?<\/strong><\/p>\n<p class=\"p1\">R: S\u00f3lo se aplica la coherencia <strong><em>en<\/em><\/strong> un cl\u00faster, XDCR por definici\u00f3n es eventualmente consistente porque los datos tienen que moverse <em><strong>entre<\/strong><\/em> clusters a trav\u00e9s del cable. Para responder a tu pregunta, cubro las reglas de resoluci\u00f3n de conflictos XDCR en el webinar de formaci\u00f3n Couchbase 105, nuestra l\u00f3gica de resoluci\u00f3n de conflictos es bastante simple en este punto. La l\u00f3gica de resoluci\u00f3n de conflictos es notoriamente dif\u00edcil de escribir universalmente.  En tu escenario, dado que ambos son documentos nuevos, tienen s\u00f3lo una creaci\u00f3n cada uno, y fueron escritos a dos clusters al mismo tiempo con XDCR bidireccional, un \"ganador\" ser\u00e1 elegido al \"azar\". Nuestras reglas de resoluci\u00f3n de conflictos est\u00e1n relacionadas con el n\u00famero de revisiones que tiene un documento junto con otros criterios.<\/p>\n<p class=\"p1\"><strong>P: \u00bfSe pueden bloquear documentos entre clusters con XDCR?<\/strong><\/p>\n<p class=\"p1\">R: No, el bloqueo de documentos es local a un cluster de Couchbase solamente, no a trav\u00e9s de clusters.<\/p>\n<p class=\"p1\"><strong>P: Si quiero modificar\/actualizar unos cuantos elementos de un documento, \u00bfc\u00f3mo puedo escribir un c\u00f3digo java (o en cualquier otro lenguaje) para lograrlo en lugar de buscar y actualizar manualmente un elemento\/campo concreto?<\/strong><\/p>\n<p class=\"p1\">R: Esto es en realidad un uso bastante est\u00e1ndar. Si est\u00e1s usando Java, vas a transcodificar\/descomprimir el JSON a tu objeto, modificar cualquier valor, y transcodificar\/comprimir de vuelta a JSON para una operaci\u00f3n de reemplazo. No tenemos API para actualizaciones parciales en documentos desde el lado del servidor de Couchbase, entre los clientes y el servidor de Couchbase, siempre transmitimos el documento completo de ida y vuelta. Esto significa que no podemos enviar modificaciones parciales JSON al servidor Couchbase y hacer que el servidor obtenga el documento y actualice los cambios parciales.<\/p>\n<p class=\"p1\"><strong>P: \u00bfPueden coexistir 2 versiones diferentes (digamos v2.0.1 y v2.2) de Couchbase en el mismo equipo?\u00a0<\/strong><\/p>\n<p class=\"p1\">R: Puedes instalar ambos, pero ejecutarlos en un cluster es posible pero complicado, y definitivamente no es un uso est\u00e1ndar. Tendr\u00edas que cambiar todos los mapeos de puertos y las expectativas de d\u00f3nde est\u00e1 el segundo servidor para poder agruparlos. En general, yo dir\u00eda que no vale la pena el esfuerzo. Si est\u00e1s familiarizado con Docker, es posible crear un cluster en Docker con core.os.<\/p>\n<p class=\"p1\"><strong>P: \u00bfLas operaciones de inserci\u00f3n\/actualizaci\u00f3n crean un bloqueo en toda la colecci\u00f3n o en el documento? \u00bfPermitir\u00e1 Couchbase operaciones de lectura en la colecci\u00f3n\/documento?<\/strong><\/p>\n<p class=\"p1\">R: No bloqueamos por defecto. Los documentos individuales pueden bloquearse para escrituras mediante la operaci\u00f3n GetWithLock con un tiempo de espera autom\u00e1tico m\u00e1ximo de 30 segundos. No existe el concepto de \"colecci\u00f3n\", ni bloqueos de colecciones, ni tampoco bloqueos de cubos (bases de datos). Usar operaciones CAS para una concurrencia optimista es generalmente una pr\u00e1ctica mucho mejor que bloquear, bloquear s\u00f3lo es realmente necesario en casos de uso espec\u00edficos en los que CAS puede no ser suficiente, o para evitar realmente cualquier modificaci\u00f3n durante un tiempo determinado. No necesitamos bloquear para leer\/escribir.<\/p>\n<p class=\"p1\"><strong><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">P: \u00bfTen\u00e9is algo como el gridFS que tiene Mongodb para archivos impage\/video?<\/span><\/strong><\/p>\n<p class=\"p1\">R: No dividimos los documentos en partes separadas. Sin embargo, puedes hacerlo dentro de tu aplicaci\u00f3n si tu caso de uso lo requiere.<\/p>\n<p class=\"p1\"><strong>P: \u00bfExiste la capacidad de bulkupload de documentos JSON en el servidor Couchbase? Queremos replicar los cambios de nuestros sistemas empresariales (almacenes de datos) en Couchbase.<\/strong><\/p>\n<p class=\"p1\">R: Algunos de nuestros SDK's tienen multi-set pero generalmente la gente escribe esto. Hacer operaciones es hacer operaciones de todos modos, por lo general recomiendo encontrar una manera de paralelizarlo y utilizar la codificaci\u00f3n m\u00e1s r\u00e1pida VM o lenguajes tambi\u00e9n (Java \/ C) sobre los lenguajes de script. La herramienta de l\u00ednea de comandos cbtransfer puede hacer algo de lo que est\u00e1s pidiendo, dependiendo de la fuente de JSON, si son archivos por ejemplo, la herramienta b\u00e1sicamente est\u00e1 utilizando la biblioteca c.<\/p>\n<p class=\"p1\"><strong>Q:\u00a0<span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">\u00bfCu\u00e1les son las piscinas en \"https:\/\/127.0.0.1:8091\/pools\" cuando u especificar esto en el c\u00f3digo Java?<\/span><\/strong><\/p>\n<p class=\"p1\">R: Es s\u00f3lo parte del URI de conexi\u00f3n. En Java, hemos tenido esa sintaxis durante mucho tiempo en lugar de s\u00f3lo la IP:Puerto. Fue uno de nuestros primeros clientes SDK. Permitimos la \"idea\" de m\u00faltiples pools, pero en realidad s\u00f3lo hay uno. Los otros SDK s\u00f3lo utilizan la sintaxis IP:Port y a\u00f1aden la parte pools\/default\/{bucket} del URI, lo que Java tambi\u00e9n hace.<\/p>\n<p class=\"p1\"><strong>P: \u00bfPuede explicarnos c\u00f3mo funciona el CAS? W<span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">\u00bfQu\u00e9 pasa si el valor CAS no coincide?<\/span><\/strong><\/p>\n<p class=\"p1\">R: Cada vez que se almacena un documento o se modifica (cambio de caducidad), se genera un nuevo valor entero largo que se asocia al documento (en los metadatos). Ese valor representa su estado actual, de forma similar a la comprobaci\u00f3n CRC o el hash MD5. Si realiza una operaci\u00f3n de sustituci\u00f3n y proporciona el valor CAS que recuper\u00f3 por \u00faltima vez para un documento, si coincide, la operaci\u00f3n contin\u00faa. Si no coincide, se produce un error CAS Mismatch, lo que significa que el documento ha sido modificado y ahora tiene un CAS diferente. Entonces puedes manejar esa condici\u00f3n de carrera. Esto se llama concurrencia optimista porque no se requieren recursos del servidor para manejar esto, es decir, no se necesita bloqueo.<\/p>\n<p class=\"p1\"><strong>P: \u00bfQu\u00e9 ocurre si hago un conjunto con par\u00e1metro de durabilidad &gt; de la r\u00e9plica presente en el cl\u00faster?<\/strong><\/p>\n<p class=\"p1\">R: Puede un error :).<\/p>\n<p class=\"p1\"><strong>P: \u00bfCu\u00e1l es el l\u00edmite m\u00e1ximo del tama\u00f1o del documento en su conjunto?\u00a0<span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">\u00bfCu\u00e1l es el l\u00edmite m\u00e1ximo de almacenamiento de datos como Valor cuando guardamos datos binarios?<\/span><\/strong><\/p>\n<p class=\"p1\">R: En ambos casos son 20MB. De todos modos, no querr\u00e1s almacenar archivos m\u00e1s grandes en Couchbase, hay soluciones mucho m\u00e1s inteligentes basadas en CDN para almacenar y distribuir archivos grandes (que probablemente sean v\u00eddeos). En esos casos almacenar\u00edas los metadatos del archivo en Couchbase como JSON con un enlace al archivo, y el archivo real en CDN. Tambi\u00e9n puedes echar un vistazo a CBFS, un almac\u00e9n de archivos distribuido redundante de c\u00f3digo abierto similar a S3 que utiliza Couchbase, escrito por uno de nuestros fundadores:\u00a0<a href=\"https:\/\/github.com\/couchbaselabs\/cbfs\">https:\/\/github.com\/couchbaselabs\/cbfs<\/a><\/p>\n<p class=\"p1\"><strong>P: Siempre dec\u00eds que es bueno configurar el servidor de forma que todos los documentos quepan en la RAM. \u00bfCu\u00e1nto se degradar\u00eda el rendimiento si utilizo discos SSD y poca RAM?<\/strong><\/p>\n<p class=\"p1\">R: Depende. Si usted tiene un alto volumen de escritura y ha llenado la cuota de RAM de su cubo, usted va a tener procesos en competencia que est\u00e1n tratando de obtener documentos en el disco: la expulsi\u00f3n de documentos activos de la RAM para hacer espacio en la RAM y la escritura de nuevos documentos en el disco. Si usted puede tener suficiente E\/S de disco a trav\u00e9s de SSD Raid para que pueda superar su volumen de escritura en t\u00e9rminos de ser capaz de expulsar documentos activos m\u00e1s r\u00e1pido de lo que est\u00e1 llenando la RAM de nuevo, entonces s\u00ed. Si escalas horizontalmente entonces tienes m\u00e1s posibilidades porque tendr\u00e1s muchos nodos expulsando al mismo tiempo y podr\u00edas ser capaz de superar tu volumen de escritura te\u00f3ricamente. Si no, obtendr\u00e1s errores OOM temporales en el cliente que te dir\u00e1n que \"retrocedas\" en las operaciones y vuelvas a intentarlo.<\/p>\n<p class=\"p1\"><strong>P: \u00bfC\u00f3mo se guardan los datos binarios (archivos como im\u00e1genes, pdf, etc.)?<\/strong><\/p>\n<p class=\"p1\">R: Vea la siguiente pregunta... :)<\/p>\n<p><strong>P: \u00bfQu\u00e9 ocurre cuando se almacenan im\u00e1genes en Couchbase?\u00a0<\/strong><\/p>\n<p class=\"p1\">R: Puedes almacenar im\u00e1genes de dos maneras diferentes con Couchbase, una es almacenar datos binarios directamente como un valor Document. La segunda opci\u00f3n es almacenarla como bases64 pre-codificadas dentro de un documento JSON, entonces es un documento JSON est\u00e1ndar con una o m\u00e1s im\u00e1genes codificadas como valores JSON (con claves JSON). La ventaja de <a href=\"https:\/\/www.couchbase.com\/blog\/es\/the-best-database-for-storing-images-might-not-be-a-database-at-all\/\">almacenamiento de im\u00e1genes<\/a> en Couchbase es que se servir\u00e1 desde RAM en lugar de disco, por lo que tendr\u00e1 un gran rendimiento. Combina esto con XDCR (Cross Data Center Replication) y podr\u00e1s crear tu propia CDN para im\u00e1genes.<\/p>\n<p class=\"p1\"><strong><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">P: \u00bfC\u00f3mo se modifican\/actualizan varios documentos y se da marcha atr\u00e1s si se produce un error en uno de ellos?<\/span><\/strong><\/p>\n<p class=\"p1\">R: En Couchbase puedes usar f\u00e1cilmente Optimistic (CAS) o Pessimistic (Lock) Concurrency para transacciones en <em>solo<\/em> pero para m\u00faltiples documentos en una \u00fanica \"transacci\u00f3n\", necesitar\u00e1 utilizar lo que se denomina Two-Phase Commit. Puede leer m\u00e1s sobre ello aqu\u00ed:\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/es\/docs\/couchbase-devguide-2.0\/two-phase-commits.html\/\">https:\/\/www.couchbase.com\/docs\/couchbase-devguide-2.0\/two-phase-commits.html<\/a><\/p>\n<p class=\"p1\"><strong>P: \u00bfExiste la posibilidad de realizar transacciones en Couchbase?<\/strong><\/p>\n<p class=\"p1\">R: Como en la pregunta anterior, puede realizar f\u00e1cilmente transacciones de un solo documento utilizando Optimistic Concurrency con (CAS - Compare and Swap), o Get and Lock.<\/p>\n<p class=\"p1\"><strong>P: \u00bfExiste una operaci\u00f3n de inserci\u00f3n\/actualizaci\u00f3n por lotes que devuelva la llamada con una lista de inserciones\/actualizaciones fallidas despu\u00e9s de la escritura en el disco primario?<\/strong><\/p>\n<p class=\"p1\">R: En algunos SDK's (Python por ejemplo) tienen operaciones de tipo multi-conjunto (todos ellos tienen operaciones multi-get), pero no creo que tengamos soporte para operaciones de tipo multi-conjunto Y observar.<\/p>\n<p class=\"p1\"><strong>P: \u00bfC\u00f3mo puedo hacer una consulta con m\u00faltiples par\u00e1metros a pasar, como nombre, fecha y estado?\u00a0<span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">\u00bfalgo as\u00ed como un \"where\" en SQL?<\/span><\/strong><\/p>\n<p class=\"p1\">R: Esto se hace con nuestras Vistas (\u00cdndices), la consulta de m\u00faltiples par\u00e1metros puede requerir a) consultar vistas separadas y hacer una intersecci\u00f3n dentro de su aplicaci\u00f3n, o ser creativo con la clave de su \u00edndice para que pueda realizar una consulta de rango. Hay varias estrategias diferentes para esto, y ser\u00e1 particular a un caso de uso y el dise\u00f1o del documento para ser capaz de responder de manera sucinta.<\/p>\n<p class=\"p1\"><strong>P: \u00bfSon compatibles con otros lenguajes como Go o Clojure?<\/strong><\/p>\n<p class=\"p1\">R: \u00a1S\u00ed! Tenemos ediciones comunitarias para Go (<a href=\"https:\/\/github.com\/dustin\/go-couchbase\">https:\/\/github.com\/dustin\/go-couchbase<\/a>), puedes ver todos los clientes de la comunidad en nuestra p\u00e1gina Todos los clientes en couchbsae.com:\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/es\/communities\/all-client-libraries\/\">https:\/\/www.couchbase.com\/communities\/all-client-libraries<\/a>\u00a0Las bibliotecas de clientes de la comunidad no est\u00e1n soportadas oficialmente por nuestros contratos de soporte, pero puedes encontrar f\u00e1cilmente ayuda de nuestros ingenieros a trav\u00e9s de IRC o twitter.<\/p>\n<p class=\"p1\"><strong>P: \u00bfLos patrones clave son m\u00e1s r\u00e1pidos que las vistas?<\/strong><\/p>\n<p class=\"p1\">R: En la mayor\u00eda de los casos en los que se pueden utilizar patrones de claves, s\u00ed, porque son operaciones binarias de socket con datos que salen de la cach\u00e9 RAM. Dado que los datos est\u00e1n distribuidos y la indexaci\u00f3n ocurre en cada nodo del cl\u00faster responsable de su distribuci\u00f3n de datos,\u00a0<span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">Las vistas requieren dispersar la consulta a trav\u00e9s de todos los nodos del cluster y recoger los resultados de todos los nodos del cluster. Esto siempre ser\u00e1 m\u00e1s lento que ir directamente a un \u00fanico nodo de Couchbase y hacer una operaci\u00f3n CRUD binaria sobre una conexi\u00f3n binaria persistente para una \u00fanica clave. As\u00ed que, s\u00ed, los Patrones de Claves son m\u00e1s r\u00e1pidos que las Vistas. Sin embargo, no todos los problemas pueden ser resueltos por Key Patterns, para eso est\u00e1n las Views. El caso de uso t\u00edpico de las vistas es consultar la vista y, a continuaci\u00f3n (cuando sea necesario), realizar una operaci\u00f3n de obtenci\u00f3n m\u00faltiple de los documentos de un conjunto de resultados de la vista. En los casos de uso que requieren consultas m\u00e1s complejas, Views son la siguiente respuesta, y para los casos de uso que requieren una b\u00fasqueda m\u00e1s flexible, nuestra integraci\u00f3n Elastic Search es la respuesta. Estamos trabajando en un lenguaje de consulta Couchbase (<a href=\"https:\/\/www.couchbase.com\/blog\/es\/communities\/n1ql\/\">N1QL<\/a>) para consultas AdHoc de Couchbase, actualmente est\u00e1 en Developer Preview que tambi\u00e9n es otra opci\u00f3n interesante y potente para consultas.<\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>In our ongoing training series, a number of questions come up each time, I list them out with their respective answers below! Couchbase 102 &#8211; SDK Operations Operations Concepts By Language:\u00a0https:\/\/github.com\/couchbaselabs\/DeveloperDay Q: Are these operations the same for mobile applications? [&hellip;]<\/p>\n","protected":false},"author":2,"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":[8968],"class_list":["post-1534","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Couchbase 102: Q &amp; A - 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\/couchbase-102-q-and-a\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase 102: Q &amp; A\" \/>\n<meta property=\"og:description\" content=\"In our ongoing training series, a number of questions come up each time, I list them out with their respective answers below! Couchbase 102 &#8211; SDK Operations Operations Concepts By Language:\u00a0https:\/\/github.com\/couchbaselabs\/DeveloperDay Q: Are these operations the same for mobile applications? [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-102-q-and-a\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2013-12-06T08:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-28T08:35:52+00:00\" \/>\n<meta name=\"author\" content=\"The Couchbase Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"The Couchbase Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 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-102-q-and-a\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-102-q-and-a\\\/\"},\"author\":{\"name\":\"The Couchbase Team\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/764f4a6771ee19bc7af70b70a326fb93\"},\"headline\":\"Couchbase 102: Q &amp; A\",\"datePublished\":\"2013-12-06T08:00:00+00:00\",\"dateModified\":\"2023-06-28T08:35:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-102-q-and-a\\\/\"},\"wordCount\":2175,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-102-q-and-a\\\/#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\\\/couchbase-102-q-and-a\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-102-q-and-a\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-102-q-and-a\\\/\",\"name\":\"Couchbase 102: Q &amp; A - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-102-q-and-a\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-102-q-and-a\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2013-12-06T08:00:00+00:00\",\"dateModified\":\"2023-06-28T08:35:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-102-q-and-a\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-102-q-and-a\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/couchbase-102-q-and-a\\\/#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\\\/couchbase-102-q-and-a\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase 102: Q &amp; A\"}]},{\"@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\\\/764f4a6771ee19bc7af70b70a326fb93\",\"name\":\"The Couchbase Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g7befc37d02226b59499817eafdec60c3\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g\",\"caption\":\"The Couchbase Team\"},\"description\":\"Jennifer Garcia is a Senior Web Manager at Couchbase Inc. As the website manager, Jennifer has overall responsibility for the website properties including design, implementation, content, and performance.\",\"sameAs\":[\"https:\\\/\\\/www.couchbase.com\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/es\\\/author\\\/jennifer-garcia\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase 102: Q &amp; A - 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\/couchbase-102-q-and-a\/","og_locale":"es_MX","og_type":"article","og_title":"Couchbase 102: Q &amp; A","og_description":"In our ongoing training series, a number of questions come up each time, I list them out with their respective answers below! Couchbase 102 &#8211; SDK Operations Operations Concepts By Language:\u00a0https:\/\/github.com\/couchbaselabs\/DeveloperDay Q: Are these operations the same for mobile applications? [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-102-q-and-a\/","og_site_name":"The Couchbase Blog","article_published_time":"2013-12-06T08:00:00+00:00","article_modified_time":"2023-06-28T08:35:52+00:00","author":"The Couchbase Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"The Couchbase Team","Est. reading time":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-102-q-and-a\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-102-q-and-a\/"},"author":{"name":"The Couchbase Team","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/764f4a6771ee19bc7af70b70a326fb93"},"headline":"Couchbase 102: Q &amp; A","datePublished":"2013-12-06T08:00:00+00:00","dateModified":"2023-06-28T08:35:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-102-q-and-a\/"},"wordCount":2175,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-102-q-and-a\/#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\/couchbase-102-q-and-a\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-102-q-and-a\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-102-q-and-a\/","name":"Couchbase 102: Q &amp; A - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-102-q-and-a\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-102-q-and-a\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2013-12-06T08:00:00+00:00","dateModified":"2023-06-28T08:35:52+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-102-q-and-a\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-102-q-and-a\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-102-q-and-a\/#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\/couchbase-102-q-and-a\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase 102: Q &amp; A"}]},{"@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\/764f4a6771ee19bc7af70b70a326fb93","name":"El equipo de Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g7befc37d02226b59499817eafdec60c3","url":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?s=96&d=mm&r=g","caption":"The Couchbase Team"},"description":"Jennifer Garcia es Gerente Senior de Web en Couchbase Inc. Como responsable del sitio web, Jennifer tiene la responsabilidad general de las propiedades del sitio web, incluido el dise\u00f1o, la implementaci\u00f3n, el contenido y el rendimiento.","sameAs":["https:\/\/www.couchbase.com"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/jennifer-garcia\/"}]}},"acf":[],"authors":[{"term_id":8968,"user_id":2,"is_guest":0,"slug":"jennifer-garcia","display_name":"The Couchbase Team","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b4c18c758421903398e84d6c9560f319f39c665798d7d23e6a6f9dff8a8f984e?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\/1534","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\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=1534"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1534\/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=1534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=1534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=1534"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=1534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}