{"id":4037,"date":"2017-09-21T15:22:15","date_gmt":"2017-09-21T22:22:15","guid":{"rendered":"http:\/\/www.couchbase.com\/blog\/?p=4037"},"modified":"2025-06-13T17:23:13","modified_gmt":"2025-06-14T00:23:13","slug":"gear-n1ql-era-engagement-databases","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/gear-n1ql-era-engagement-databases\/","title":{"rendered":"Prep\u00e1rese con N1QL para la era de las bases de datos de compromiso"},"content":{"rendered":"<h2 style=\"font-weight: 600;\"><b><strong><span style=\"font-weight: 400;\">Couchbase Engagement Database Platform<\/span><\/strong><\/b><\/h2>\n<p><b><strong><span style=\"font-weight: 400;\">Woo-Hoo!!! Have you heard of <a href=\"https:\/\/www.couchbase.com\/binaries\/content\/assets\/website\/docs\/whitepapers\/engagement-database.pdf\">Engagement Databases<\/a>? I am sure, \u201cNo\u201d, not until <a href=\"https:\/\/www.couchbase.com\/blog\/engaging-growth-introducing-industrys-first-engagement-database\/\">Couchbase announced<\/a> it with 5.0 release. In today\u2019s digital economy, success of a business is dependent on its ability to leverage successful digital transformation to provide superior customer engagement &amp; experience. DNA of all this lies in data, and that calls for a powerful database platform which can tackle the data problems in Systems of Engagement at scale, at ease, and at the roots. These problems are pretty unique and hence the solutions should be too. Superior understanding of the problems in this space and elegant &amp; efficient solutions to those problems led to the discovery of a new category of databases, we call <\/span>Engagement Databases<span style=\"font-weight: 400;\">. Such a database is complementary to the Transactional and Analytical databases you might have in your data fabric infrastructure. Following picture shows how they fit together.<\/span><\/strong><\/b><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" aligncenter\" src=\"https:\/\/lh3.googleusercontent.com\/kwgc-qJkHbvWTIJwc3bSZdQILcf2MMM38tPCk1JXloCAifq4RtI9Hk-IXzd9sZFi4lD4gKMTa1nE45AuEvLWUTt3Mtxe6BdhnHS-oLZ2Cm5npwijwYjDrsj11KBv3Q_iwBltNGiV\" width=\"303\" height=\"269\" \/><\/p>\n<p><b><a href=\"https:\/\/www.couchbase.com\/products\/n1ql\">N1QL<\/a><\/b>is the SQL extended query language designed to enable your applications leverage the power of Engagement Databases &amp; JSON. N1QL has all sophistication and bells &amp; whistles necessary to deal with flexible schemas and the hierarchically structured JSON data. You can write simple declarative queries using N1QL to naturally deal with such data.<\/p>\n<p><b><strong><span style=\"font-weight: 400;\">Couchbase 5.0 brings a number of rich query functionality and performance optimizations in N1QL to meet the demands of customer engagement focussed applications. Many of the functionality and performance improvements also include corresponding enhancements in GSI Indexes to help N1QL fully leverage the optimizations. See <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/5.0\/introduction\/whats-new.html\">Couchbase Server 5.0 what\u2019s new<\/a> for complete list and details.<\/span><\/strong><\/b><\/p>\n<h1 style=\"font-weight: 600;\"><b><strong><span style=\"font-weight: 400;\">Adaptive Indexes<\/span><\/strong><\/b><\/h1>\n<p><b><strong><span style=\"font-weight: 400;\">Adaptive Indexes are special type of indexes in Couchbase that can index all or a set of specified fields of a document in extremely adaptable way. Unlike composite GSI indexes, such an index is generic in nature. Let me explain.. Adaptive Indexes can efficiently lookup any of the index-key values without restrictions such as prefix index-key ordering, in typical composite indexes. This enables efficient ad-hoc search queries that can use WHERE clause predicates on arbitrary fields without requiring to create multiple composite indexes or different combinations of index keys. <\/span><\/strong><\/b><\/p>\n<p><b><strong><span style=\"font-weight: 400;\">For example, consider a user profile use case. A person&#8217;s profile may need to be searched based on any of the personal attributes such as first name, last name, age, city, address, job, title, company, foaf, etc. Similarly, a hotel room availability may be searched based on wide criteria, such as room facilities, amenities, price, location, distance from specific points of interest etc. In such scenarios, traditional secondary composite indexes can&#8217;t be used effectively (see section <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/5.0\/n1ql\/n1ql-language-reference\/adaptive-indexing.html#untitled1__section_w31_bnm_5z\">Contrast with Composite Indexes<\/a> to understand the issues). Adaptive indexes solve this problem by creating one generic index that can run such ad hoc search queries effectively and efficiently.<\/span><\/strong><\/b><\/p>\n<p><b><strong><span style=\"font-weight: 400;\">For example, following figure(1) depicts how three different indexes I1, I2, I3 are needed for the 3 queries Q1, Q2, Q3. Further, a query on any other non-indexed fields is not possible without creating respective indexes. Moreover, \u00a0a query on just age, such as Q4, will not be able to use the index I2, as it needs the prefix index-key id aswell. Figure(2) shows how a single adaptive index can help queries on all fields irrespective of the index-key order.<\/span><\/strong><\/b><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium\" src=\"https:\/\/lh5.googleusercontent.com\/e3Bnp5H7R-0RaEwtWn-fbAz4Q8sUdbcyWQI2CFP3zbXZYXyYkwqgexM6a2g_smNzRVwYA0Q2BNrq2tTomHbV96ukrmbckMyvdSG2jUKAX4gkiGdwDu9MgfgPk2Nsh1OmEWtZV5vu\" width=\"1600\" height=\"822\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium\" src=\"https:\/\/lh3.googleusercontent.com\/a2v4hjOGW4PqgrpW8PY5dmEYGJAQ38b9sNrb1jA2IgdQt4abZGP8Q8uNfJRR23ClTPx1hoaVyHQpI_HkgOhPiuEg_Bw0IfPGkaNCe0cWgM3DXQcEaH8kOLPyPNfiwekT1EDaIu9y\" width=\"1600\" height=\"744\" \/><\/p>\n<p><b><strong><span style=\"font-weight: 400;\">Note that, adaptive indexes is not a panacea. These figures may give an impression that adaptive indexes are better than simple\/composite indexes. It is not entirely true. If you know queries (and index-keys) apriori, then it is always better to use normal secondary indexes. Because, they would be faster than adaptive indexes. Remember that, adaptive indexes can be much bigger in size as they index multiple\/all index keys and corresponding values. So, they may not perform as fast as simple secondary indexes. However, adaptive indexes solve the problems that secondary indexes can\u2019t with little overhead. <\/span><\/strong><\/b><\/p>\n<p><b><strong><span style=\"font-weight: 400;\">Life is all about trade-offs!! For more details and examples, refer to the <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/5.0\/n1ql\/n1ql-language-reference\/adaptive-indexing.html#untitled1\">Adaptive Index<\/a> documentation.<\/span><\/strong><\/b><\/p>\n<h1><span style=\"font-weight: 400;\">Powerful Subquery expressions<\/span><\/h1>\n<p><span style=\"font-weight: 400;\">N1QL is a powerful query language. It is SQL for JSON, and it has all necessary language extensions and expressions to deal with many subtleties in the JSON data modeling, such as:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Flexible schema<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Missing fields and data values. <\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Multi values array values<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nested data where a field of a document can be another fully formed JSON object<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">These kind of things don\u2019t exist in relational databases, and hence SQL din\u2019t have to deal with it. However, by design, N1QL is required to address all nuances in working with JSON data. In fact, these are the kind of complex data characteristics and flexibility, and scalability, and simplicity, that has gravitated modern day applications to an Engagement Database Platform like Couchbase.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">One such functionality to elegantly simplify working with array data is provided by N1QL\u2019s support for Subquery expressions on Arrays. This allows you to treat an array as a keyspace of documents, and enable you to use all power of N1QL on the array treating the array elements as documents of the keyspace. You may not realize, but that\u2019s much more powerful than how it reads ;-) <\/span><\/p>\n<p><span style=\"font-weight: 400;\">For example, consider following customer order data:<\/span><\/p>\n<pre class=\"lang:js decode:true\">{\r\n    \"type\": \"order\",\r\n    \"customerId\": \"Prasad_4444\",\r\n    \"order_number\": \"12345\",\r\n    \"products\": [\r\n        {\r\n            \"productId\": \"prod1\",\r\n            \"quantity\": 1,\r\n            \"price\": 39.99\r\n        },\r\n        {\r\n            \"productId\": \"prod2\",\r\n            \"quantity\": 2,\r\n            \"price\": 49.99\r\n        }\r\n    ]\r\n}<\/pre>\n<p dir=\"ltr\">Here, the array field <strong>\u00a0<\/strong><code>products[]<\/code><span id=\"_tmp_pre_2\">\u00a0<\/span> contains the order details about all the products ordered. Now, let\u2019s try to write a query to find the total value of the order. The query should run through each element of the \u00a0<code>products[]<\/code><span id=\"_tmp_pre_3\">\u00a0<\/span> array, and compute the sum of \u00a0<code>quantity * price<\/code>. Without using this feature (for ex: when using Couchbase 4.5), the query would look like:<\/p>\n<div class=\"CodeMirror cm-s-default\">\n<div class=\"CodeMirror-scroll\">\n<div class=\"CodeMirror-sizer\">\n<div class=\"CodeMirror-lines\">\n<div class=\"CodeMirror-code\">\n<div>\n<div class=\"CodeMirror-gutter-wrapper\">\n<pre class=\"lang:mysql decode:true\">SELECT d1.customerId, \r\n       ((SELECT RAW SUM(d2u.price * d2u.quantity)\r\n         FROM default d2 \r\n         USE KEYS meta(d1).id \r\n         UNNEST d2.products d2u\r\n         WHERE d2.customerId = d1.customerId\r\n         GROUP BY meta(d2).id))[0] AS total\r\nFROM default d1 ;<\/pre>\n<p>This query itself is made possible by the wonderful UNNEST clause in N1QL\u2019s SELECT statement. However, same query can be rewritten as below, using the Subquery Expression on Arrays:<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"CodeMirror cm-s-default\">\n<div class=\"CodeMirror-scroll\">\n<div class=\"CodeMirror-sizer\">\n<div class=\"CodeMirror-lines\">\n<div class=\"CodeMirror-code\">\n<div class=\"CodeMirror-gutter-wrapper\">\n<pre class=\"lang:mysql decode:true\">SELECT customerId,\r\n       (SELECT RAW SUM(p.price * p.quantity)\r\n        FROM d.products AS p)[0] AS total\r\nFROM default AS d;<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p dir=\"ltr\">Isn\u2019t it ridiculously simple and intuitive!! Infact, it would perform better too. That\u2019s how N1QL empowers application developers, and an Engagement Database enables customers tackle their data challenges in Systems of Engagement applications. There is a lot more to talk about this wonderful feature.. See <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/5.0\/n1ql\/n1ql-language-reference\/subqueries.html\" rel=\"nofollow\">documentation<\/a> and this <a href=\"https:\/\/www.couchbase.com\/blog\/using-n1ql-subquery-expressions-to-query-over-nested-couchbase-documents\/\" rel=\"nofollow\">blog<\/a>.<\/p>\n<p dir=\"ltr\">Btw, imagine modeling this simple data with an RDBMS and write equivalent query in SQL, or another NoSql database. I am sure that can be a fun problem to solve if you wanna lose your weekend!!<\/p>\n<h1>External Data Access &amp; Federated Queries<\/h1>\n<p dir=\"ltr\">One of the data explosion problems is that customer engaging applications may need to find &amp; integrate with relevant data from multiple internal &amp; external sources. It is more and more important for data-centric applications to stitch their data with external data sources provided by:<\/p>\n<ul>\n<li>\n<p dir=\"ltr\">Data service providers such as \u00a0<a href=\"https:\/\/maps.googleapis.com\/\" rel=\"nofollow\">Google geocoding API<\/a>, or <a href=\"https:\/\/developer.yahoo.com\/yql\/guide\/yql_url.html\" rel=\"nofollow\">Yahoo API<\/a> etc.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\">Data providers such as <a href=\"https:\/\/www.data.gov\/\" rel=\"nofollow\">www.data.gov<\/a><\/p>\n<\/li>\n<li>\n<p dir=\"ltr\">Micro services such as Couchbase Full Text Search, other Couchbase Clusters, or any other data sources that can provide JSON data.<\/p>\n<\/li>\n<\/ul>\n<p dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"fr-fin fr-dib\" src=\"https:\/\/lh4.googleusercontent.com\/6g5ksrguFSkBhBUm4XSjoBgzc4G8JJtnGkr2c3NVG11tTZZqWCoA4eNscMiuT4dLwq8iWoyetgIw1PwxbrB7yDPF8s2JHBufRMOICZtegrQ-JrT-bSG_207YQCIU-KRTpEsjiNrN\" width=\"624\" height=\"377\" \/><\/p>\n<p dir=\"ltr\">Couchbase Server 5.0 adds a new N1QL function CURL(), which enables N1QL queries to interact and integrate with external JSON data sources available over HTTP\/REST. This allows federated N1QL queries against external data sources. \u00a0For example:<\/p>\n<ul>\n<li>\n<p dir=\"ltr\">You can access Google geocoding API to get more location details about a given location stored in your database.<\/p>\n<\/li>\n<\/ul>\n<div class=\"CodeMirror cm-s-default\">\n<div class=\"CodeMirror-scroll\">\n<div class=\"CodeMirror-sizer\">\n<div class=\"CodeMirror-lines\">\n<div class=\"CodeMirror-code\">\n<div class=\"CodeMirror-gutter-wrapper\">\n<pre class=\"lang:mysql decode:true\">SELECT CURL(\"https:\/\/maps.googleapis.com\/maps\/api\/geocode\/json\",\r\n            {\r\n                 \"data\":[\"address=santa+cruz\",\"components=country:ES\"],\r\n                 \"get\":true\r\n            });<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\n<p dir=\"ltr\">You can use Yahoo finance data API to fetch more details about a given stock symbol stored in your database.<\/p>\n<\/li>\n<\/ul>\n<div class=\"CodeMirror cm-s-default\">\n<div class=\"CodeMirror-scroll\">\n<div class=\"CodeMirror-sizer\">\n<div class=\"CodeMirror-lines\">\n<div class=\"CodeMirror-code\">\n<div class=\"CodeMirror-gutter-wrapper\">\n<pre class=\"lang:mysql decode:true\">SELECT meta().id, to_number(hdp_low) AS hdp_low \r\nFROM bucket_name\r\nLET hdp_low = curl(\"https:\/\/query.yahooapis.com\/v1\/public\/yql\", \r\n                   {\"data\":\"q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22HDP%22)&amp;format=json&amp;diagnostics=true&amp;env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&amp;callback=\"\r\n                   }).query.results.quote.DaysLow\r\nWHERE to_number(hdp_low) &lt; $min_threshold;<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>Similarly, you can use FTS indexes in your N1QL query for full-text-searching, or access data from other Couchbase Clusters or other JSON data sources in your N1QL queries (using all the power of N1QL expressions on the external data). For more information, see <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/5.0\/n1ql\/n1ql-language-reference\/curl.html#topic_8_8\" rel=\"nofollow\">CURL Function<\/a>.<\/p>\n<h1>RBAC for N1QL Statements<\/h1>\n<p dir=\"ltr\">Role Based Access Control (RBAC) is vital for security administration in enterprise deployments. Couchbase Server 5.0 brings RBAC for applications whereby users can be added to the system with various predefined roles. Query service adds support for RBAC with following major features:<\/p>\n<ul>\n<li>\n<p dir=\"ltr\">Statement level roles are added for executing various N1QL statements such as SELECT, UPDATE, INSERT, and to access system keyspaces.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\">New N1QL statements GRANT and REVOKE are added aligned with the SQL standard.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\">New system keyspaces user_info, my_user_info, and applicable_roles are added to access various role assignments details.<\/p>\n<\/li>\n<\/ul>\n<p dir=\"ltr\">Find more information <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/5.0\/security\/security-authorization.html#authorization\" rel=\"nofollow\">here<\/a>.<\/p>\n<h1>Monitoring and Profiling N1QL Queries<\/h1>\n<p dir=\"ltr\">This feature enables fine grain and detailed query monitoring and profiling. This provides detailed information about various query phases, query operators involved in the processing of the query, and corresponding execution timings and characteristics (such as intermediate results). All monitoring information is also captured in various system keyspaces such as system:active_requests and system:completed_requests. This helps in diagnosing troubled queries and performance issues. Following picture shows the visual plan and query profile details in the query work bench.<\/p>\n<p dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" class=\"fr-fin fr-dib\" src=\"https:\/\/lh6.googleusercontent.com\/nePqgMCQkqCgam6FIM-GoRn3XYsbodrDe4AQTgL_drcAeD95PZCys72OGvRSltCC-6u2-d7SMB8gNu1Q773teSqh0aXjHJpsFle5kP12Iuwlqoial50ifg__B26iUXW8dMw4VW7v\" alt=\"Screen Shot 2017-02-19 at 1.49.18 AM.png\" width=\"624\" height=\"327\" \/><\/p>\n<p dir=\"ltr\">New query parameters are provided to enable, disable, and control the monitoring capabilities, and can be configured for a query engine or individual queries. See <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/5.0\/monitoring\/monitoring-n1ql-query.html#topic_nvs_ghr_dz\" rel=\"nofollow\">Monitoring N1QL Queries<\/a> for details.<\/p>\n<h1>N1QL Performance Improvements<\/h1>\n<p dir=\"ltr\">In Couchbase Server 5.0, N1QL and the Global Secondary Indexes together enable many performance optimizations.<\/p>\n<ul>\n<li>\n<p dir=\"ltr\">Complex Predicate Pushdown: Supports efficient and exact pushdown of complex AND\/OR predicates to index. This helps in:<\/p>\n<ul>\n<li>\n<p dir=\"ltr\">avoiding spurious results from Indexer in certain queries where predicates have range scans on prefixing index-keys.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\">efficiently using multiple indexes for different conditions of an OR predicate etc.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p dir=\"ltr\">Index Projection: In the version 5.0, N1QL adds support to request only the required information from Index, and thus avoid any unnecessary processing.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\">Support is added to create indexes with ASC\/DESC specified for individual index keys, and leverage index-order for queries with aligned ORDER BY clause.<\/p>\n<\/li>\n<li>\n<p dir=\"ltr\">Operators such as OFFSET, MAX(), MIN(), DISTINCT, COUNT (DISTINCT field) are pushed down to indexer.<\/p>\n<\/li>\n<\/ul>\n<p dir=\"ltr\">For more details, see <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/5.0\/performance\/index_pushdowns.html#index_pushdowns\" rel=\"nofollow\">Index Pushdown Optimizations<\/a>.<\/p>\n<h1>Summary<\/h1>\n<p dir=\"ltr\">I am sure this is pretty exciting and overwhelming. We are super excited to share our vision on Engagement Databases and innovate N1QL to help you gear up!! \u00a0In this article we talked about many rich N1QL feature and performance enhancements in the Couchbase Server 5.0 Engagement Database Platform. Drop a line if you have any comments or questions. Cheers!!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Couchbase Engagement Database Platform Woo-Hoo!!! Have you heard of Engagement Databases? I am sure, \u201cNo\u201d, not until Couchbase announced it with 5.0 release. In today\u2019s digital economy, success of a business is dependent on its ability to leverage successful digital [&hellip;]<\/p>\n","protected":false},"author":70,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1812],"tags":[1971,1771,1903],"ppma_author":[8935],"class_list":["post-4037","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-n1ql-query","tag-couchbase-5-0","tag-curl","tag-rbac"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Gear up with N1QL to the era of Engagement Databases - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"This article talks about many rich N1QL feature and performance enhancements in the Couchbase Server 5.0 Engagement Database Platform.\" \/>\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\/gear-n1ql-era-engagement-databases\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gear up with N1QL to the era of Engagement Databases\" \/>\n<meta property=\"og:description\" content=\"This article talks about many rich N1QL feature and performance enhancements in the Couchbase Server 5.0 Engagement Database Platform.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/gear-n1ql-era-engagement-databases\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-09-21T22:22:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T00:23:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lh3.googleusercontent.com\/kwgc-qJkHbvWTIJwc3bSZdQILcf2MMM38tPCk1JXloCAifq4RtI9Hk-IXzd9sZFi4lD4gKMTa1nE45AuEvLWUTt3Mtxe6BdhnHS-oLZ2Cm5npwijwYjDrsj11KBv3Q_iwBltNGiV\" \/>\n<meta name=\"author\" content=\"Prasad Varakur, 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=\"Prasad Varakur, Principal Product Manager, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/gear-n1ql-era-engagement-databases\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/gear-n1ql-era-engagement-databases\\\/\"},\"author\":{\"name\":\"Prasad Varakur, Principal Product Manager, Couchbase\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/c649b2296584f6b734c5a21681137e46\"},\"headline\":\"Gear up with N1QL to the era of Engagement Databases\",\"datePublished\":\"2017-09-21T22:22:15+00:00\",\"dateModified\":\"2025-06-14T00:23:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/gear-n1ql-era-engagement-databases\\\/\"},\"wordCount\":1681,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/gear-n1ql-era-engagement-databases\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Couchbase 5.0\",\"curl\",\"RBAC\"],\"articleSection\":[\"SQL++ \\\/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/gear-n1ql-era-engagement-databases\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/gear-n1ql-era-engagement-databases\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/gear-n1ql-era-engagement-databases\\\/\",\"name\":\"Gear up with N1QL to the era of Engagement Databases - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/gear-n1ql-era-engagement-databases\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/gear-n1ql-era-engagement-databases\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-09-21T22:22:15+00:00\",\"dateModified\":\"2025-06-14T00:23:13+00:00\",\"description\":\"This article talks about many rich N1QL feature and performance enhancements in the Couchbase Server 5.0 Engagement Database Platform.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/gear-n1ql-era-engagement-databases\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/gear-n1ql-era-engagement-databases\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/gear-n1ql-era-engagement-databases\\\/#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\\\/gear-n1ql-era-engagement-databases\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Gear up with N1QL to the era of Engagement Databases\"}]},{\"@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\\\/c649b2296584f6b734c5a21681137e46\",\"name\":\"Prasad Varakur, Principal Product Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3dd2299380c7af4e8a9732a0465d1c082c95eaff26cdf4abf54816d9b693043a?s=96&d=mm&r=g5d664f4b9aadb80e438fd06cce0d151e\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3dd2299380c7af4e8a9732a0465d1c082c95eaff26cdf4abf54816d9b693043a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3dd2299380c7af4e8a9732a0465d1c082c95eaff26cdf4abf54816d9b693043a?s=96&d=mm&r=g\",\"caption\":\"Prasad Varakur, Principal Product Manager, Couchbase\"},\"description\":\"Prasad Varakur is a Principal Product Manager, Couchbase. Prasad is Product and Engineering leader in Databases(SQL, noSQL, Bigdata) &amp; Distributed systems.\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/es\\\/author\\\/prasad-varakur\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Gear up with N1QL to the era of Engagement Databases - The Couchbase Blog","description":"Este art\u00edculo habla de muchas mejoras en las caracter\u00edsticas y el rendimiento de N1QL en la Plataforma de Base de Datos de Compromiso Couchbase Server 5.0.","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\/gear-n1ql-era-engagement-databases\/","og_locale":"es_MX","og_type":"article","og_title":"Gear up with N1QL to the era of Engagement Databases","og_description":"This article talks about many rich N1QL feature and performance enhancements in the Couchbase Server 5.0 Engagement Database Platform.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/gear-n1ql-era-engagement-databases\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-09-21T22:22:15+00:00","article_modified_time":"2025-06-14T00:23:13+00:00","og_image":[{"url":"https:\/\/lh3.googleusercontent.com\/kwgc-qJkHbvWTIJwc3bSZdQILcf2MMM38tPCk1JXloCAifq4RtI9Hk-IXzd9sZFi4lD4gKMTa1nE45AuEvLWUTt3Mtxe6BdhnHS-oLZ2Cm5npwijwYjDrsj11KBv3Q_iwBltNGiV","type":"","width":"","height":""}],"author":"Prasad Varakur, Principal Product Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prasad Varakur, Principal Product Manager, Couchbase","Est. reading time":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/gear-n1ql-era-engagement-databases\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/gear-n1ql-era-engagement-databases\/"},"author":{"name":"Prasad Varakur, Principal Product Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c649b2296584f6b734c5a21681137e46"},"headline":"Gear up with N1QL to the era of Engagement Databases","datePublished":"2017-09-21T22:22:15+00:00","dateModified":"2025-06-14T00:23:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/gear-n1ql-era-engagement-databases\/"},"wordCount":1681,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/gear-n1ql-era-engagement-databases\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["Couchbase 5.0","curl","RBAC"],"articleSection":["SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/gear-n1ql-era-engagement-databases\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/gear-n1ql-era-engagement-databases\/","url":"https:\/\/www.couchbase.com\/blog\/gear-n1ql-era-engagement-databases\/","name":"Gear up with N1QL to the era of Engagement Databases - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/gear-n1ql-era-engagement-databases\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/gear-n1ql-era-engagement-databases\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-09-21T22:22:15+00:00","dateModified":"2025-06-14T00:23:13+00:00","description":"Este art\u00edculo habla de muchas mejoras en las caracter\u00edsticas y el rendimiento de N1QL en la Plataforma de Base de Datos de Compromiso Couchbase Server 5.0.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/gear-n1ql-era-engagement-databases\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/gear-n1ql-era-engagement-databases\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/gear-n1ql-era-engagement-databases\/#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\/gear-n1ql-era-engagement-databases\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Gear up with N1QL to the era of Engagement Databases"}]},{"@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\/c649b2296584f6b734c5a21681137e46","name":"Prasad Varakur, Director Principal de Producto, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/3dd2299380c7af4e8a9732a0465d1c082c95eaff26cdf4abf54816d9b693043a?s=96&d=mm&r=g5d664f4b9aadb80e438fd06cce0d151e","url":"https:\/\/secure.gravatar.com\/avatar\/3dd2299380c7af4e8a9732a0465d1c082c95eaff26cdf4abf54816d9b693043a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3dd2299380c7af4e8a9732a0465d1c082c95eaff26cdf4abf54816d9b693043a?s=96&d=mm&r=g","caption":"Prasad Varakur, Principal Product Manager, Couchbase"},"description":"Prasad Varakur es director de producto principal de Couchbase. Prasad es l\u00edder de producto e ingenier\u00eda en bases de datos (SQL, noSQL, Bigdata) y sistemas distribuidos.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/prasad-varakur\/"}]}},"acf":[],"authors":[{"term_id":8935,"user_id":70,"is_guest":0,"slug":"prasad-varakur","display_name":"Prasad Varakur, Principal Product Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/3dd2299380c7af4e8a9732a0465d1c082c95eaff26cdf4abf54816d9b693043a?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\/4037","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\/70"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=4037"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/4037\/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=4037"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=4037"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=4037"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=4037"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}