{"id":1996,"date":"2016-01-04T18:34:40","date_gmt":"2016-01-04T18:34:40","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1996"},"modified":"2025-06-13T17:24:47","modified_gmt":"2025-06-14T00:24:47","slug":"determine-data-access-in-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/determine-data-access-in-couchbase\/","title":{"rendered":"Couchbasics: C\u00f3mo las necesidades funcionales y de rendimiento determinan el acceso a los datos en Couchbase"},"content":{"rendered":"<p>Hay m\u00faltiples maneras de obtener datos dentro y fuera de Couchbase. F\u00edjate que no he dicho consultar, he dicho entrar y salir... a prop\u00f3sito. No todas las formas de obtener datos dentro y fuera de Couchbase son consultas como en otras bases de datos. Couchbase ofrece m\u00faltiples formas que proporcionan diferentes capacidades\/funcionalidad y caracter\u00edsticas de rendimiento que puedes mezclar y combinar para satisfacer las necesidades de tu aplicaci\u00f3n. Vamos a enumerar los diferentes patrones de acceso a datos de Couchbase y luego nos sumergiremos en la aplicaci\u00f3n pr\u00e1ctica de cada uno.<\/p>\n<ol style=\"margin-top: 0pt;margin-bottom: 0pt\">\n<li>Lectura\/escritura de datos por ID de objeto (clave)<\/li>\n<li>Leer datos de una Vista<\/li>\n<li>Lectura\/Escritura\/Actualizaci\u00f3n de datos mediante N1QL<\/li>\n<li>B\u00fasqueda de texto completo mediante Solr o Elastic<\/li>\n<\/ol>\n<h2>Cu\u00e1ndo y d\u00f3nde utilizar cada m\u00e9todo<\/h2>\n<p>Con la introducci\u00f3n de N1QL (pronunciado \"nickel\") y los Servicios de Consulta e \u00cdndice a Couchbase en 4.0, Couchbase obtiene un nuevo nivel de funcionalidad. N1QL aporta un cumplimiento casi total de SQL ANSI-92. <em>(Digo casi, ya que N1QL omite caracter\u00edsticas que son \u00fatiles en una base de datos relacional, pero no en una base de datos de documentos. A la inversa, tiene caracter\u00edsticas que son necesarias para una base de datos de documentos, pero que no son apropiadas para una base de datos relacional. En otras palabras, es a la vez un subconjunto y un superconjunto de SQL ANSI-92).<\/em>\u00a0Pero seamos claros, N1QL es <strong>NO<\/strong> pretend\u00eda y deb\u00eda <strong>NO<\/strong> sustituye a los otros medios para leer y escribir datos que ten\u00eda Couchbase antes de la versi\u00f3n 4.0. Simplemente ofrece otra forma de acceder a los datos.<\/p>\n<p>Con la introducci\u00f3n de N1QL, la necesidad de Solr y Elastic ha disminuido ya que Couchbase soporta consultas completas para las que la mayor\u00eda de la gente utilizaba estas dos herramientas. Todav\u00eda son necesarias si tu aplicaci\u00f3n necesita b\u00fasqueda de texto completo. Ambas plataformas tienen una excelente integraci\u00f3n con Couchbase para proporcionar esta funcionalidad.<\/p>\n<p>Cada uno de los cuatro medios de acceso a los datos es una herramienta en su caja de herramientas y cada una tiene un prop\u00f3sito diferente. Cada herramienta debe utilizarse seg\u00fan las necesidades funcionales y de rendimiento de ese caso de uso. Recuerde, estas herramientas no son una situaci\u00f3n de \"lo uno o lo otro\". Usted puede mezclar y combinar estas herramientas para su beneficio. Por ejemplo, puedes consultar una Vista que emita IDs de objetos y luego usar esos IDs con un BulkGet paralelizado usando el SDK de Couchbase para leer todos esos objetos, o simplemente hacer create\/read\/update\/delete (CRUD) en todos esos objetos, lo cual ser\u00e1 muy r\u00e1pido. As\u00ed que juntas estas herramientas te proporcionan formas est\u00e1ndar y escalables que cualquiera puede utilizar para obtener datos dentro y fuera de Couchbase con facilidad y flexibilidad.<\/p>\n<p>Pero entremos en detalles...<\/p>\n<h2>Lectura\/Escritura de datos por ID de objeto (clave)<\/h2>\n<p>En su n\u00facleo, Couchbase es una incre\u00edble base de datos clave\/valor y siempre lo ha sido. Acceder v\u00eda ID de objeto es tambi\u00e9n uno de los conceptos m\u00e1s dif\u00edciles en Couchbase para que la gente lo entienda r\u00e1pidamente y lo use sabiamente (de ah\u00ed la longitud de esta secci\u00f3n). Una vez que comprenden su poder, ven lo que puede proporcionar y c\u00f3mo pueden aplicar esta herramienta. El acceso mediante ID de objeto es la bestia incomprendida y poderosa del rinc\u00f3n. As\u00ed que vamos a entender mejor esta bestia y c\u00f3mo podemos aprovecharla para nuestro beneficio.<\/p>\n<p>Perm\u00edtanme ser claro antes de empezar, el acceso a los datos a trav\u00e9s de ID de objeto (clave) se <strong>siempre<\/strong> ser m\u00e1s r\u00e1pido que la consulta. Es la diferencia entre conocer la respuesta para obtener los datos y tener que hacer una pregunta (consulta) para encontrar esos datos. Supongamos que entras en una biblioteca y necesitas un libro concreto. Si conoce la identificaci\u00f3n del libro, vaya a la planta uno, fila tres, estante cuatro, tercer libro por la derecha. Vas all\u00ed, lo coges, pasas por caja y te vas. Si no tienes la identificaci\u00f3n del libro, puedes preguntar al bibliotecario o al inform\u00e1tico, darles la informaci\u00f3n que tienes (autor, t\u00edtulo, etc.) y ellos te llevan al lugar para recuperar el libro, o peor a\u00fan, miras todos los libros y al final lo encuentras. Cuando conoces el ID del objeto, no hay necesidad de una b\u00fasqueda indexada de tus datos; simplemente obtienes los datos que necesitas directamente de la cach\u00e9 gestionada de Couchbase. Es extremadamente r\u00e1pido, con tiempos de acceso muy consistentes y una latencia muy baja. As\u00ed que aseg\u00farate de no comparar su rendimiento con los otros m\u00e9todos de acceso, ya que cada uno es para diferentes necesidades funcionales.<\/p>\n<p>Ahora puedes decir al acceso clave\/valor: \"\u00a1meh, necesito consultas!\". Puede que s\u00ed y puede que no. En Couchbase, acceder a los datos con el ID de objeto puede ser muy potente, ya que el ID de objeto puede tener un m\u00e1ximo de 250 bytes y, dependiendo de c\u00f3mo utilices el ID de objeto, podr\u00eda permitirte evitar la consulta. El verdadero poder de lo que puedes hacer con ese ID de objeto es cuando utilizas un patr\u00f3n estandarizado para cada ID de objeto que tu aplicaci\u00f3n puede construir para ir tras los datos exactos que necesita, cuando los necesita. Piensa en el ID de objeto como una extensi\u00f3n de tu modelado general de objetos. Combina todo esto con la arquitectura de Couchbase, y te habr\u00e1s asegurado de que tu aplicaci\u00f3n obtiene los datos que necesita lo m\u00e1s r\u00e1pido posible de la cach\u00e9 gestionada integrada. Un momento de precauci\u00f3n. Por defecto, Couchbase almacenar\u00e1 todos los IDs de cada objeto en la cach\u00e9 gestionada por razones de rendimiento. As\u00ed que no te vuelvas loco con claves grandes. Por ejemplo, si tienes 250 millones de objetos multiplicados por 250 bytes de datos, se necesitan alrededor de 58GB de RAM en todo el cluster, s\u00f3lo para las claves. As\u00ed que s\u00f3lo porque puedas tener una clave de 250 bytes, no significa que debas. A gran escala esto podr\u00eda convertirse en un problema, por lo que yo recomendar\u00eda mantenerlas por debajo de 100.<\/p>\n<p>La arquitectura de Couchbase con los niveles combinados de cach\u00e9 y persistencia sobresale en patrones de acceso a datos que podr\u00edan ser paralizantes para otras bases de datos, especialmente las relacionales. La lectura de m\u00faltiples objetos directamente desde la cach\u00e9 gestionada es considerablemente m\u00e1s r\u00e1pida que en las bases de datos tradicionales. Y con otras bases de datos, necesitas restringir los viajes de ida y vuelta a la base de datos. Con Couchbase, puedes leer un documento, obtener datos de \u00e9l, y luego leer m\u00e1s objetos basados en eso, todo en el mismo tiempo total o incluso menos de lo que tardan otras bases de datos en hacer s\u00f3lo esa consulta y devolver los resultados. La penalizaci\u00f3n por m\u00faltiples viajes a Couchbase es dram\u00e1ticamente menor y de hecho se fomenta.<\/p>\n<p>Le dar\u00e9 algunos ejemplos de lo que se entiende por patrones estandarizados de identificaci\u00f3n de objetos:<\/p>\n<p><span style=\"color: #000000;font-family: Consolas;font-size: 14.6667px;line-height: 20.24px;text-align: start\">login-info::hernandez94<\/span><\/p>\n<p>Este objeto almacena la informaci\u00f3n de inicio de sesi\u00f3n para un nombre de usuario \u00fanico de hernandez94 en un directorio <a href=\"https:\/\/www.couchbase.com\/blog\/es\/user-profile-store-advanced-data-modeling\/\">almac\u00e9n de perfiles de usuario<\/a>. As\u00ed que cuando usted necesita para autenticar a este usuario, que acaba de agarrar este documento JSON que s\u00f3lo contiene su informaci\u00f3n de acceso.<\/p>\n<p><span style=\"color: #000000;font-family: Consolas;font-size: 14.6667px;line-height: 20.24px;text-align: start\">preguntas de seguridad::hernandez94<\/span><\/p>\n<p>En este mismo ejemplo de almac\u00e9n de perfiles de usuario, este objeto almacenar\u00eda un documento JSON de las tres preguntas de seguridad de ese usuario. Cuando olviden su contrase\u00f1a, todo lo que tu aplicaci\u00f3n tiene que hacer es obtener este objeto. La otra cosa buena es que como las preguntas de seguridad no se acceden a menudo, pueden caer fuera de la cach\u00e9 gestionada para los objetos que se utilizan a menudo y eso est\u00e1 bien.<\/p>\n<p>Puedes ver que con unos patrones de identificaci\u00f3n de objetos est\u00e1ndar como estos, tu aplicaci\u00f3n podr\u00eda crearlos con la informaci\u00f3n que tiene disponible y luego interactuar con estos objetos directamente en Couchbase. Sin necesidad de consultar la base de datos. Podr\u00edamos profundizar en las estrategias de modelado de objetos, pero eso est\u00e1 fuera del alcance de este art\u00edculo. Para m\u00e1s informaci\u00f3n, lee \"<a style=\"text-decoration: none\" href=\"https:\/\/www.couchbase.com\/blog\/es\/performance-oriented-architecture\/\">Arquitectura orientada al rendimiento<\/a>\"por Chris Anderson.<\/p>\n<p>Para ver algunos ejemplos m\u00e1s concretos de c\u00f3mo puede utilizar un patr\u00f3n de ID de objeto normalizado en su aplicaci\u00f3n, consulte <a href=\"https:\/\/www.couchbase.com\/blog\/es\/user-profile-store-advanced-data-modeling\/\">este<\/a> y <a href=\"https:\/\/www.couchbase.com\/blog\/es\/advanced-object-modeling-for-high-write-rates-with-logging-and-event-data\/\">este<\/a>\u00a0que escrib\u00ed. Incluso si los casos de uso espec\u00edficos de los blogs no son aplicables al suyo, podr\u00edan ayudarle a comprender mejor el uso de los patrones de ID de objeto y c\u00f3mo podr\u00edan aplicarse a su propio caso de uso.<\/p>\n<h3>Pros:<\/h3>\n<ul>\n<li>Acceso muy r\u00e1pido y si tu cluster tiene el tama\u00f1o correcto, el objeto ya est\u00e1 en la cach\u00e9 gestionada de Couchbase.<\/li>\n<li>Flexibilidad para buscar datos a trav\u00e9s del ID del objeto<\/li>\n<li>Los datos son fuertemente coherentes. Es decir, siempre se leen las propias escrituras.<\/li>\n<li>Se ampl\u00eda linealmente con una distribuci\u00f3n uniforme de los datos entre los nodos.<\/li>\n<\/ul>\n<h3>Contras:<\/h3>\n<ul>\n<li>La aplicaci\u00f3n requiere m\u00e1s inteligencia para acceder a los objetos que necesita<\/li>\n<li>Modelizaci\u00f3n de datos m\u00e1s avanzada<\/li>\n<li>Conocimiento m\u00e1s profundo de los patrones de acceso a datos de su aplicaci\u00f3n antes de escribirla.<\/li>\n<\/ul>\n<h2>Lectura de datos de una vista<\/h2>\n<p>Hasta Couchbase 4.0, los \u00edndices View eran la \u00fanica forma de consultar Couchbase si no conoc\u00edas el ID del objeto. Ahora que tenemos los Servicios de Consultas e \u00cdndices manejando N1QL, volvamos a ver qu\u00e9 son las Vistas de Couchbase, para qu\u00e9 son mejores, y por qu\u00e9 definitivamente siguen siendo relevantes.<\/p>\n<p>Las vistas en Couchbase son una funci\u00f3n map-reduce javascript que genera un \u00edndice. La vista es actualizada autom\u00e1ticamente por la base de datos a medida que ocurren las mutaciones. Tu aplicaci\u00f3n puede entonces consultar ese \u00edndice de vista para devolver IDs de objetos.<\/p>\n<p>Por ejemplo, la direcci\u00f3n necesita saber de forma semiregular cu\u00e1ntos usuarios de iOS tenemos, qu\u00e9 versi\u00f3n de la aplicaci\u00f3n utilizan y de qu\u00e9 pa\u00eds son, pero hacerlo a trav\u00e9s de 30.000.000 de documentos de usuario en la base de datos. Las vistas lo solucionan muy bien, ya que esa informaci\u00f3n se calcula a medida que los datos se insertan o actualizan en la base de datos. As\u00ed, cuando se necesita consultar esa vista precalculada, la consulta es relativamente barata.<\/p>\n<p>Una cosa a tener en cuenta, sin embargo, es que las vistas son finalmente consistentes por defecto. Al consultarlas, puede utilizar \"stale=false\" para forzar la actualizaci\u00f3n de la vista. <strong>antes de\u00a0<\/strong>y es m\u00e1s probable que sea muy coherente. Sin embargo, esto tendr\u00e1 una penalizaci\u00f3n en el rendimiento. La penalizaci\u00f3n depende de la frecuencia con que cambien los datos en la base de datos y de c\u00f3mo est\u00e9 dise\u00f1ada la vista. El flujo de satisfacer una consulta de vista con stale=false activado es: Tu aplicaci\u00f3n llama a los nodos del cluster, ellos actualizan el \u00edndice de la vista en los nodos del cluster, luego vuelven a la aplicaci\u00f3n con los resultados. Ahora imagina esto con una tasa de inserci\u00f3n\/actualizaci\u00f3n muy alta y una tasa de consulta alta y ver\u00e1s d\u00f3nde puedes tener problemas. Tenlo en cuenta.<\/p>\n<h3>Pros:<\/h3>\n<ul>\n<li>Facilita la consulta de grandes cantidades de datos<\/li>\n<li>Se puede programar con Javascript ejecutado en el lado del servidor en tiempo real para proporcionar funcionalidades no disponibles en otras \u00e1reas de Couchbase<\/li>\n<li>Una vez creado, examina cada objeto a medida que se actualiza o inserta para su inclusi\u00f3n<\/li>\n<li>Cada nodo del Servicio de Datos s\u00f3lo procesa su parte de los datos totales del cl\u00faster. Por ejemplo, en un cl\u00faster de cuatro nodos, cada nodo tiene 25% de los datos activos y, por tanto, s\u00f3lo indexa esos 25% que tiene.<\/li>\n<\/ul>\n<h3>Contras:<\/h3>\n<ul>\n<li>Deben programarse con Javascript.  Esto hace que sean un poco m\u00e1s complicados de acostumbrarse, pero tambi\u00e9n potentes.<\/li>\n<li>Los \u00edndices de la vista se reparten entre los nodos del Servicio de Datos, no entre el Servicio de \u00cdndices. Cuantos m\u00e1s nodos tenga como parte del Servicio de Datos, m\u00e1s nodos tendr\u00e1 que obtener el motor de vistas para devolver una respuesta a la aplicaci\u00f3n.<\/li>\n<li>Eventualmente consistente por defecto, pero se puede consultar con stale=false, pero asumiendo el impacto en el rendimiento.<\/li>\n<\/ul>\n<h2>Lectura y Escritura de Datos con N1QL<\/h2>\n<p>Con N1QL, ahora entramos en la consulta tradicional de datos. <em>SELECT this FROM that WHERE this = 'cosas que sabemos' JOIN con esa otra cosa<\/em>. Si el acceso a trav\u00e9s de ID de objeto es la bestia en la habitaci\u00f3n, entonces este es un poderoso Asistente.<\/p>\n<p>N1QL, junto con los Servicios de Consultas e \u00cdndices que lo impulsan, te da la mayor flexibilidad para acceder a tus datos en Couchbase a la vez que es eficiente y escalable a trav\u00e9s de servicios gestionados de forma independiente. Si necesitas hacer an\u00e1lisis, consultas complejas, comparar datos, etc., entonces N1QL es lo que est\u00e1s buscando. En la analog\u00eda de estar en una biblioteca y necesitar un libro, consultar con N1QL es el bibliotecario que consigue los libros que satisfacen los datos que tienes. \"Por favor, cons\u00edgueme todo lo que haya en la biblioteca del autor Neil Gaiman que haya sido escrito entre 1998 y 2014 y sean libros o novelas gr\u00e1ficas\". Esto cambia bastante el tipo de funcionalidades de las aplicaciones para las que se puede usar Couchbase.<\/p>\n<p>Lo bueno de los SDKs de cliente de Couchbase es que s\u00f3lo tienes que utilizar un m\u00e9todo diferente para realizar la consulta y el SDK se encarga de la comunicaci\u00f3n con los servicios apropiados. Aparte de eso, no tienes que hacer nada extra. En tu aplicaci\u00f3n, la primera llamada puede ser una consulta N1QL compleja con uniones y la siguiente es utilizar los resultados de la consulta para llamar a una vista map reduce para obtener una agregaci\u00f3n precalculada. Este es otro ejemplo de c\u00f3mo usar la herramienta adecuada para el trabajo adecuado tiene sentido y te da opciones.<\/p>\n<p>Ahora que hemos establecido el poder y la flexibilidad, hay otras herramientas que puedes incorporar con el servicio de Consulta. Couchbase se ha asociado con Simba Technologies para crear drivers ODBC y JDBC para el acceso a datos. Esto te permite utilizar Excel o herramientas BI m\u00e1s complejas como Pentaho, Informatica, etc.<\/p>\n<h3>Pros:<\/h3>\n<ul>\n<li>Muy flexible para consultar datos de la base de datos y obtener las respuestas que necesita.<\/li>\n<li>Los \u00edndices se encuentran \u00fanicamente en los nodos que dan servicio a los nodos de \u00edndice y no repartidos por todo el cl\u00faster.<\/li>\n<li>Puede utilizar el escalado multidimensional (MDS) para escalar s\u00f3lo los servicios que necesita para obtener el rendimiento requerido para su aplicaci\u00f3n.<\/li>\n<li>Los desarrolladores que conocen SQL pueden pasar f\u00e1cilmente a escribir N1QL<\/li>\n<li>Controladores ODBC y JDBC para la integraci\u00f3n con herramientas de BI<\/li>\n<\/ul>\n<h3>Contras:<\/h3>\n<ul>\n<li>Las consultas nunca tendr\u00e1n el mismo rendimiento que el acceso a los datos a trav\u00e9s del ID de objeto, por las razones que ya he explicado.<\/li>\n<li>Eventualmente consistente por defecto, pero se puede consultar con stale=false para actualizar inmediatamente el \u00edndice, pero con un impacto en el rendimiento. Sin embargo, para la mayor\u00eda de las cargas de trabajo, el \u00edndice se actualiza lo m\u00e1s r\u00e1pido posible en segundo plano y la consistencia deber\u00eda estar bien.<\/li>\n<\/ul>\n<h2>B\u00fasqueda de texto completo con Solr o Elastic<\/h2>\n<p><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.0\/connectors\/elasticsearch-2.1\/elastic-intro.html\">Couchbase se integra con Solr y Elastic (B\u00fasqueda)<\/a>\u00a0a trav\u00e9s de plugins para proporcionar capacidades de b\u00fasqueda de texto completo que Couchbase carece, por el momento. Si tienes un requerimiento funcional para esto, cada uno tiene un plugin que permite que cada operaci\u00f3n de escritura\/actualizaci\u00f3n sea transmitida a Solr y\/o Elastic. Por defecto, estos servidores de b\u00fasqueda no guardan el documento JSON completo, sino que se limitan a crear los componentes internos (\u00edndices, etc.) necesarios para permitir la b\u00fasqueda de texto completo. Una vez que los documentos son buscables, tu aplicaci\u00f3n har\u00eda referencia a esas herramientas cuando necesites esa funcionalidad, obtendr\u00eda los resultados de la b\u00fasqueda y, si fuera necesario, leer\u00eda el documento o documentos completos desde Couchbase. Esto te permite utilizar cada herramienta para lo que son mejores y obtener el mejor rendimiento de cada una.<\/p>\n<h3>Pros:<\/h3>\n<ul>\n<li>Capacidad de b\u00fasqueda de texto completo<\/li>\n<li>La aplicaci\u00f3n no necesita hacer escrituras duales, escribe en Couchbase y desde all\u00ed la escritura se replica autom\u00e1ticamente en Elastic\/Solr para su indexaci\u00f3n.<\/li>\n<li>Cada sistema puede escalarse para gestionar el trabajo que necesita<\/li>\n<\/ul>\n<h3>Contras:<\/h3>\n<ul>\n<li>Debe mantener una infraestructura independiente para Solr o Elastic.<\/li>\n<li>Eventualmente consistente<\/li>\n<li>No est\u00e1 totalmente integrado en el cl\u00faster Couchbase<\/li>\n<li>No est\u00e1 integrado en el SDK de Couchbase, por lo que tu aplicaci\u00f3n tendr\u00e1 que hablar con uno de ellos y Couchbase<\/li>\n<\/ul>\n<p>Te preguntar\u00e1s: \"\u00bfPor qu\u00e9 no usar Solr o Elastic y saltarnos Couchbase por completo?\". La raz\u00f3n es simple: aunque ambos son geniales para lo que hacen, ni Solr ni Elastic son bases de datos y ninguno tiene el rendimiento u otras potentes capacidades de Couchbase. Pru\u00e9balo t\u00fa mismo y ver\u00e1s que ambos pueden ser al menos 2-3 veces m\u00e1s lentos que obtener los mismos datos de Couchbase.<\/p>\n<h2>Resumen<\/h2>\n<p>Dependiendo de c\u00f3mo necesites acceder a los datos en Couchbase, as\u00ed como de las necesidades funcionales y de rendimiento que tu aplicaci\u00f3n necesite de Couchbase, puedes mezclar y combinar las herramientas que he descrito para obtener los resultados que necesitas. Si necesitas velocidad bruta y\/o consistencia total, opta por el acceso mediante ID de objeto y un patr\u00f3n de clave estandarizado. Si necesita hacer preguntas a los datos, utilice vistas, N1QL o b\u00fasqueda de texto completo. Si necesita obtener un mont\u00f3n de documentos y actualizarlos r\u00e1pidamente, combine vistas con acceso mediante ID de objeto.<\/p>\n<p>La otra gran cosa es que los m\u00e9todos de acceso #1-3 est\u00e1n todos incorporados en los SDKs de Couchbase, con el \"c\u00f3mo cada uno hace su magia\" ofuscado de tu aplicaci\u00f3n. Esto te permite no s\u00f3lo combinar todos estos patrones de acceso para trabajar juntos, sino desarrollar con agilidad con todas las caracter\u00edsticas contra un solo nodo de Couchbase en tu port\u00e1til, pero luego operar con ese mismo c\u00f3digo a cualquier escala en un cl\u00faster. As\u00ed que si tienes 3 nodos u 80 nodos de Couchbase en tu cl\u00faster, tu aplicaci\u00f3n est\u00e1 lista para escalar con cero cambios de c\u00f3digo para facilitar eso.<\/p>","protected":false},"excerpt":{"rendered":"<p>There are multiple ways of getting data in and out of Couchbase. Notice that I did not say querying, I said in and out&#8230;on purpose. Not all ways of getting data in and out of Couchbase are querying like in [&hellip;]<\/p>","protected":false},"author":23,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1815,1821,1816,1812],"tags":[],"ppma_author":[9008],"class_list":["post-1996","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-best-practices-and-tutorials","category-couchbase-architecture","category-couchbase-server","category-n1ql-query"],"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>Couchbasics: How Functional and Performance Needs Determine Data Access in Couchbase - 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\/determine-data-access-in-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbasics: How Functional and Performance Needs Determine Data Access in Couchbase\" \/>\n<meta property=\"og:description\" content=\"There are multiple ways of getting data in and out of Couchbase. Notice that I did not say querying, I said in and out&#8230;on purpose. Not all ways of getting data in and out of Couchbase are querying like in [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/determine-data-access-in-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-01-04T18:34:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T00:24:47+00:00\" \/>\n<meta name=\"author\" content=\"Kirk Kirkconnell, Senior Solutions Engineer, 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=\"Kirk Kirkconnell, Senior Solutions Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/\"},\"author\":{\"name\":\"Kirk Kirkconnell, Senior Solutions Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/2887e38425754897cea2d896bf082e6d\"},\"headline\":\"Couchbasics: How Functional and Performance Needs Determine Data Access in Couchbase\",\"datePublished\":\"2016-01-04T18:34:40+00:00\",\"dateModified\":\"2025-06-14T00:24:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/\"},\"wordCount\":2782,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Application Design\",\"Best Practices and Tutorials\",\"Couchbase Architecture\",\"Couchbase Server\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/\",\"name\":\"Couchbasics: How Functional and Performance Needs Determine Data Access in Couchbase - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-01-04T18:34:40+00:00\",\"dateModified\":\"2025-06-14T00:24:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/#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\/determine-data-access-in-couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbasics: How Functional and Performance Needs Determine Data Access in Couchbase\"}]},{\"@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\/2887e38425754897cea2d896bf082e6d\",\"name\":\"Kirk Kirkconnell, Senior Solutions Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/60a4ddb304fde12e65369919433b8dc7\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f704905856dcd1767d50024da51e2fa159eea665c85aff3224bc8763551d4e35?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f704905856dcd1767d50024da51e2fa159eea665c85aff3224bc8763551d4e35?s=96&d=mm&r=g\",\"caption\":\"Kirk Kirkconnell, Senior Solutions Engineer, Couchbase\"},\"description\":\"Kirk Kirkconnell was a Senior Solutions Engineer at Couchbase working with customers in multiple capacities to assist them in architecting, deploying, and managing Couchbase. His expertise is in operations, hosting, and support of large-scale application and database infrastructures.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/kirk-kirkconnell\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbasics: C\u00f3mo las necesidades funcionales y de rendimiento determinan el acceso a los datos en Couchbase - 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\/determine-data-access-in-couchbase\/","og_locale":"es_MX","og_type":"article","og_title":"Couchbasics: How Functional and Performance Needs Determine Data Access in Couchbase","og_description":"There are multiple ways of getting data in and out of Couchbase. Notice that I did not say querying, I said in and out&#8230;on purpose. Not all ways of getting data in and out of Couchbase are querying like in [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/determine-data-access-in-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-01-04T18:34:40+00:00","article_modified_time":"2025-06-14T00:24:47+00:00","author":"Kirk Kirkconnell, Senior Solutions Engineer, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirk Kirkconnell, Senior Solutions Engineer, Couchbase","Est. reading time":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/"},"author":{"name":"Kirk Kirkconnell, Senior Solutions Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/2887e38425754897cea2d896bf082e6d"},"headline":"Couchbasics: How Functional and Performance Needs Determine Data Access in Couchbase","datePublished":"2016-01-04T18:34:40+00:00","dateModified":"2025-06-14T00:24:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/"},"wordCount":2782,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Application Design","Best Practices and Tutorials","Couchbase Architecture","Couchbase Server","SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/","name":"Couchbasics: C\u00f3mo las necesidades funcionales y de rendimiento determinan el acceso a los datos en Couchbase - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-01-04T18:34:40+00:00","dateModified":"2025-06-14T00:24:47+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/determine-data-access-in-couchbase\/#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\/determine-data-access-in-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbasics: How Functional and Performance Needs Determine Data Access in Couchbase"}]},{"@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\/2887e38425754897cea2d896bf082e6d","name":"Kirk Kirkconnell, Ingeniero Superior de Soluciones, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/60a4ddb304fde12e65369919433b8dc7","url":"https:\/\/secure.gravatar.com\/avatar\/f704905856dcd1767d50024da51e2fa159eea665c85aff3224bc8763551d4e35?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f704905856dcd1767d50024da51e2fa159eea665c85aff3224bc8763551d4e35?s=96&d=mm&r=g","caption":"Kirk Kirkconnell, Senior Solutions Engineer, Couchbase"},"description":"Kirk Kirkconnell fue Ingeniero Senior de Soluciones en Couchbase trabajando con clientes en m\u00faltiples capacidades para ayudarles en la arquitectura, despliegue y gesti\u00f3n de Couchbase. Su experiencia se centra en operaciones, alojamiento y soporte de aplicaciones a gran escala e infraestructuras de bases de datos.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/kirk-kirkconnell\/"}]}},"authors":[{"term_id":9008,"user_id":23,"is_guest":0,"slug":"kirk-kirkconnell","display_name":"Kirk Kirkconnell, Senior Solutions Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f704905856dcd1767d50024da51e2fa159eea665c85aff3224bc8763551d4e35?s=96&d=mm&r=g","first_name":"Kirk","last_name":"Kirkconnell","user_url":"","author_category":"","description":"Kirk Kirkconnell fue Ingeniero Senior de Soluciones en Couchbase trabajando con clientes en m\u00faltiples capacidades para ayudarles en la arquitectura, despliegue y gesti\u00f3n de Couchbase. Su experiencia se centra en operaciones, alojamiento y soporte de aplicaciones a gran escala e infraestructuras de bases de datos."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1996","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\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=1996"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1996\/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=1996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=1996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=1996"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=1996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}