{"id":4295,"date":"2017-12-04T18:26:28","date_gmt":"2017-12-05T02:26:28","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4295"},"modified":"2025-11-07T04:29:38","modified_gmt":"2025-11-07T12:29:38","slug":"comparing-couchbase-views-couchbase-n1ql-indexing","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/","title":{"rendered":"Comparing Couchbase Views with Couchbase N1QL &#038; Indexing."},"content":{"rendered":"<p>As Couchbase data platform evolved, services like N1QL and GSI Indexing handled the use cases Couchbase VIEWS used to handle and much more.\u00a0 It&#8217;s logical to ask the comparative question between them.\u00a0 Here is a table comparing both.\u00a0 This is intended for developers and architects familiar with both them and not as an introductory article. Use the links here to learn more and play with the respective features.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-4300\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/12\/Screen-Shot-2017-12-04-at-10.43.04-PM-300x136.png\" alt=\"\" width=\"752\" height=\"341\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-04-at-10.43.04-PM-300x136.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-04-at-10.43.04-PM-1024x466.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-04-at-10.43.04-PM-768x349.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-04-at-10.43.04-PM-20x9.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-04-at-10.43.04-PM-1320x600.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/Screen-Shot-2017-12-04-at-10.43.04-PM.png 1486w\" sizes=\"auto, (max-width: 752px) 100vw, 752px\" \/><\/p>\n<div class=\"responsive-table\">\n<table style=\"width:100%\" border=\"1\">\n<tbody>\n<tr style=\"width:100%;\" style=\"padding:10px;\">\n<th style=\"padding:10px;\"><strong>Topic<\/strong><\/th>\n<th style=\"padding:10px;\"><strong>Couchbase Map-Reduce Views<\/strong><\/th>\n<th style=\"padding:10px;\"><strong>Couchbase N1QL+GSI<\/strong><\/th>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Approach<\/td>\n<td style=\"padding:10px;\">Based on user-defined map() and reduce() functions that operate on data in the background. Because map() and reduce() is written in Javascript, you can code complex logic within those functions.<\/td>\n<td style=\"padding:10px;\">Based on declarative N1QL query (SQL for JSON).\u00a0 Uses appropriate indexes to optimize execution and executed dynamically by orchestrating Query-Index-data services.\u00a0 N1QL enables easily writeable and readable queries for JSON.\u00a0 Because it\u2019s inspired by SQL, it\u2019s flexible, composable.\u00a0 Because, it\u2019s extended for JSON, it works on rich JSON data.\u00a0 Uses 4-valued boolean logic (true, false,NULL, MISSING)<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">More Info<\/td>\n<td style=\"padding:10px;\">Couchbase Docs:\u00a0<a href=\"https:\/\/bit.ly\/2jQrY11\">https:\/\/bit.ly\/2jQrY11<\/a><\/td>\n<td style=\"padding:10px;\">\n1. <a href=\"https:\/\/query.couchbase.com\">https:\/\/query.couchbase.com<\/a><br \/>\n2. <a href=\"https:\/\/www.couchbase.com\/blog\/n1ql-practical-guide-second-edition\/\">https:\/\/www.couchbase.com\/blog\/n1ql-practical-guide-second-edition\/<\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Querying<\/td>\n<td style=\"padding:10px;\"><strong>Query based on<\/strong><\/p>\n<p style=\"font-size:14px;\">\n1. Single key<br \/>\n2. Set of keys<br \/>\n3. Start-End key<br \/>\n4. Start-End document keys<br \/>\n5. Group BY, Aggregation<br \/>\n6. Pagination<\/p>\n<\/td>\n<td style=\"padding:10px;\"><strong>Query Statements<\/strong><\/p>\n<p style=\"font-size:14px;\">1. SELECT<br \/>\n2. INSERT<br \/>\n3. UPDATE<br \/>\n4. DELETE<br \/>\n5. MERGE<br \/>\n6. INFER<br \/>\n7. EXPLAIN<br \/>\n<strong>Query Operations:<\/strong><br \/>\n1. Single key<br \/>\n2. Set of keys<br \/>\n3. Range keys<br \/>\n4. Range of document keys<br \/>\n5. Arbitrarily complex predicates<br \/>\n6. INNER JOIN, LEFT OUTER JOIN<br \/>\n7. NEST, UNNEST<br \/>\n8. GROUP BY<br \/>\n9. Aggregation<br \/>\n10. Pagination (OFFSET, LIMIT)<br \/>\n11. Optimization<br \/>\n12. ORDER BY<br \/>\n13. HAVING<br \/>\n14. Subqueries (correlated, non-correlated)<br \/>\n15. Derived tables<br \/>\n16. SET operations: UNION, UNION ALL, EXCEPT, EXCEPT ALL, INTERSECT<br \/>\n17. Highly composable queries, meaning these operations can be simply combined with each other to express complex business questions and operations easily.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Indexing<\/td>\n<td style=\"padding:10px;\">Simple index for views.<\/td>\n<td style=\"padding:10px;\">\n \t1. Primary Index<br \/>\n \t2. Named primary index<br \/>\n \t3. Secondary index<br \/>\n \t4. Composite Secondary Index<br \/>\n 5. Functional index<br \/>\n \t6. Array Index<br \/>\n \t7. ALL array<br \/>\n \t8. ALL DISTINCT array<br \/>\n \t9. Partial Index<br \/>\n \t10. Adaptive Index<br \/>\n \t11. Duplicate Indices<br \/>\n \t12. Covering Index<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Partitioning<\/td>\n<td style=\"padding:10px;\">Aligned to data partitioning.<\/td>\n<td style=\"padding:10px;\">Independent services.<\/p>\n<p><span style=\"font-size:14px;\">N1QL and GSI scales independent of Data service and each other.<\/span><\/td>\n<\/tr>\n<td style=\"padding:10px;\">Scale<\/td>\n<td style=\"padding:10px;\">Scales with data service<\/td>\n<td style=\"padding:10px;\">Independent scaling via Multidimensional scaling (MDS)<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Fetch with document key<\/td>\n<td style=\"padding:10px;\">Because the data is partitioned on document key, fetches the document directly from the node<\/td>\n<td style=\"padding:10px;\">Specify the query via USE KEYS clause.<\/p>\n<p><span style=\"font-size:14px;\">Because the data is partitioned on document key, fetches the document directly from the node<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Fetch with Index key<\/td>\n<td style=\"padding:10px;\">Scatter-Gather<\/td>\n<td style=\"padding:10px;\">Each index scan on a single node; Data on multiple nodes.<\/p>\n<p><span style=\"font-size:14px;\">Post processing in Query node<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Range scan<\/td>\n<td style=\"padding:10px;\">Scatter-Gather<\/td>\n<td style=\"padding:10px;\">Index scan on a single node.<\/p>\n<p><span style=\"font-size:14px;\">Post processing in Query node<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Grouping, aggregation<\/td>\n<td style=\"padding:10px;\">Built-in with Views API<\/td>\n<td style=\"padding:10px;\">Built into N1QL<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Caching<\/td>\n<td style=\"padding:10px;\">File system<\/td>\n<td style=\"padding:10px;\">Index buffer pool<\/p>\n<p><span style=\"font-size:14px;\">Data cache<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Storage<\/td>\n<td style=\"padding:10px;\">Couchstore<\/td>\n<td style=\"padding:10px;\">Plasma storage engine (5.0 &amp; above)<\/p>\n<p><span style=\"font-size:14px;\">Memory Optimized Index (4.5 and above)<\/span><\/p>\n<p><span style=\"font-size:14px;\">ForestDB (community)<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Availability<\/td>\n<td style=\"padding:10px;\">Replica Based<\/td>\n<td style=\"padding:10px;\">5.0: Replicas<\/p>\n<p><span style=\"font-size:14px;\">4.x: Equivalent Indexes<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Query Latency<\/p>\n<p><span style=\"font-size:14px;\">(Simple queries)<\/span><\/td>\n<td style=\"padding:10px;\">10 milliseconds to 100 milliseconds<\/td>\n<td style=\"padding:10px;\">5 milliseconds+<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Query Throughput<\/p>\n<p><span style=\"font-size:14px;\">(Simple queries)<\/span><\/td>\n<td style=\"padding:10px;\">3K to 4K queries per second<\/td>\n<td style=\"padding:10px;\">40K queries per second<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Scalability<\/td>\n<td style=\"padding:10px;\">Moderate (scaling tied to data service)<\/td>\n<td style=\"padding:10px;\">High (independent scaling of index and query services: MDS)<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Applicability<\/td>\n<td style=\"padding:10px;\">Aggregations, best of large scale aggregations for low and moderate latency requirements.\u00a0 Map-reduce operations on the data is done in the background as the data is modified.<\/td>\n<td style=\"padding:10px;\">Best for attribute based lookup, range scans, complex select-join-project-array<\/p>\n<p><span style=\"font-size:14px;\">Operations.\u00a0 Supports grouping, aggregation and ordering &#8212; these operations are done dynamically as part of query execution.<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Application requirements<\/td>\n<td style=\"padding:10px;\">Report on well defined metrics<\/p>\n<p><span style=\"font-size:14px;\">Large scale aggregations<\/span><\/p>\n<p><span style=\"font-size:14px;\">Latency sensitive<\/span><\/td>\n<td style=\"padding:10px;\">Secondary key lookups<\/p>\n<p><span style=\"font-size:14px;\">Range Scans<\/span><\/p>\n<p><span style=\"font-size:14px;\">Operational aggregations<\/span><\/p>\n<p><span style=\"font-size:14px;\">Filtered queries<\/span><\/p>\n<p><span style=\"font-size:14px;\">Ad-hoc queries with complex predicates, joins, aggregations, app search, pagination, secondary key based updates.<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Spatial<\/td>\n<td style=\"padding:10px;\">Supported via Spatial Views<\/td>\n<td style=\"padding:10px;\">Not directly.<\/p>\n<p><span style=\"font-size:14px;\"><a href=\"https:\/\/dzone.com\/articles\/speed-up-spatial-search-in-couchbase-n1ql\">https:\/\/dzone.com\/articles\/speed-up-spatial-search-in-couchbase-n1ql<\/a><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Consistency<\/td>\n<td style=\"padding:10px;\">Stale = UPDATE_AFTER<\/p>\n<p><span style=\"font-size:14px;\">Stale = OK<\/p>\n<p><span style=\"font-size:14px;\">Stale = FALSE<\/td>\n<td style=\"padding:10px;\">Unbounded (stale = OK)<\/p>\n<p><span style=\"font-size:14px;\">AT_PLUS (read your own writes)<\/span><\/p>\n<p><span style=\"font-size:14px;\">REQUEST_PLUS (read after index updates up to now(). Stale = False).<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px;\">Tools<\/td>\n<td style=\"padding:10px;\">Web console<\/td>\n<td style=\"padding:10px;\">Web console, Developer workbench, Query monitoring, Query Profiling, Visual explain, INFER.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>As Couchbase data platform evolved, services like N1QL and GSI Indexing handled the use cases Couchbase VIEWS used to handle and much more.\u00a0 It&#8217;s logical to ask the comparative question between them.\u00a0 Here is a table comparing both.\u00a0 This is [&hellip;]<\/p>\n","protected":false},"author":55,"featured_media":4301,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1815,1821,1819,9417,1812],"tags":[1696,1248,1641],"ppma_author":[8929],"class_list":["post-4295","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-best-practices-and-tutorials","category-couchbase-architecture","category-data-modeling","category-performance","category-n1ql-query","tag-indexing","tag-mapreduce","tag-secondary-indexing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v26.3) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Comparing Couchbase Views with Couchbase N1QL &amp; Indexing<\/title>\n<meta name=\"description\" content=\"The blog focuses on the table comparison between Couchbase Map-Reduce Views and Couchbase N1QL+GSI indexing. This is intended for developers and architects.\" \/>\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\/comparing-couchbase-views-couchbase-n1ql-indexing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comparing Couchbase Views with Couchbase N1QL &amp; Indexing.\" \/>\n<meta property=\"og:description\" content=\"The blog focuses on the table comparison between Couchbase Map-Reduce Views and Couchbase N1QL+GSI indexing. This is intended for developers and architects.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-12-05T02:26:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-07T12:29:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/questions.png\" \/>\n\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Keshav Murthy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rkeshavmurthy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Keshav Murthy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/\"},\"author\":{\"name\":\"Keshav Murthy\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636\"},\"headline\":\"Comparing Couchbase Views with Couchbase N1QL &#038; Indexing.\",\"datePublished\":\"2017-12-05T02:26:28+00:00\",\"dateModified\":\"2025-11-07T12:29:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/\"},\"wordCount\":652,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/questions.png\",\"keywords\":[\"Indexing\",\"MapReduce\",\"Secondary Indexing\"],\"articleSection\":[\"Application Design\",\"Best Practices and Tutorials\",\"Couchbase Architecture\",\"Data Modeling\",\"High Performance\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/\",\"name\":\"Comparing Couchbase Views with Couchbase N1QL & Indexing\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/questions.png\",\"datePublished\":\"2017-12-05T02:26:28+00:00\",\"dateModified\":\"2025-11-07T12:29:38+00:00\",\"description\":\"The blog focuses on the table comparison between Couchbase Map-Reduce Views and Couchbase N1QL+GSI indexing. This is intended for developers and architects.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/questions.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/questions.png\",\"width\":512,\"height\":512},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Comparing Couchbase Views with Couchbase N1QL &#038; Indexing.\"}]},{\"@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\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@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\/c261644262bf98e146372fe647682636\",\"name\":\"Keshav Murthy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4e51d72fc07c662aa791316deafffac4\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g\",\"caption\":\"Keshav Murthy\"},\"description\":\"Keshav Murthy is a Vice President at Couchbase R&amp;D. Previously, he was at MapR, IBM, Informix, Sybase, with more than 20 years of experience in database design &amp; development. He lead the SQL and NoSQL R&amp;D team at IBM Informix. He has received two President's Club awards at Couchbase, two Outstanding Technical Achievement Awards at IBM. Keshav has a bachelor's degree in Computer Science and Engineering from the University of Mysore, India, and has received twenty four US patents.\",\"sameAs\":[\"https:\/\/blog.planetnosql.com\/\",\"https:\/\/x.com\/rkeshavmurthy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/keshav-murthy\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Comparing Couchbase Views with Couchbase N1QL & Indexing","description":"The blog focuses on the table comparison between Couchbase Map-Reduce Views and Couchbase N1QL+GSI indexing. This is intended for developers and architects.","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\/comparing-couchbase-views-couchbase-n1ql-indexing\/","og_locale":"en_US","og_type":"article","og_title":"Comparing Couchbase Views with Couchbase N1QL & Indexing.","og_description":"The blog focuses on the table comparison between Couchbase Map-Reduce Views and Couchbase N1QL+GSI indexing. This is intended for developers and architects.","og_url":"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-12-05T02:26:28+00:00","article_modified_time":"2025-11-07T12:29:38+00:00","og_image":[{"width":512,"height":512,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/questions.png","type":"image\/png"}],"author":"Keshav Murthy","twitter_card":"summary_large_image","twitter_creator":"@rkeshavmurthy","twitter_misc":{"Written by":"Keshav Murthy","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/"},"author":{"name":"Keshav Murthy","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636"},"headline":"Comparing Couchbase Views with Couchbase N1QL &#038; Indexing.","datePublished":"2017-12-05T02:26:28+00:00","dateModified":"2025-11-07T12:29:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/"},"wordCount":652,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/questions.png","keywords":["Indexing","MapReduce","Secondary Indexing"],"articleSection":["Application Design","Best Practices and Tutorials","Couchbase Architecture","Data Modeling","High Performance","SQL++ \/ N1QL Query"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/","url":"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/","name":"Comparing Couchbase Views with Couchbase N1QL & Indexing","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/questions.png","datePublished":"2017-12-05T02:26:28+00:00","dateModified":"2025-11-07T12:29:38+00:00","description":"The blog focuses on the table comparison between Couchbase Map-Reduce Views and Couchbase N1QL+GSI indexing. This is intended for developers and architects.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/questions.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/12\/questions.png","width":512,"height":512},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/comparing-couchbase-views-couchbase-n1ql-indexing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Comparing Couchbase Views with Couchbase N1QL &#038; Indexing."}]},{"@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":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@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\/c261644262bf98e146372fe647682636","name":"Keshav Murthy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4e51d72fc07c662aa791316deafffac4","url":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","caption":"Keshav Murthy"},"description":"Keshav Murthy is a Vice President at Couchbase R&amp;D. Previously, he was at MapR, IBM, Informix, Sybase, with more than 20 years of experience in database design &amp; development. He lead the SQL and NoSQL R&amp;D team at IBM Informix. He has received two President's Club awards at Couchbase, two Outstanding Technical Achievement Awards at IBM. Keshav has a bachelor's degree in Computer Science and Engineering from the University of Mysore, India, and has received twenty four US patents.","sameAs":["https:\/\/blog.planetnosql.com\/","https:\/\/x.com\/rkeshavmurthy"],"url":"https:\/\/www.couchbase.com\/blog\/author\/keshav-murthy\/"}]}},"authors":[{"term_id":8929,"user_id":55,"is_guest":0,"slug":"keshav-murthy","display_name":"Keshav Murthy","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","author_category":"","last_name":"Murthy","first_name":"Keshav","job_title":"","user_url":"https:\/\/blog.planetnosql.com\/","description":"Keshav Murthy is a Vice President at Couchbase R&amp;D. Previously, he was at MapR, IBM, Informix, Sybase, with more than 20 years of experience in database design &amp; development. He lead the SQL and NoSQL R&amp;D team at IBM Informix. He has received two President's Club awards at Couchbase, two Outstanding Technical Achievement Awards at IBM. Keshav has a bachelor's degree in Computer Science and Engineering from the University of Mysore, India,  holds ten US patents and has three US patents pending."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/55"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=4295"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4295\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/4301"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=4295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=4295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=4295"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=4295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}