{"id":9756,"date":"2021-08-16T00:00:46","date_gmt":"2021-08-16T07:00:46","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=9756"},"modified":"2025-06-13T18:43:32","modified_gmt":"2025-06-14T01:43:32","slug":"simplifying-query-index-with-collections","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/simplifying-query-index-with-collections\/","title":{"rendered":"N1QL \ucffc\ub9ac\ub97c \uac04\uc18c\ud654\ud558\uace0 \uceec\ub809\uc158\uc73c\ub85c \ub9c8\uc774\uadf8\ub808\uc774\uc158\ud558\ub294 5\ub2e8\uacc4"},"content":{"rendered":"<p><strong>\uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c NoSQL\ub85c \ub370\uc774\ud130\ub97c \ub9c8\uc774\uadf8\ub808\uc774\uc158\ud558\ub824\ub294 \uacbd\uc6b0,<\/strong> \uadf8\ub807\ub2e4\uba74 \uc9c0\uae08\uc774 \uadf8 \uc5b4\ub290 \ub54c\ubcf4\ub2e4 \uc88b\uc740 \uc2dc\uae30\uc785\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-server-7-0-release\/?ref=blog\" target=\"_blank\" rel=\"noopener\">\ucd5c\uadfc \ucd9c\uc2dc\ub41c Couchbase 7.0\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/a> \ubc94\uc704 \ubc0f \uceec\ub809\uc158\uc744 \uc18c\uac1c\ud569\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/json-database\/?ref=blog\" target=\"_blank\" rel=\"noopener\">JSON \ub370\uc774\ud130<\/a>. \ubb34\uc5c7\ubcf4\ub2e4\ub3c4 \ubc94\uc704\uc640 \uceec\ub809\uc158\uc744 \uc0ac\uc6a9\ud558\uba74 \ud604\uc7ac\uc758 \uad00\uacc4\ud615 \ub370\uc774\ud130 \ubaa8\ub378\uc744 Couchbase \ubb38\uc11c \ub370\uc774\ud130 \ubaa8\ub378\ub85c \ub354 \uac04\ub2e8\ud558\uace0 \uc27d\uac8c \ub9c8\uc774\uadf8\ub808\uc774\uc158\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uacb0\uacfc\uc801\uc73c\ub85c \uae30\uc5c5\uc740 Couchbase\uc758 \ubd84\uc0b0\ud615 \uacf5\uc720 \uc544\ud0a4\ud14d\ucc98, \uace0\uac00\uc6a9\uc131 \ubc0f \uc218\ud3c9\uc801 \ud655\uc7a5\uc131\uc758 \uc774\uc810\uc744 \ub204\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uadf8\ub9ac\uace0 Couchbase\uc758 \uc624\ub79c \uace0\uac1d \ub610\ub294 \uc0ac\uc6a9\uc790\ub77c\uba74 - <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/scopes-and-collections-for-modern-multi-tenant-applications-couchbase-7-0\/?ref=blog\" target=\"_blank\" rel=\"noopener\">\ubc94\uc704 \ubc0f \uceec\ub809\uc158\uc740 \ub370\uc774\ud130 \uad00\ub9ac \ubc0f \uad6c\uc131 \uce21\uba74\uc5d0\uc11c \ub9ce\uc740 \uac83\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/a>.<\/p>\n<p>\ud558\uc9c0\ub9cc NoSQL\uc744 \ucc98\uc74c \uc0ac\uc6a9\ud558\ub4e0 Couchbase \ubca0\ud14c\ub791\uc774\ub4e0 \uc0c1\uad00\uc5c6\uc774 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ucffc\ub9ac\ub294 -. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/products\/n1ql\/?ref=blog\" target=\"_blank\" rel=\"noopener\">N1QL \ucffc\ub9ac \uc5b8\uc5b4 \uc0ac\uc6a9<\/a> - \uc0c8\ub85c\uc6b4 \ubc94\uc704 \ubc0f \uceec\ub809\uc158 \ub370\uc774\ud130 \ubaa8\ub378\uc758 \uc774\uc810\uc744 \ud65c\uc6a9\ud558\uc138\uc694. N1QL \ucffc\ub9ac\ub97c \uac04\uc18c\ud654\ud558\ub824\uba74 \uc774\uc804 Bucket \ubaa8\ub378\uc5d0\uc11c \uc0c8\ub85c\uc6b4 Collections \ubaa8\ub378\ub85c Couchbase \ub370\uc774\ud130\ub97c \ub9c8\uc774\uadf8\ub808\uc774\uc158\ud574\uc57c \ud569\ub2c8\ub2e4. \ub2e4\ud589\ud788\ub3c4 \ub9c8\uc774\uadf8\ub808\uc774\uc158\uc740 5\ub2e8\uacc4\uc758 \uac04\ub2e8\ud55c \uacfc\uc815\uc73c\ub85c \uc774\ub8e8\uc5b4\uc9d1\ub2c8\ub2e4.<\/p>\n<p>\ubc94\uc704 \ubc0f \uceec\ub809\uc158\uc5d0 \ub300\ud55c \uac80\ud1a0\ubd80\ud130 \uc2dc\uc791\ud558\uaca0\uc2b5\ub2c8\ub2e4. (<a href=\"#data-migration\">\ub610\ub294 \uc900\ube44\uac00 \ub418\uc5c8\ub2e4\uba74 \ub9c8\uc774\uadf8\ub808\uc774\uc158 \uac00\uc774\ub4dc\ub85c \ubc14\ub85c \uac74\ub108\ub6f0\uc138\uc694.<\/a>.)<\/p>\n<h2>\uc7a0\uae50\ub9cc\uc694, \ubc94\uc704 \ubc0f \uceec\ub809\uc158\uc774\ub780 \ubb34\uc5c7\uc778\uac00\uc694?<\/h2>\n<p>\ubc94\uc704\ub294 \uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4(RDBMS)\uc758 \uc2a4\ud0a4\ub9c8\uc5d0 \ud574\ub2f9\ud569\ub2c8\ub2e4. Couchbase \uceec\ub809\uc158\uc744 \uc704\ud55c \ub17c\ub9ac\uc801 \ucee8\ud14c\uc774\ub108\uc785\ub2c8\ub2e4. \ubaa8\ub4e0 Couchbase \ubc84\ud0b7\uc5d0\ub294 \uae30\ubcf8 Scope\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uae30\ubcf8 \ucee8\ud14c\uc774\ub108\ub97c \uc9c1\uc811 \uc0ac\uc6a9\ud558\uac70\ub098 \uc9c1\uc811 \uc815\uc758\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uceec\ub809\uc158\uc740 RDBMS\uc758 \ud14c\uc774\ube14\uacfc \uc720\uc0ac\ud569\ub2c8\ub2e4. \ubaa8\ub4e0 \ubc94\uc704\uc5d0\ub294 \uae30\ubcf8 \uceec\ub809\uc158\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uceec\ub809\uc158 <em>can<\/em> \ub97c \uc0ac\uc6a9\ud558\uc5ec \uc720\uc0ac\ud55c \uc720\ud615\uc758 \ub808\ucf54\ub4dc(\uc608: RDBMS \ud14c\uc774\ube14)\ub97c \uc800\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4, <strong>\uceec\ub809\uc158\uc5d0 \uc800\uc7a5\ud560 \uc218 \uc788\ub294 \ud56d\ubaa9\uc5d0\ub294 \uc2a4\ud0a4\ub9c8 \uc81c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.<\/strong>. \uc804\uc801\uc73c\ub85c \uadc0\ud558\uc5d0\uac8c \ub2ec\ub824 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 \ub2e4\uc591\ud55c \uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uac1c\ub150\uc774 \ub2e4\uc74c\uacfc \uac19\uc740 \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc5d0 \uc5b4\ub5bb\uac8c \ub9e4\ud551\ub418\ub294\uc9c0 \ubcf4\uc5ec\uc8fc\ub294 \uadf8\ub9bc\uc785\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/products\/server\/?ref=blog\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84<\/a> 7.0:<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9760\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/Screen-Shot-2020-11-13-at-12.33.49-PM.png\" alt=\"\" width=\"787\" height=\"176\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.33.49-PM.png 2154w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.33.49-PM-300x67.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.33.49-PM-1024x229.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.33.49-PM-768x172.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.33.49-PM-1536x344.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.33.49-PM-2048x458.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.33.49-PM-20x4.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.33.49-PM-1320x295.png 1320w\" sizes=\"auto, (max-width: 787px) 100vw, 787px\" \/><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\ubcf4\uc2dc\ub2e4\uc2dc\ud53c, \uc774\uc81c \uad00\uacc4\ud615 \ub370\uc774\ud130\uc640 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/resources\/why-nosql\/?ref=blog\" target=\"_blank\" rel=\"noopener\">NoSQL \ub370\uc774\ud130 \ubaa8\ub378<\/a> \uc5d0\uc11c \ubc94\uc704 \ubc0f \uceec\ub809\uc158\uc744 \uc0ac\uc6a9\ud560 \ub54c <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/products\/capella\/\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4<\/a>.<\/p>\n<h3>\ubc94\uc704 \ubc0f \uceec\ub809\uc158 \uc544\ub798\uc758 \uc2dc\uc2a4\ud15c \ud0a4 \uacf5\uac04<\/h3>\n<table>\n<tbody>\n<tr>\n<td><strong>\ud0a4 \uc2a4\ud398\uc774\uc2a4<\/strong><\/td>\n<td><strong>\uc124\uba85<\/strong><\/td>\n<\/tr>\n<tr>\n<td>`system:all_scopes`<\/td>\n<td>\uae30\ubcf8 \ubc94\uc704\uc640 \uac19\uc740 \uc2dc\uc2a4\ud15c \uac1d\uccb4\ub97c \ud3ec\ud568\ud55c \ubaa8\ub4e0 \ubc94\uc704\uc758 \ubaa9\ub85d\uc785\ub2c8\ub2e4.<\/td>\n<\/tr>\n<tr>\n<td>`system:scopes`<\/td>\n<td>\uc2dc\uc2a4\ud15c \ubc94\uc704\ub97c \uc81c\uc678\ud55c \uc0ac\uc6a9 \uac00\ub2a5\ud55c \ubaa8\ub4e0 \ubc94\uc704<\/td>\n<\/tr>\n<tr>\n<td>`system:all_collections`<\/td>\n<td>\uae30\ubcf8 \uceec\ub809\uc158\uacfc \uac19\uc740 \uc2dc\uc2a4\ud15c \uac1c\uccb4\ub97c \ud3ec\ud568\ud55c \ubaa8\ub4e0 \uceec\ub809\uc158\uc758 \ubaa9\ub85d\uc785\ub2c8\ub2e4.<\/td>\n<\/tr>\n<tr>\n<td>`system:collections`<\/td>\n<td>\uc2dc\uc2a4\ud15c \uceec\ub809\uc158\uc744 \uc81c\uc678\ud55c \uc0ac\uc6a9 \uac00\ub2a5\ud55c \ubaa8\ub4e0 \uceec\ub809\uc158<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>\ubc94\uc704 \ubc0f \uceec\ub809\uc158\uc73c\ub85c N1QL \ucffc\ub9ac\ub97c \uac04\uc18c\ud654\ud558\ub294 \ubc29\ubc95<\/h2>\n<p>One major consequence of Scopes and Collections is that the N1QL query language is now simpler. This is because a `type` field is no longer required on every document. As a result, both the Data Definition Language (DDL) and Data Manipulation Language (DML) of N1QL statements are easier to write and understand.<\/p>\n<h3>\uc774\uc81c \ub354 \uac04\ub2e8\ud558\uace0 \uc9c1\uad00\uc801\uc778 N1QL \ucffc\ub9ac<\/h3>\n<p>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uceec\ub809\uc158\uc740 \uad00\uacc4\ud615 \ud14c\uc774\ube14\uacfc \ub3d9\ub4f1\ud55c \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc720\uc0ac\uc131\uc758 \uac15\uc810\uc740 \uc57d\uc810 \uc5c6\uc774 \ub17c\ub9ac\uc801 \ud14c\uc774\ube14\uacfc \uad00\uacc4\ud615 \ud14c\uc774\ube14 \uc0ac\uc774\uc758 \uac04\uadf9\uc744 \uba54\uc6cc\uc90d\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/conceptual-physical-logical-data-models\/\">\ubb3c\ub9ac\uc801 \ub370\uc774\ud130 \ubaa8\ub378<\/a> \ub9ce\uc740 RDBMS\uac00 \uc775\uc219\ud574\uc838 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Take a look at these side-by-side N1QL queries below using the `travel-sample` dataset.<\/p>\n<table style=\"height: 227px\" width=\"1264\">\n<tbody>\n<tr>\n<td><strong>\ubc84\ud0b7 \ubaa8\ub378<\/strong><\/td>\n<td><strong>\uceec\ub809\uc158 \ubaa8\ub378<\/strong><\/td>\n<\/tr>\n<tr>\n<td>\n<pre class=\"lang:default decode:true\">SELECT a.name\r\n  FROM `travel-sample` a\r\nWHERE a.type='airport'\r\n   AND a.city='London'\r\n<\/pre>\n<p>&nbsp;<\/td>\n<td>\n<pre class=\"lang:default decode:true\">SELECT a.name\r\n FROM \uacf5\ud56d a\r\nWHERE a.city='London'\r\n<\/pre>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>The query on the left jumps illustrates how you had to specify the document `type` field under the old Bucket model. The query on the right is simpler because the document `type` is no longer required under the new Collection model introduced in Couchbase 7.0.<\/p>\n<h3>N1QL \uc870\uc778 \uc870\uac74\ub3c4 \ub354 \uac04\ub2e8\ud574\uc84c\uc2b5\ub2c8\ub2e4.<\/h3>\n<p>N1QL\uc758 \uc870\uc778\ub3c4 \ub354 \uc26c\uc6cc\uc84c\uc2b5\ub2c8\ub2e4. \uc544\ub798\uc5d0\uc11c \uc774\uc804 \ucffc\ub9ac\uc640 \uc0c8 \ucffc\ub9ac\ub97c \ube44\uad50\ud574 \ubcf4\uc138\uc694.<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>\ubc84\ud0b7 \ubaa8\ub378<\/strong><\/td>\n<td><strong>\uceec\ub809\uc158 \ubaa8\ub378<\/strong><\/td>\n<\/tr>\n<tr>\n<td>\n<pre class=\"lang:default decode:true\">SELECT h.name,\r\n       a.faa\r\n FROM `travel-sample` h\r\n   JOIN `travel-sample` a\r\n      ON h.city=a.city AND a.type='airport'\r\n WHERE h.type='hotel'\r\n   AND a.city='London'\r\n<\/pre>\n<p>&nbsp;<\/td>\n<td>\n<pre class=\"lang:default decode:true\">SELECT h.name,\r\n       a.faa\r\n FROM \ud638\ud154 h\r\n   JOIN \uacf5\ud56d a\r\n     ON h.city=a.city\r\n WHERE a.city='London'\r\n<\/pre>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Under the new Collection model, the JOIN syntax doesn&#8217;t require you to use the `type` field to restrict your query to a specific table of documents within the Bucket.<\/p>\n<h3>\ubc84\ud0b7 \ubaa8\ub378\uacfc\uc758 \ud558\uc704 \ud638\ud658\uc131\uc744 \uc720\uc9c0\ud558\ub294 N1QL \ucffc\ub9ac<\/h3>\n<p>\uc0c8\ub85c\uc6b4 \uceec\ub809\uc158 \ubaa8\ub378\uc758 \ub3c4\uc785\uc774 \ubc84\ud0b7\uc758 \uc885\ub9d0\uc744 \uc758\ubbf8\ud558\uc9c0\ub294 \uc54a\uc2b5\ub2c8\ub2e4. N1QL \ucffc\ub9ac \uc11c\ube44\uc2a4\ub294 \uc774\uc804\uacfc \ub9c8\ucc2c\uac00\uc9c0\ub85c \uc5ec\uc804\ud788 \ubc84\ud0b7 \ubaa8\ub378\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc720\uc77c\ud55c \ubcc0\uacbd \uc0ac\ud56d\uc740 \uc774\uc81c \ubc84\ud0b7 \ub370\uc774\ud130\uac00 \uae30\ubcf8 \uceec\ub809\uc158\uc744 \ud3ec\ud568\ud558\ub294 \uae30\ubcf8 \ubc94\uc704\uc5d0 \uc800\uc7a5\ub41c\ub2e4\ub294 \uc810\uc785\ub2c8\ub2e4.<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>\ubc84\ud0b7 \ubaa8\ub378<\/strong><\/td>\n<td><strong>\uceec\ub809\uc158 \ubaa8\ub378<\/strong><\/td>\n<\/tr>\n<tr>\n<td>\n<pre class=\"lang:default decode:true\">SELECT a.faa\r\n FROM `travel-sample` a\r\nWHERE a.type='airport'\r\n<\/pre>\n<p>&nbsp;<\/td>\n<td>\ub458 \uc911 \ud558\ub098\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">SELECT a.faa\r\nFROM `travel-sample`\r\nWHERE a.type='airport'\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><em>\ub610\ub294<\/em><\/p>\n<pre class=\"lang:default decode:true\">SELECT a.faa\r\nFROM \uae30\ubcf8\uac12:`\uc5ec\ud589 \uc0d8\ud50c`._\uae30\ubcf8\uac12._\uae30\ubcf8\uac12 a\r\nWHERE a.type='airport'\r\n<\/pre>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\ub2e4\uc74c \uc0ac\ud56d\uc5d0 \uc720\uc758\ud558\uc138\uc694. <strong>\ub124\uc784\uc2a4\ud398\uc774\uc2a4 \uc811\ub450\uc0ac\ub294 \ud544\uc218\uc785\ub2c8\ub2e4.<\/strong> and should have the value `default:` for all references to the default Scope or default Collection.<\/p>\n<h2>\uceec\ub809\uc158\uc744 \uc0ac\uc6a9\ud55c N1QL \ucffc\ub9ac\uc758 \uc911\uc694\ud55c \ubcc0\uacbd \uc0ac\ud56d<\/h2>\n<p>\uceec\ub809\uc158 \ubaa8\ub378 \uc0ac\uc6a9, <strong>\ucffc\ub9ac \uc5d4\uc9c4\uc740 \uceec\ub809\uc158 \uc774\ub984\uc758 \uc804\uccb4 \uacbd\ub85c\ub97c \uc54c\uace0 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/strong>. \uc774\ub294 \uceec\ub809\uc158 \uc774\ub984\uc774 \ubc84\ud0b7 \ub0b4\uc5d0\uc11c \uace0\uc720\ud560 \ud544\uc694\ub294 \uc5c6\uace0 \ud574\ub2f9 \ubc94\uc704 \ub0b4\uc5d0\uc11c\ub9cc \uace0\uc720\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc815\uaddc\ud654\ub41c \uceec\ub809\uc158 \uc774\ub984\uc758 \ud615\uc2dd\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<p>\ud615\uc2dd:<\/p>\n<pre class=\"lang:default decode:true\">\ub124\uc784\uc2a4\ud398\uc774\uc2a4:bucket.scope.collection<\/pre>\n<p>\uc608\uc2dc:<\/p>\n<pre class=\"lang:default decode:true\">\ub124\uc784\uc2a4\ud398\uc774\uc2a4:`\uc5ec\ud589 \uc0d8\ud50c`.booking.hotel<\/pre>\n<p>However, you can reference a Collection with its relative path by setting the `query_context`<\/p>\n<p>\uadf8\ub9ac\uace0 <strong>\ucffc\ub9ac \uc6cc\ud06c\ubca4\uce58 UI<\/strong> \ub97c \ud074\ub9ad\ud558\uba74 \uc544\ub798 \uc2a4\ud06c\ub9b0\uc0f7\uc758 \uc624\ub978\ucabd \uc0c1\ub2e8\uc5d0 \uc788\ub294 \ub4dc\ub86d\ub2e4\uc6b4 \uc0c1\uc790\uc5d0\uc11c \ubc84\ud0b7\uacfc \ubc94\uc704\ub97c \uc120\ud0dd\ud558\uc5ec \ucffc\ub9ac \ucee8\ud14d\uc2a4\ud2b8\ub97c \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9759\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/11\/Screen-Shot-2020-11-13-at-12.29.32-PM.png\" alt=\"\" width=\"947\" height=\"140\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.29.32-PM.png 2314w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.29.32-PM-300x44.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.29.32-PM-1024x151.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.29.32-PM-768x114.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.29.32-PM-1536x227.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.29.32-PM-2048x303.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.29.32-PM-20x3.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/Screen-Shot-2020-11-13-at-12.29.32-PM-1320x195.png 1320w\" sizes=\"auto, (max-width: 947px) 100vw, 947px\" \/><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\ucffc\ub9ac \ucee8\ud14d\uc2a4\ud2b8\ub294 \ub2e4\uc74c\uc5d0\uc11c\ub3c4 \uc9c0\uc6d0\ub429\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/products\/developer-sdk\/?ref=blog\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 SDK<\/a>, <a href=\"https:\/\/docs.couchbase.com\/server\/current\/rest-api\/rest-intro.html?ref=blog\" target=\"_blank\" rel=\"noopener\">REST API<\/a> \uadf8\ub9ac\uace0 <a href=\"https:\/\/docs.couchbase.com\/server\/current\/tools\/cbq-shell.html?ref=blog\" target=\"_blank\" rel=\"noopener\">cbq \uc258<\/a>.<\/p>\n<h2>\uceec\ub809\uc158\uc73c\ub85c \ub9c8\uc774\uadf8\ub808\uc774\uc158\ud574\uc57c \ud558\ub098\uc694?<\/h2>\n<p>\uc544\ub2c8\uc694, \uc6d0\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0 \uceec\ub809\uc158 \ubaa8\ub378\ub85c \ub9c8\uc774\uadf8\ub808\uc774\uc158\ud560 \ud544\uc694\ub294 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub9c8\uc774\uadf8\ub808\uc774\uc158\ud558\uc9c0 \uc54a\uae30\ub85c \uc120\ud0dd\ud55c \uacbd\uc6b0 \uadf8\ub300\ub85c \uc720\uc9c0\ub418\ub294 \uc0ac\ud56d\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><strong>\ub370\uc774\ud130:<\/strong> \uae30\uc874\uc758 \ubaa8\ub4e0 \ub370\uc774\ud130\ub294 \ub3d9\uc77c\ud55c \ubc84\ud0b7\uc5d0 \ub0a8\uc544 \uc788\uc2b5\ub2c8\ub2e4. Bucket \ucffc\ub9ac \uad6c\ubb38\uc744 \uc0ac\uc6a9\ud558\uac70\ub098 \uc0c8\ub85c\uc6b4 \uae30\ubcf8 \ubc94\uc704 \ubc0f \uceec\ub809\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec \ubb38\uc11c\ub97c \ucc38\uc870\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>\ucffc\ub9ac:<\/strong> DDL \ubc0f DML\uc5d0 \ub300\ud55c N1QL \ucffc\ub9ac \uad6c\ubb38\uc740 \uacc4\uc18d\ud574\uc11c Bucket \ubaa8\ub378\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<\/li>\n<li><strong>\uc0c9\uc778:<\/strong> \uae30\uc874 \uc778\ub371\uc2a4\ub294 \ubc84\ud0b7 \uc218\uc900\uc73c\ub85c \uc720\uc9c0\ub418\uba70 \uc774\uc804\uacfc \ub9c8\ucc2c\uac00\uc9c0\ub85c \ubaa8\ub4e0 \ucffc\ub9ac\uc5d0\uc11c \uacc4\uc18d \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2 id=\"data-migration\">Couchbase 7.0\uc5d0\uc11c \ubc84\ud0b7\uc5d0\uc11c \uceec\ub809\uc158\uc73c\ub85c \ub9c8\uc774\uadf8\ub808\uc774\uc158\ud558\uae30<\/h2>\n<p>\uc774\uc804 \ubc84\ud0b7 \ubaa8\ub378\uc5d0\uc11c \ud604\uc7ac Couchbase 7.0\uc5d0\uc11c \uc81c\uacf5\ub418\ub294 \uc0c8\ub85c\uc6b4 \ubc94\uc704 \ubc0f \uceec\ub809\uc158 \ubaa8\ub378\ub85c \ub9c8\uc774\uadf8\ub808\uc774\uc158\ud560 \uc900\ube44\uac00 \ub418\uc5c8\ub2e4\uba74 \uc644\ub8cc\ud574\uc57c \ud558\ub294 5\uac00\uc9c0 \uc8fc\uc694 \ub2e8\uacc4\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p>For this migration guide, I&#8217;ll use the `travel-sample` Bucket as an example dataset.<\/p>\n<h3>1\ub2e8\uacc4: \ub370\uc774\ud130 \ub9c8\uc774\uadf8\ub808\uc774\uc158<\/h3>\n<p>\ubb38\uc11c\uc5d0 \uc774\ubbf8 \uadf8\ub8f9\uc744 \uc2dd\ubcc4\ud558\ub294 \ud544\ub4dc\uac00 \uc788\ub294 \uacbd\uc6b0, \ud574\ub2f9 \uadf8\ub8f9\uc744 \uc0ac\uc6a9\ud558\uc5ec \uceec\ub809\uc158\uc744 \ub9cc\ub4dc\uc138\uc694.<\/p>\n<p>For the `travel-sample` dataset, let&#8217;s use the respective `type` fields as the Collection names. In addition, we&#8217;ll also create an `inventory` Scope for all of the Collections in the dataset.<\/p>\n<pre class=\"lang:default decode:true\">\ubc94\uc704 `travel-sample`.inventory\ub97c \ub9cc\ub4ed\ub2c8\ub2e4;\r\n \r\nCREATE COLLECTION `travel-sample`.inventory.route;\r\n\r\nCREATE COLLECTION `travel-sample.inventory.landmark;\r\n\r\nCREATE COLLECTION `travel-sample`.inventory.airline;\r\n\r\nCREATE COLLECTION `travel-sample`.inventory.hotel;\r\n\r\nCREATE COLLECTION `travel-sample`.inventory.airport;\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>In the above example, we created an `inventory` Scope and added new Collections within the same `travel-sample` Bucket.<\/p>\n<h3>2\ub2e8\uacc4: \uace0\uc720 \ubb38\uc11c \ud0a4 \ud655\uc778<\/h3>\n<p>\ubb38\uc11c \ud0a4\ub294 \uace0\uc720\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>\ubb38\uc11c\uac00 \ubaa8\ub450 \uac19\uc740 \ubc84\ud0b7\uc5d0 \uc874\uc7ac\ud558\ubbc0\ub85c \ud604\uc7ac \uae30\uc874 \ubc84\ud0b7\uc5d0 \ub300\ud574 \uac00\uc9c0\uace0 \uc788\ub294 \ubb38\uc11c \ud0a4\ub294 \uc774\ubbf8 \uace0\uc720\ud574\uc57c \ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c \uae30\uc874 \ubb38\uc11c \ud0a4\ub97c \uc0c8 \uceec\ub809\uc158 \ubb38\uc11c \ud0a4\ub85c \uc0ac\uc6a9\ud558\uae30\uc5d0 \uc801\ud569\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<h3>3\ub2e8\uacc4: \ub370\uc774\ud130 \ubcf5\uc0ac<\/h3>\n<p>In the below code sample, we&#8217;ll use `INSERT SELECT` to copy the data from the Bucket into each individual Collection. We also use the existing `META().id` Bucket key for the Collection key.<\/p>\n<pre class=\"lang:default decode:true\">INSERT INTO `travel-sample`.inventory.landmark (KEY k, VALUE val)\r\n SELECT META().id k, t val FROM `travel-sample` t WHERE t.type='landmark' ;\r\n\r\nINSERT INTO `travel-sample`.inventory.airline (KEY k, VALUE val)\r\n SELECT META().id k, t val FROM `travel-sample` t WHERE t.type='airline' ;\r\n\r\nINSERT INTO `travel-sample`.inventory.hotel (KEY k, VALUE val)\r\n ELECT META().id k, t val FROM `travel-sample` t WHERE t.type='hotel' ;\r\n\r\nINSERT INTO `travel-sample`.inventory.airport (KEY k, VALUE val)\r\n SELECT META().id k, t val FROM `travel-sample` t WHERE t.type='airport' ;\r\n\r\nINSERT INTO `travel-sample`.inventory.route (KEY k, VALUE val)\r\n SELECT META().id k, t val FROM `travel-sample` t WHERE t.type='route' ;\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h3>4\ub2e8\uacc4: \uc0c9\uc778 \ubcc0\ud658<\/h3>\n<p>\uc0c8\ub85c\uc6b4 \uceec\ub809\uc158 \ubaa8\ub378\uc5d0\uc11c \ud6a8\uacfc\uc801\uc73c\ub85c \uc0ac\uc6a9\ud558\ub824\uba74 \uae30\uc874 \ubc84\ud0b7 \uc778\ub371\uc2a4\ub97c \uc218\uc815\ud574\uc57c \ud560 \uac00\ub2a5\uc131\uc774 \ub192\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc544\ub798\uc758 \uc138 \uac00\uc9c0 \ud558\uc704 \uc139\uc158\uc5d0\uc11c\ub294 \ubc84\ud0b7 \uc778\ub371\uc2a4\uc758 \uac00\uc7a5 \uc77c\ubc18\uc801\uc778 \ud328\ud134\uc744 \ub098\uc5f4\ud558\uace0 \uc774\ub97c \uceec\ub809\uc158 \uae30\ubc18 \uc778\ub371\uc2a4\ub85c \ubcc0\ud658\ud558\ub294 \ub2e8\uacc4\ub97c \ubcf4\uc5ec \uc90d\ub2c8\ub2e4.<\/p>\n<h4>\uc778\ub371\uc2a4 \ubcc0\ud658: \uc220\uc5b4 \uc720\ud615\uc774 \uc788\ub294 \ubc84\ud0b7 \uc778\ub371\uc2a4<\/h4>\n<p>For a Bucket index with a specific `type` field filter (i.e., a partial index), you can simply re-create the new index on the specific Collection for the type.<\/p>\n<p>\uc544\ub798 \ub450 \uac00\uc9c0 \uc608\ub97c \ube44\uad50\ud574 \ubcf4\uc138\uc694:<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>\ubc84\ud0b7 \ubaa8\ub378<\/strong><\/td>\n<td><strong>\uceec\ub809\uc158 \ubaa8\ub378<\/strong><\/td>\n<\/tr>\n<tr>\n<td>\n<pre class=\"lang:default decode:true\">CREATE INDEX `def_route_src_dst_day`\r\nON `travel-sample`(\r\n      `\ucd9c\ubc1c\uacf5\ud56d`,\r\n      `\ubaa9\uc801\uc9c0\uacf5\ud56d`,\r\n       (distinct (array (`v`.`day`))\r\n         for `v` in `\uc2a4\ucf00\uc904` end)))))\r\nWHERE (`type` = \"route\")\r\n<\/pre>\n<p>&nbsp;<\/td>\n<td>\n<pre class=\"lang:default decode:true\">CREATE INDEX `def_route_src_dst_day`\r\nON `travel-sample`.inventory.route(\r\n      `\ucd9c\ubc1c\uacf5\ud56d`,\r\n      `\ubaa9\uc801\uc9c0\uacf5\ud56d`,\r\n       (distinct (array (`v`.`day`)\r\n         for `v` in `\uc2a4\ucf00\uc904` end)))))\r\n<\/pre>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h4>\uc778\ub371\uc2a4 \ubcc0\ud658: \uc720\ud615 \uc220\uc5b4\uac00 \uc5c6\ub294 \ubc84\ud0b7 \uc778\ub371\uc2a4<\/h4>\n<p>\ubb38\uc11c\uc5d0 \uc874\uc7ac\ud560 \uc218\ub3c4 \uc788\uace0 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc744 \uc218\ub3c4 \uc788\ub294 \ud544\ub4dc\uc5d0 \ub300\ud574 \uae00\ub85c\ubc8c \ubcf4\uc870 \uc0c9\uc778(GSI)\uc744 \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>For instance, an index may include the `icao` field, but not every document may have the `icao` field. For such an index, the indexer only includes the documents that have the `icao` field in them. If you&#8217;re using this kind of index, you may need to be more specific and create an index for the Collection where that field is being used.<\/p>\n<p>\ub2e4\uc2dc \ud55c \ubc88 \uc544\ub798 \ub450 \ucf54\ub4dc \uc0d8\ud50c\uc744 \uc774\uc804 \ubaa8\ub378\uacfc \uc0c8 \ubaa8\ub378\uc744 \ub300\uc870\ud574 \ubcf4\uc138\uc694:<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>\ubc84\ud0b7 \ubaa8\ub378<\/strong><\/td>\n<td><strong>\uceec\ub809\uc158 \ubaa8\ub378<\/strong><\/td>\n<\/tr>\n<tr>\n<td>\n<pre class=\"lang:default decode:true\">CREATE INDEX `def_icao` ON `travel-sample`(`icao`)\r\n<\/pre>\n<p>&nbsp;<\/td>\n<td>\n<pre class=\"lang:default decode:true\">CREATE INDEX `def_icao`\r\nON `travel-sample`.inventory.airport(`icao`)\r\n<\/pre>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h4>\uc778\ub371\uc2a4 \ubcc0\ud658: \uacf5\ud1b5 \ud544\ub4dc\uc5d0 \ub300\ud55c \ubc84\ud0b7 \uc778\ub371\uc2a4<\/h4>\n<p>\ud544\ub4dc\uac00 \uc5ec\ub7ec \ubb38\uc11c \uc720\ud615\uc5d0 \uc874\uc7ac\ud558\ub294 \uacbd\uc6b0\uc5d0\ub3c4 \ud2b9\uc815 \uc720\ud615\uc744 \uc9c0\uc815\ud558\uc9c0 \uc54a\uace0\ub3c4 \ubc84\ud0b7 \uc778\ub371\uc2a4\ub97c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Consider the example where the field `city` exists in multiple document types \u2013 e.g., airport, landmark and hotel documents. The Bucket model only has a single `def_city` index, which can cover all three document types. However, under the new Collection model, you&#8217;ll need to create a separate index for each Collection for this type of index.<\/p>\n<p>\uc544\ub798 \ucf54\ub4dc \uc0d8\ud50c\uc5d0\uc11c \ucc28\uc774\uc810\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>\ubc84\ud0b7 \ubaa8\ub378<\/strong><\/td>\n<td><strong>\uceec\ub809\uc158 \ubaa8\ub378<\/strong><\/td>\n<\/tr>\n<tr>\n<td>\n<pre class=\"lang:default decode:true\">CREATE INDEX `def_city` ON `travel-sample`(`city`)\r\n<\/pre>\n<p>&nbsp;<\/td>\n<td>\n<pre class=\"lang:default decode:true\">CREATE INDEX `def_airport_city`\r\nON `travel-sample`.inventory.airport(`city`);\r\n\r\nCREATE INDEX `def_hotel_city`\r\nON `travel-sample`.inventory.hotel(`city`);\r\n\r\nCREATE INDEX `def_landmark_city`\r\nON `travel-sample`.inventory.landmark(`city`);\r\n<\/pre>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h3>5\ub2e8\uacc4: \ucffc\ub9ac \uc804\ud658<\/h3>\n<p>\uae30\ubcf8 \ub370\uc774\ud130 \ubaa8\ub378\uc774 \uacf5\uc720 \ubc84\ud0b7\uc5d0\uc11c \uac1c\ubcc4 \uceec\ub809\uc158\uc73c\ub85c \ubc14\ub00c\uc5c8\uae30 \ub54c\ubb38\uc5d0 \uae30\uc874 N1QL \ucffc\ub9ac\ub97c \uc218\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>\ub610\ud55c \ucffc\ub9ac\ub97c \uc218\uc815\ud55c \ud6c4\uc5d0\ub294 \ud574\ub2f9 \ucffc\ub9ac\uac00 \uc0c8\ub85c\uc6b4 \uceec\ub809\uc158 \uae30\ubc18 \uc778\ub371\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub294\uc9c0 \ub2e4\uc2dc \ud655\uc778\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>\uc544\ub798 \ucf54\ub4dc \uc0d8\ud50c\uc5d0\uc11c \uc774\uc804 \ucffc\ub9ac\uc640 \uc5c5\ub370\uc774\ud2b8\ub41c \ucffc\ub9ac\ub97c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>\ubc84\ud0b7 \ubaa8\ub378<\/strong><\/td>\n<td><strong>\uceec\ub809\uc158 \ubaa8\ub378<\/strong><\/td>\n<\/tr>\n<tr>\n<td>\n<pre class=\"lang:default decode:true\">SELECT airline.name,\r\n       airport.airportname,\r\n       COUNT(1)\r\nFROM `travel-sample` airport\r\nINNER JOIN `travel-sample` route\r\n  ON airport.faa = route.sourceairport\r\n  AND route.type = \"route\"\r\nINNER JOIN `travel-sample` airline\r\n  ON route.airline = airline.iata\r\n  AND airline.type = \"\ud56d\uacf5\uc0ac\"\r\nWHERE airport.type = \"airport\"\r\n  AND airport.city = \"\uc0b0\ud638\uc138\"\r\n  AND airport.country = \"\ubbf8\uad6d\"\r\n  \uadf8\ub9ac\uace0 route.schedule\uc758 \ubaa8\ub4e0 x\r\n            SATISFIES x.day =0 END\r\nGROUP BY airline.name, airport.airportname\r\n<\/pre>\n<p>&nbsp;<\/td>\n<td>\n<pre class=\"lang:default decode:true\">SELECT airline.name,\r\n       airport.airportname,\r\n       COUNT(1)\r\nFROM <del>`\uc5ec\ud589-\uc0d8\ud50c`<\/del> \uacf5\ud56d\r\n\ub0b4\ubd80 \uac00\uc785 <del>`\uc5ec\ud589-\uc0d8\ud50c`<\/del> route\r\n  ON \uacf5\ud56d.faa = \uacbd\ub85c.\uc18c\uc2a4\uacf5\ud56d\r\n  <del>AND route.type = \"route\"<\/del>\r\n\ub0b4\ubd80 \uac00\uc785 <del>`\uc5ec\ud589-\uc0d8\ud50c`<\/del> \ud56d\uacf5\uc0ac\r\n  ON route.airline = airline.iata\r\n  <del>AND airline.type = \"\ud56d\uacf5\uc0ac\"<\/del>\r\n\uc5b4\ub514 <del>airport.type = \"\uacf5\ud56d\"\r\n  AND<\/del> airport.city = \"\uc0b0\ud638\uc138\"\r\n  AND airport.country = \"\ubbf8\uad6d\"\r\n  \uadf8\ub9ac\uace0 route.schedule\uc758 \ubaa8\ub4e0 x\r\n          SATISFIES x.day =0 END\r\nGROUP BY airline.name, airport.airportname\r\n<\/pre>\n<p>\uc720\ud615 \ud544\ud130 \uc5c6\uc774 \ub2e4\uc2dc \uc791\uc131\ub41c \ucffc\ub9ac\uc785\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">SELECT airline.name,\r\n       airport.airportname,\r\n       COUNT(1)\r\nFROM airport\r\nINNER JOIN `travel-sample` route\r\n  ON airport.faa = route.sourceairport\r\nINNER JOIN `travel-sample` airline\r\n  ON route.airline = airline.iata\r\nWHERE airport.city = \"\uc0b0\ud638\uc138\"\r\n  AND airport.country = \"\ubbf8\uad6d\"\r\n  \uadf8\ub9ac\uace0 route.schedule\uc758 \ubaa8\ub4e0 x\r\n            SATISFIES x.day =0 END\r\nGROUP BY airline.name, airport.airportname\r\n<\/pre>\n<p>&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>\uacb0\ub860<\/h2>\n<p>\uc774\uc81c \ub05d\ub0ac\uc2b5\ub2c8\ub2e4! \uc774\uc804 \ubc84\ud0b7 \ubaa8\ub378\uc5d0\uc11c Couchbase 7.0\uc758 \uc0c8\ub85c\uc6b4 \ubc94\uc704 \ubc0f \uceec\ub809\uc158 \ubaa8\ub378\ub85c \ub9c8\uc774\uadf8\ub808\uc774\uc158\uc774 \uc644\ub8cc\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc0c8\ub85c\uc6b4 \uceec\ub809\uc158 \ub370\uc774\ud130 \ubaa8\ub378\uc774 \ub354\uc6b1 \uac15\ub825\ud558\uace0 \uc9c1\uad00\uc801\uc774\uba70, \uadf8 \uacb0\uacfc N1QL \ucffc\ub9ac\uac00 \uac04\uc18c\ud654\ub418\uace0 \ub2a5\ub960\ud654\ub418\uc5c8\uae30\ub97c \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n<p>Couchbase Server 7.0 \ub9b4\ub9ac\uc2a4\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\ub824\uba74 \ub2e4\uc74c\uc744 \ucc38\uc870\ud558\uc138\uc694, <a href=\"https:\/\/docs.couchbase.com\/server\/7.0\/introduction\/whats-new.html?ref=blog\" target=\"_blank\" rel=\"noopener\">\uc0c8\ub85c\uc6b4 \uae30\ub2a5 \ud655\uc778<\/a> \ubc0f\/\ub610\ub294 <a href=\"https:\/\/docs.couchbase.com\/server\/7.0\/release-notes\/relnotes.html?ref=blog\" target=\"_blank\" rel=\"noopener\">7.0 \ub9b4\ub9ac\uc2a4 \ub178\ud2b8<\/a>.<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 30px\" aria-hidden=\"true\"><\/div>\n<div style=\"text-align: center\"><strong>N1QL \ucffc\ub9ac\ub97c \uc9c1\uc811 \uc2e4\ud589\ud560 \uc900\ube44\uac00 \ub418\uc168\ub098\uc694? <br \/>?<a href=\"https:\/\/www.couchbase.com\/blog\/ko\/downloads\/?ref=blog\" target=\"_blank\" rel=\"noopener\">\uc9c0\uae08 Couchbase\ub97c \uc0ac\uc6a9\ud574 \ubcf4\uc138\uc694<\/a><\/strong><\/div>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>If you&#8217;re looking to migrate your data from a relational database to NoSQL, then now&#8217;s a better time than ever. The recent release of Couchbase 7.0 introduced Scopes and Collections \u2013 a new way to organize your JSON data. More [&hellip;]<\/p>","protected":false},"author":26326,"featured_media":11722,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1816,1819,2453,9336,1812],"tags":[9350,9367,9348,1766,9302,2267,1514,1725,9301],"ppma_author":[8919],"class_list":["post-9756","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","category-data-modeling","category-global-secondary-index","category-scopes-and-collections","category-n1ql-query","tag-cbq-shell","tag-data-definition-language","tag-data-manipulation-language","tag-data-migration","tag-data-model","tag-ddl","tag-dml","tag-nosql-database","tag-relational-database"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>N1QL Queries: 5 Steps to Streamline Migration to Collections<\/title>\n<meta name=\"description\" content=\"Need a collections data model to be more powerful and intuitive? This Couchbase post will help simplify and streamline N1QL queries as a result.\" \/>\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\/ko\/simplifying-query-index-with-collections\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"5 Steps to Streamline Your N1QL Queries &amp; Migrate to Collections\" \/>\n<meta property=\"og:description\" content=\"Need a collections data model to be more powerful and intuitive? This Couchbase post will help simplify and streamline N1QL queries as a result.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/simplifying-query-index-with-collections\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-08-16T07:00:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T01:43:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/5-steps-simplify-your-n1ql-database-queries-migration-collections-model-social.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"418\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Binh Le\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/5-steps-simplify-your-n1ql-database-queries-migration-collections-model-social.jpg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Binh Le\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/\"},\"author\":{\"name\":\"Binh Le\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f89064928e262c71eb43bee996c48c63\"},\"headline\":\"5 Steps to Streamline Your N1QL Queries &amp; Migrate to Collections\",\"datePublished\":\"2021-08-16T07:00:46+00:00\",\"dateModified\":\"2025-06-14T01:43:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/\"},\"wordCount\":1640,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/5-steps-simplify-your-n1ql-database-queries-migration-collections-model.jpg\",\"keywords\":[\"cbq shell\",\"Data Definition Language\",\"Data Manipulation Language\",\"Data Migration\",\"data model\",\"DDL\",\"dml\",\"NoSQL Database\",\"relational database\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"Data Modeling\",\"Global Secondary Index\",\"Scopes and Collections\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/\",\"name\":\"N1QL Queries: 5 Steps to Streamline Migration to Collections\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/5-steps-simplify-your-n1ql-database-queries-migration-collections-model.jpg\",\"datePublished\":\"2021-08-16T07:00:46+00:00\",\"dateModified\":\"2025-06-14T01:43:32+00:00\",\"description\":\"Need a collections data model to be more powerful and intuitive? This Couchbase post will help simplify and streamline N1QL queries as a result.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/5-steps-simplify-your-n1ql-database-queries-migration-collections-model.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/5-steps-simplify-your-n1ql-database-queries-migration-collections-model.jpg\",\"width\":1200,\"height\":628,\"caption\":\"Learn how to simplify your N1QL queries by migrating to Scopes and Collections in Couchbase 7.0\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"5 Steps to Streamline Your N1QL Queries &amp; Migrate to Collections\"}]},{\"@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\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@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\/f89064928e262c71eb43bee996c48c63\",\"name\":\"Binh Le\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5b68c37e30928a9d7b2c8470b1a303b7\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g\",\"caption\":\"Binh Le\"},\"description\":\"Binh Le is a Principal Product Manager for Couchbase Query service. Prior to Couchbase, he worked at Oracle and led the product management team for Sales Cloud Analytics and CRM OnDemand. Binh holds a Bachelor's Degree in Computer Science from the University of Brighton, UK.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/binh-le-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"N1QL Queries: 5 Steps to Streamline Migration to Collections","description":"\ub354 \uac15\ub825\ud558\uace0 \uc9c1\uad00\uc801\uc778 \uceec\ub809\uc158 \ub370\uc774\ud130 \ubaa8\ub378\uc774 \ud544\uc694\ud558\uc2e0\uac00\uc694? \uc774 Couchbase \uac8c\uc2dc\ubb3c\uc740 \uacb0\uacfc\uc801\uc73c\ub85c N1QL \ucffc\ub9ac\ub97c \uac04\uc18c\ud654\ud558\uace0 \ub2a5\ub960\ud654\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub420 \uac83\uc785\ub2c8\ub2e4.","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\/ko\/simplifying-query-index-with-collections\/","og_locale":"ko_KR","og_type":"article","og_title":"5 Steps to Streamline Your N1QL Queries &amp; Migrate to Collections","og_description":"Need a collections data model to be more powerful and intuitive? This Couchbase post will help simplify and streamline N1QL queries as a result.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/simplifying-query-index-with-collections\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-08-16T07:00:46+00:00","article_modified_time":"2025-06-14T01:43:32+00:00","og_image":[{"width":800,"height":418,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/5-steps-simplify-your-n1ql-database-queries-migration-collections-model-social.jpg","type":"image\/jpeg"}],"author":"Binh Le","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/5-steps-simplify-your-n1ql-database-queries-migration-collections-model-social.jpg","twitter_misc":{"Written by":"Binh Le","Est. reading time":"8\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/"},"author":{"name":"Binh Le","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f89064928e262c71eb43bee996c48c63"},"headline":"5 Steps to Streamline Your N1QL Queries &amp; Migrate to Collections","datePublished":"2021-08-16T07:00:46+00:00","dateModified":"2025-06-14T01:43:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/"},"wordCount":1640,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/5-steps-simplify-your-n1ql-database-queries-migration-collections-model.jpg","keywords":["cbq shell","Data Definition Language","Data Manipulation Language","Data Migration","data model","DDL","dml","NoSQL Database","relational database"],"articleSection":["Best Practices and Tutorials","Couchbase Server","Data Modeling","Global Secondary Index","Scopes and Collections","SQL++ \/ N1QL Query"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/","url":"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/","name":"N1QL Queries: 5 Steps to Streamline Migration to Collections","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/5-steps-simplify-your-n1ql-database-queries-migration-collections-model.jpg","datePublished":"2021-08-16T07:00:46+00:00","dateModified":"2025-06-14T01:43:32+00:00","description":"\ub354 \uac15\ub825\ud558\uace0 \uc9c1\uad00\uc801\uc778 \uceec\ub809\uc158 \ub370\uc774\ud130 \ubaa8\ub378\uc774 \ud544\uc694\ud558\uc2e0\uac00\uc694? \uc774 Couchbase \uac8c\uc2dc\ubb3c\uc740 \uacb0\uacfc\uc801\uc73c\ub85c N1QL \ucffc\ub9ac\ub97c \uac04\uc18c\ud654\ud558\uace0 \ub2a5\ub960\ud654\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub420 \uac83\uc785\ub2c8\ub2e4.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/5-steps-simplify-your-n1ql-database-queries-migration-collections-model.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/11\/5-steps-simplify-your-n1ql-database-queries-migration-collections-model.jpg","width":1200,"height":628,"caption":"Learn how to simplify your N1QL queries by migrating to Scopes and Collections in Couchbase 7.0"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/simplifying-query-index-with-collections\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"5 Steps to Streamline Your N1QL Queries &amp; Migrate to Collections"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","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":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@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\/f89064928e262c71eb43bee996c48c63","name":"Binh Le","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5b68c37e30928a9d7b2c8470b1a303b7","url":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","caption":"Binh Le"},"description":"Binh Le is a Principal Product Manager for Couchbase Query service. Prior to Couchbase, he worked at Oracle and led the product management team for Sales Cloud Analytics and CRM OnDemand. Binh holds a Bachelor's Degree in Computer Science from the University of Brighton, UK.","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/binh-le-2\/"}]}},"authors":[{"term_id":8919,"user_id":26326,"is_guest":0,"slug":"binh-le-2","display_name":"Binh Le","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","author_category":"","last_name":"Le","first_name":"Binh","job_title":"","user_url":"","description":"Binh Le\ub294 Couchbase \ucffc\ub9ac \uc11c\ube44\uc2a4\uc758 \uc218\uc11d \uc81c\ud488 \uad00\ub9ac\uc790\uc785\ub2c8\ub2e4. Couchbase\uc5d0 \uc785\uc0ac\ud558\uae30 \uc804\uc5d0\ub294 Oracle\uc5d0\uc11c \uadfc\ubb34\ud558\uba70 Sales Cloud Analytics \ubc0f CRM OnDemand\uc758 \uc81c\ud488 \uad00\ub9ac \ud300\uc744 \uc774\ub04c\uc5c8\uc2b5\ub2c8\ub2e4. \uc601\uad6d \ube0c\ub77c\uc774\ud2bc \ub300\ud559\uad50\uc5d0\uc11c \ucef4\ud4e8\ud130 \uacf5\ud559 \ud559\uc0ac \ud559\uc704\ub97c \ubc1b\uc558\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/9756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/26326"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=9756"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/9756\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/11722"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=9756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=9756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=9756"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=9756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}