{"id":10195,"date":"2021-06-09T04:05:56","date_gmt":"2021-06-09T11:05:56","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=10195"},"modified":"2025-06-13T22:39:24","modified_gmt":"2025-06-14T05:39:24","slug":"eventing-introducing-advanced-bucket-accessors-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/eventing-introducing-advanced-bucket-accessors-couchbase\/","title":{"rendered":"\uc774\ubca4\ud2b8: \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \uace0\uae09 \ubc84\ud0b7 \uc561\uc138\uc11c\ub9ac\ub97c \uc18c\uac1c\ud569\ub2c8\ub2e4."},"content":{"rendered":"<p>Couchbase\uc758 \uace0\uae09 \ubc84\ud0b7 \uc561\uc138\uc2a4\uc790\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uae30\ubcf8 \uc81c\uacf5 \uc5f0\uc0b0\uc790\ub97c \uc0ac\uc6a9\ud558\uc5ec \uace0\uae09 \ud0a4-\uac12 \uc800\uc7a5\uc18c(KV) \uae30\ub2a5\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\uac8c \ud574\uc90d\ub2c8\ub2e4.<\/p>\n<p>\uae30\ubcf8 \ubc84\ud0b7 \uc811\uadfc\uc790\uc640 \ud578\ub4e4\ub7ec\uc5d0 \uc815\uc758\ub41c \ub3d9\uc77c\ud55c \ubc84\ud0b7 \ubc14\uc778\ub529\uc744 \ud65c\uc6a9\ud558\uc9c0\ub9cc, \ub354 \ud48d\ubd80\ud55c \uc635\uc158\uacfc \uc5f0\uc0b0\uc790\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<ol>\n<li>\ub9cc\ub8cc \uc124\uc815 \ub610\ub294 \uac80\uc0c9<\/li>\n<li>CAS\ub97c \ud1b5\ud55c \uacbd\uc7c1 \uc870\uac74 \ud574\uacb0<\/li>\n<li>\uacbd\uc7c1\uc774 \uce58\uc5f4\ud55c \uc778\uae30 KV \ud56d\ubaa9 \uc870\uc791\ud558\uae30<\/li>\n<\/ol>\n<p>\ucc38\uace0 <a href=\"https:\/\/docs.couchbase.com\/server\/6.6\/eventing\/eventing-language-constructs.html?ref=blog#bucket_accessors\" target=\"_blank\" rel=\"noopener noreferrer\">\uae30\ubcf8 \ubc84\ud0b7 \uc561\uc138\uc11c\ub9ac<\/a> \ub294 \uc0ac\uc6a9\ud558\uae30 \ud6e8\uc52c \uc27d\uace0, API\uac00 \uac04\ub2e8\ud558\uba70, \ud574\ub2f9 \uace0\uae09 \ubc84\ud0b7 \uc811\uadfc\uc790\ubcf4\ub2e4 \uc870\uae08 \ub354 \ube60\ub985\ub2c8\ub2e4.<\/p>\n<p>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84 6.6.1\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uace0\uae09 \ubc84\ud0b7 \uc811\uadfc\uc790\uac00 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><a href=\"#advanced-get-op\">\uace0\uae09 GET \uc791\uc5c5<\/a><\/li>\n<li><a href=\"#advanced-insert-op\">\uace0\uae09 \uc0bd\uc785 \uc791\uc5c5<\/a><\/li>\n<li><a href=\"#advanced-upsert-op\">\uace0\uae09 UPSERT \uc791\ub3d9<\/a><\/li>\n<li><a href=\"#advanced-replace-op\">\uace0\uae09 \uad50\uccb4 \uc791\uc5c5<\/a><\/li>\n<li><a href=\"#advanced-delete-op\">\uace0\uae09 \uc0ad\uc81c \uc791\uc5c5<\/a><\/li>\n<li><a href=\"#advanced-increment-op\">\uace0\uae09 \uc778\ud06c\ub9bd\uc158 \uc791\uc5c5<\/a><\/li>\n<li><a href=\"#advanced-decrement-op\">\uace0\uae09 \uc120\uc5b8 \uc791\uc5c5<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\uc774 7\uac00\uc9c0 \uc0c8\ub85c\uc6b4 \ubc84\ud0b7 \uc561\uc138\uc11c\ub97c \uc0ac\uc6a9\ud558\uba74 CAS\ub97c \uc9c1\uc811 \ud65c\uc6a9\ud558\uc5ec \uacbd\ud569\uc744 \ucc98\ub9ac\ud558\uac70\ub098 \ubb38\uc11c \ub9cc\ub8cc\ub97c \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4(\ub610\ub294 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/how-to-manage-ttl-with-couchbase-n1ql\/\">TTL<\/a>)\ub97c \ud1b5\ud574 \ub370\uc774\ud130 \uc11c\ube44\uc2a4(\ub610\ub294 KV)\uc758 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/products\/eventing\/\">\uc774\ubca4\ud2b8<\/a> \ub97c \ucd94\uac00\ud558\uace0 \ubd84\uc0b0 \uc6d0\uc790 \uce74\uc6b4\ud130 \uc5f0\uc0b0\uc744 \uc218\ud589\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc608\ub97c \ub4e4\uc5b4, \uc5c5\uc11c\ud2b8\uc640 \uac19\uc740 \uc791\uc5c5\uc744 \ud560 \ub54c \uae30\ubcf8 \ubc84\ud0b7 \uc561\uc138\uc11c\ub9ac\uc5d0 \ub9f9\ubaa9\uc801\uc73c\ub85c \uc758\uc874\ud558\uc9c0 \ub9d0\uace0 \ub2e4\uc74c\uacfc \uac19\uc774 \ud558\uc138\uc694. <code>src_bkt[id_str] = \uc77c\ubd80_\ubb38\uc11c<\/code>\ub97c \uc0ac\uc6a9\ud558\uba74 \uace0\uae09 \uc561\uc138\uc2a4\uc790\ub97c \ud1b5\ud574 \uc774\ubca4\ud2b8 \ud568\uc218\uc758 JavaScript \uae30\ubc18 \ub85c\uc9c1\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc11c\ub85c \ub2e4\ub978 \uc18c\uc2a4\uc5d0\uc11c \ub3d9\uc2dc \ubcc0\uc774\uac00 \ubc1c\uc0dd\ud55c \ud0a4\uc758 \uacbd\ud569(\ub610\ub294 \uacbd\ud569 \uac00\ub2a5\uc131)\uc744 \ud574\uacb0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>\ubb38\uc11c\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0 \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>couchbase.insert(src_bkt, {\"id: id_str}, some_doc)<\/code> \ub97c \ud074\ub9ad\ud558\uace0 \ubc18\ud658\uac12\uc744 \ud655\uc778\ud558\uc5ec \uc131\uacf5 \uc5ec\ubd80\ub97c \ud655\uc778\ud569\ub2c8\ub2e4.<\/li>\n<li>\ubb38\uc11c\uac00 \uc788\ub294 \uacbd\uc6b0 \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>couchbase.replace(src_bkt, {\"id: id_str, \"cas\": current_cas}, some_doc)<\/code> \ub97c \uc785\ub825\ud558\uace0 \ubc18\ud658\uac12\uc774 \uc131\uacf5 \ub610\ub294 CAS \ubd88\uc77c\uce58\uc778\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\uac01 \uace0\uae09 \ubc84\ud0b7 \uc811\uadfc\uc790\uc5d0 \ub300\ud55c JavaScript, \uc785\ub825 \ubcc0\uc774, \ucd9c\ub825 \ubcc0\uc774 \ubc0f\/\ub610\ub294 \ub85c\uadf8 \uba54\uc2dc\uc9c0\ub97c \ud3ec\ud568\ud55c \uc804\uccb4 \uc608\uc81c\ub97c \ubcf4\ub824\uba74 \ub2e4\uc74c\uc744 \ucc38\uc870\ud558\uc138\uc694. <a href=\"https:\/\/docs.couchbase.com\/server\/6.6\/eventing\/eventing-examples.html?ref=blog#examples-scriptlets-advanced-accessors\" target=\"_blank\" rel=\"noopener noreferrer\">\uc2a4\ud06c\ub9bd\ud2c0\ub9bf: \uace0\uae09 \uc561\uc138\uc11c\ub9ac \ud578\ub4e4\ub7ec<\/a> \ubb38\uc11c \uc608\uc81c \uc139\uc158\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong id=\"advanced-get-op\">\uace0\uae09 GET:<\/strong> \uacb0\uacfc = <code>couchbase.get(\ubc14\uc778\ub529, \uba54\ud0c0)<\/code><\/p>\n<p>\uc774 \uc791\uc5c5\uc744 \ud1b5\ud574 \ubc84\ud0b7\uc5d0\uc11c \uba54\ud0c0\ub370\uc774\ud130\uc640 \ud568\uaed8 \ubb38\uc11c\ub97c \uc77d\uace0 \ud6c4\uc18d \uc791\uc5c5\uc744 \ud1b5\ud574 CAS\ub97c \ud65c\uc6a9\ud558\uac70\ub098 \ub2e4\uc74c\uc744 \ud655\uc778\/\uc218\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>\ub9cc\ub8cc_\ub0a0\uc9dc<\/code>.<\/p>\n<p>\uae30\ubcf8 \ubc84\ud0b7 \uc561\uc138\uc11c\ub9ac\uc758 \uacbd\uc6b0\uc640 \ub300\uc870\ub429\ub2c8\ub2e4. <code>GET<\/code> \uc5f0\uc0b0\uc740 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \ubc14\uc778\ub529\uc774\ub098 \ub9f5\uc744 \ub178\ucd9c\ud560 \ubfd0\uc785\ub2c8\ub2e4, <code>var adoc = src_bkt[meta.id]<\/code>\ubc18\ud658 \uac12\uc740 \uba54\ud0c0\ub370\uc774\ud130 \uc5c6\uc774 \ubb38\uc11c\ub9cc \ubc18\ud658\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 \uace0\uae09\uc758 \uc608\uc785\ub2c8\ub2e4. <code>GET<\/code> \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:js decode:true\">function OnUpdate(doc, meta) {\r\n    log('input doc ', doc);\r\n    log('input meta', meta);\r\n    \/\/ could be the same or different\r\n    var new_meta = {\"id\":\"test_adv_get::1\"};\r\n    var result = couchbase.get(src_bkt,new_meta);\r\n    if (result.success) {\r\n        log('success adv. get: result',result);\r\n    } else {\r\n        log('failure adv. get: id',new_meta.id,'result',result);\r\n    }\r\n}<\/pre>\n<p>\uba87 \uac00\uc9c0 \ubc18\ud658 \uac12 \uc608\uc2dc\uc785\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:js decode:true\">{\r\n    \"doc\": {\r\n        \"id\": 1,\r\n        \"type\": \"test_adv_get\"\r\n    },\r\n    \"meta\": {\r\n        \"id\": \"test_adv_get::1\",\r\n        \"cas\": \"1610034762747412480\",\r\n        \"data_type\": \"json\"\r\n    },\r\n    \"success\": true\r\n}\r\n\r\n{\r\n    \"doc\": {\r\n        \"a\": 1,\r\n        \"random\": 0.09799092443129842\r\n    },\r\n    \"meta\": {\r\n        \"id\": \"test_adv_insert:1\",\r\n        \"cas\": \"1610140272584884224\",\r\n        \"expiry_date\": \"2021-01-08T21:12:12.000Z\",\r\n        \"data_type\": \"json\"\r\n    },\r\n    \"success\": true\r\n}\r\n\r\n{\r\n    \"error\": {\r\n        \"code\": 272,\r\n        \"name\": \"LCB_KEY_ENOENT\",\r\n        \"desc\": \"The document key does not exist on the server\",\r\n        \"key_not_found\": true\r\n    },\r\n    \"success\": false\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong id=\"advanced-insert-op\">\uace0\uae09 \uc0bd\uc785<\/strong>\uacb0\uacfc = <code>couchbase.insert(\ubc14\uc778\ub529, \uba54\ud0c0, \ubb38\uc11c)<\/code><\/p>\n<p>\uc774 \uc791\uc5c5\uc744 \ud1b5\ud574 \ubc84\ud0b7\uc5d0 \uc0c8 \ubb38\uc11c\ub97c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc9c0\uc815\ub41c \ud0a4\ub97c \uac00\uc9c4 \ubb38\uc11c\uac00 \uc774\ubbf8 \uc874\uc7ac\ud558\uba74 \uc774 \uc791\uc5c5\uc740 \uc2e4\ud328\ud569\ub2c8\ub2e4. \ubb38\uc11c\uc5d0 \ub9cc\ub8cc \uc2dc\uac04(\ub610\ub294 TTL)\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uace0\uae09 \ubc84\ud0b7 \uc561\uc138\uc11c\uc640 \uc720\uc0ac\ud55c \uae30\ubcf8 \ubc84\ud0b7 \uc561\uc138\uc11c \uc791\uc5c5\uc740 \uc5c6\uc2b5\ub2c8\ub2e4. <code>\uc0bd\uc785<\/code> \uc791\uc5c5 ( <code>src_bkt[meta.id] = adoc<\/code> \ub294 \uc5c5\uc11c\ud2b8\uc5d0 \uac00\uae5d\uc2b5\ub2c8\ub2e4).<\/p>\n<p>\ub2e4\uc74c\uc740 \uace0\uae09\uc758 \uc608\uc785\ub2c8\ub2e4. <code>\uc0bd\uc785<\/code> \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:js decode:true\">function OnUpdate(doc, meta) {\r\n    log('input meta', meta);\r\n    log('input doc ', doc);\r\n    \/\/ could be the same or different\r\n    var new_meta = {\"id\":\"test_adv_insert:1\"};\r\n    \/\/ optional set an expiry 60 seconds in the future\r\n    \/\/ new_meta.expiry_date = new Date(Date.now() + 60 * 1000);\r\n    var new_doc = doc;\r\n    new_doc.random = Math.random();\r\n    var result = couchbase.insert(src_bkt,new_meta,new_doc);\r\n    if (result.success) {\r\n        log('success adv. insert: result',result);\r\n    } else {\r\n        log('failure adv. insert: id',new_meta.id,'result',result);\r\n    }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>\uba87 \uac00\uc9c0 \ubc18\ud658 \uac12 \uc608\uc2dc\uc785\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:js decode:true\">{\r\n    \"meta\": {\r\n        \"id\": \"test_adv_insert:1\",\r\n        \"cas\": \"1610041053310025728\"\r\n    },\r\n    \"success\": true\r\n}\r\n\r\n{\r\n    \"error\": {\r\n        \"code\": 272,\r\n        \"name\": \"LCB_KEY_EEXISTS\",\r\n        \"desc\": \"The document key already exists in the server.\",\r\n        \"key_already_exists\": true\r\n    },\r\n    \"success\": false\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p><strong id=\"advanced-upsert-op\">\uace0\uae09 UPSERT<\/strong>\uacb0\uacfc = <code>couchbase.upsert(\ubc14\uc778\ub529, \uba54\ud0c0, \ubb38\uc11c)<\/code><\/p>\n<p>\uc774 \uc791\uc5c5\uc744 \ud1b5\ud574 \ubc84\ud0b7\uc5d0 \uc788\ub294 \uae30\uc874 \ubb38\uc11c\ub97c \uc5c5\ub370\uc774\ud2b8\ud558\uac70\ub098, \uc5c6\ub294 \uacbd\uc6b0 \uc9c0\uc815\ub41c \ud0a4\ub85c \uc0c8 \ubb38\uc11c\ub97c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc791\uc5c5\uc5d0\uc11c\ub294 CAS\ub97c \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4(\uc790\ub3d9 \ubb34\uc2dc\ub428). \ub610\ud55c \ubb38\uc11c\uc5d0 \ub9cc\ub8cc \uc2dc\uac04(\ub610\ub294 TTL)\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uae30\ubcf8 \ubc84\ud0b7 \uc561\uc138\uc11c\ub9ac\uc758 \uacbd\uc6b0\uc640 \ub300\uc870\ub429\ub2c8\ub2e4. <code>SET<\/code> \ubc84\ud0b7 \ubc14\uc778\ub529 \ubcc4\uce6d\uc744 \ud1b5\ud574 \uc815\uc758\ub41c \ub178\ucd9c\ub41c \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \ub9f5\ub9cc \uc0ac\uc6a9\ud558\ub294 \uc5f0\uc0b0\uc785\ub2c8\ub2e4. <code>src_bkt[meta.id] = adoc<\/code>. \uae30\ubcf8 <code>SET<\/code> \uc5f0\uc0b0\uc5d0\ub294 \ubc18\ud658\uac12(\uc0c1\ud0dc \ubc0f \uba54\ud0c0\ub370\uc774\ud130 \uc5c6\uc74c)\uc774 \uc5c6\uc73c\ubbc0\ub85c CAS \uac12\uc744 \ud655\uc778\ud560 \ubc29\ubc95\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 \uace0\uae09\uc758 \uc608\uc785\ub2c8\ub2e4. <code>UPSERT<\/code> \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:js decode:true\">function OnUpdate(doc, meta) {\r\n    log('input meta', meta);\r\n    log('input doc ', doc);\r\n    \/\/ could be the same or different\r\n    var new_meta = {\"id\":\"test_adv_upsert:1\"}; \/\/ CAS if supplied will be ignored\r\n    \/\/ optional set an expiry 60 seconds in the future\r\n    \/\/ new_meta.expiry_date = new Date(Date.now() + 60 * 1000);\r\n    var new_doc = doc;\r\n    new_doc.random = Math.random();\r\n    var result = couchbase.upsert(src_bkt,new_meta,new_doc);\r\n    if (result.success) {\r\n        log('success adv. upsert: result',result);\r\n    } else {\r\n        log('failure adv. upsert: id',new_meta.id,'result',result);\r\n    }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>\ubc18\ud658 \uac12 \uc608\uc2dc\uc785\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:js decode:true\">{\r\n    \"meta\": {\r\n        \"id\": \"test_adv_upsert:1\",\r\n        \"cas\": \"1610127444908376064\"\r\n    },\r\n    \"success\": true\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong id=\"advanced-replace-op\">\uace0\uae09 \uad50\uccb4<\/strong>\uacb0\uacfc = <code>couchbase.replace(\ubc14\uc778\ub529, \uba54\ud0c0, \ubb38\uc11c)<\/code><\/p>\n<p>\uc774 \uc791\uc5c5\uc740 \ubc84\ud0b7\uc5d0 \uc788\ub294 \uae30\uc874 \ubb38\uc11c\ub97c \ub300\uccb4\ud569\ub2c8\ub2e4. \uc9c0\uc815\ub41c \ud0a4\ub97c \uac00\uc9c4 \ubb38\uc11c\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc73c\uba74 \uc774 \uc791\uc5c5\uc740 \uc2e4\ud328\ud569\ub2c8\ub2e4. \uc774 \uc791\uc5c5\uc740 \uc791\uc5c5\uc744 \uc9c4\ud589\ud558\uae30 \uc804\uc5d0 \uc804\uc81c \uc870\uac74\uc73c\ub85c \uc77c\uce58\ud574\uc57c \ud558\ub294 CAS \uac12\uc744 \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c \ubb38\uc11c\uc5d0 \ub9cc\ub8cc \uc2dc\uac04(\ub610\ub294 TTL)\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uace0\uae09 \ubc84\ud0b7 \uc561\uc138\uc11c\uc640 \uc720\uc0ac\ud55c \uae30\ubcf8 \ubc84\ud0b7 \uc561\uc138\uc11c \uc791\uc5c5\uc740 \uc5c6\uc2b5\ub2c8\ub2e4. <code>\uad50\uccb4<\/code> \uc791\uc5c5 ( <code>src_bkt[meta.id] = adoc<\/code> \ub294 \uc5c5\uc11c\ud2b8\uc5d0 \uac00\uae5d\uc2b5\ub2c8\ub2e4).<\/p>\n<p>\ub2e4\uc74c\uc740 \uace0\uae09\uc758 \uc608\uc785\ub2c8\ub2e4. <code>\uad50\uccb4<\/code> \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:js decode:true\">function OnUpdate(doc, meta) {\r\n    log('input meta', meta);\r\n    log('input doc ', doc);\r\n\r\n    var mode = 3; \/\/ 1-&gt; no CA, 2-&gt; mismatch in CA, 3-&gt; good CAS\r\n\r\n    \/\/ Setup, make sure we have our doc to \"replace\", ignore any errors\r\n    couchbase.insert(src_bkt,{\"id\":\"test_adv_replace:10\"},{\"a:\": 1});\r\n\r\n    var new_meta;\r\n    if (mode === 1) {\r\n        \/\/ If we pass no CAS it will succeed\r\n        new_meta = {\"id\":\"test_adv_replace:10\"};\r\n        \/\/ optional set an expiry 60 seconds in the future\r\n        \/\/ new_meta.expiry_date = new Date(Date.now() + 60 * 1000);\r\n    }\r\n    if (mode === 2) {\r\n        \/\/ If we pass a non-matching CAS it will fail, so test this\r\n        new_meta = {\"id\":\"test_adv_replace:10\", \"cas\":\"1111111111111111111\"};\r\n    }\r\n    if (mode === 3) {\r\n        \/\/ If we pass the matching or current CAS it will succeed\r\n        var tmp_r = couchbase.get(src_bkt,{\"id\":\"test_adv_replace:10\"});\r\n        if (tmp_r.success) {\r\n            \/\/ Here we use the current CAS just read via couchbase.get(...)\r\n            new_meta = {\"id\":\"test_adv_replace:10\", \"cas\": tmp_r.meta.cas};\r\n        } else {\r\n            log('Cannot replace non-existing key that create it and rerun',\"test_adv_replace:10\");\r\n            return;\r\n        }\r\n    }\r\n    var new_doc = doc;\r\n    new_doc.random = Math.random();\r\n    var result = couchbase.replace(src_bkt,new_meta,new_doc);\r\n    if (result.success) {\r\n        log('success adv. replace: result',result);\r\n    } else {\r\n        log('failure adv. replace: id',new_meta.id,'result',result);\r\n    }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>\uba87 \uac00\uc9c0 \ubc18\ud658 \uac12 \uc608\uc2dc\uc785\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:js decode:true\">{\r\n    \"meta\": {\r\n        \"id\": \"test_adv_replace:10\",\r\n        \"cas\": \"1610130177286144000\"\r\n    },\r\n    \"success\": true\r\n}\r\n\r\n{\r\n    \"error\": {\r\n        \"code\": 272,\r\n        \"name\": \"LCB_KEY_EEXISTS\",\r\n        \"desc\": \"The document key exists with a CAS value different than specified\",\r\n        \"cas_mismatch\": true\r\n    },\r\n    \"success\": false\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong id=\"advanced-delete-op\">\uace0\uae09 \uc0ad\uc81c<\/strong>\uacb0\uacfc = <code>couchbase.delete(\ubc14\uc778\ub529, \uba54\ud0c0)<\/code><\/p>\n<p>\uc774 \uc791\uc5c5\uc744 \ud1b5\ud574 \ud0a4\ub85c \uc9c0\uc815\ub41c \ubc84\ud0b7\uc5d0\uc11c \ubb38\uc11c\ub97c \uc0ad\uc81c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc120\ud0dd\uc801\uc73c\ub85c \uc791\uc5c5\uc744 \uc9c4\ud589\ud558\uae30 \uc704\ud55c \uc804\uc81c \uc870\uac74\uc73c\ub85c \uc77c\uce58\uc2dc\ud0ac CAS \uac12\uc744 \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uae30\ubcf8 \ubc84\ud0b7 \uc561\uc138\uc11c\ub9ac\uc758 \uacbd\uc6b0\uc640 \ub300\uc870\ub429\ub2c8\ub2e4. <code>DEL<\/code> \uc5f0\uc0b0\uc740 \ub2e8\uc21c\ud788 \ub178\ucd9c\ub41c \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \ubc14\uc778\ub529 \ub610\ub294 \ub9f5\uc744 \uc0ac\uc6a9\ud558\ub294 \uc5f0\uc0b0\uc785\ub2c8\ub2e4, <code>\uc0ad\uc81c src_bkt[\uba54\ud0c0 \uc544\uc774\ub514]<\/code>\ubc18\ud658\uac12\uc774 \uc5c6\ub294 \uacbd\uc6b0(\uc0c1\ud0dc \ubc0f \uba54\ud0c0\ub370\uc774\ud130 \uc5c6\uc74c).<\/p>\n<p>\ub2e4\uc74c\uc740 \uace0\uae09\uc758 \uc608\uc785\ub2c8\ub2e4. <code>\uc0ad\uc81c<\/code> \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:js decode:true\">function OnUpdate(doc, meta) {\r\n    log('input meta', meta);\r\n    log('input doc ', doc);\r\n\r\n    var mode = 4; \/\/ 1-&gt; no CA, 2-&gt; mismatch in CA, 3-&gt; good CAS, 4-&gt; no such key\r\n\r\n    \/\/ Setup, make sure we have our doc to \"delete\", ignore any errors\r\n    couchbase.insert(src_bkt,{\"id\":\"test_adv_delete:10\"},{\"a:\": 1});\r\n\r\n    var new_meta;\r\n    if (mode === 1) {\r\n        \/\/ If we pass no CAS it will succeed\r\n        new_meta = {\"id\":\"test_adv_delete:10\"};\r\n        \/\/ optional set an expiry 60 seconds in the future\r\n        \/\/ new_meta.expiry_date = new Date(Date.now() + 60 * 1000);\r\n    }\r\n    if (mode === 2) {\r\n        \/\/ If we pass a non-matching CAS it will fail, so test this\r\n        new_meta = {\"id\":\"test_adv_delete:10\", \"cas\":\"1111111111111111111\"};\r\n    }\r\n    if (mode === 3) {\r\n        \/\/ If we pass the matching or current CAS it will succeed\r\n        var tmp_r = couchbase.get(src_bkt,{\"id\":\"test_adv_delete:10\"});\r\n        if (tmp_r.success) {\r\n            \/\/ Here we use the current CAS just read via couchbase.get(...)\r\n            new_meta = {\"id\":\"test_adv_delete:10\", \"cas\": tmp_r.meta.cas};\r\n        } else {\r\n            log('Cannot delete non-existing key that create it and rerun',\"test_adv_delete:10\");\r\n            return;\r\n        }\r\n    }\r\n    if (mode === 4) {\r\n        \/\/ Remove so that we have: no such key\r\n        delete src_bkt[\"test_adv_delete:10\"]\r\n        new_meta = {\"id\":\"test_adv_delete:10\"};\r\n    }\r\n    var result = couchbase.delete(src_bkt,new_meta);\r\n    if (result.success) {\r\n        log('success adv. delete: result',result);\r\n    } else {\r\n        log('failure adv. delete: id',new_meta.id,'result',result);\r\n    }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>\uba87 \uac00\uc9c0 \ubc18\ud658 \uac12 \uc608\uc2dc\uc785\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:js decode:true\">{\r\n    \"meta\": {\r\n        \"id\": \"key::10\",\r\n        \"cas\": \"1609374065129816064\"\r\n    },\r\n    \"success\": true\r\n}\r\n\r\n{\r\n    \"error\": {\r\n        \"code\": 272,\r\n        \"name\": \"LCB_KEY_EEXISTS\",\r\n        \"desc\": \"The document key exists with a CAS value different than specified\",\r\n        \"cas_mismatch\": true\r\n    },\r\n    \"success\": false\r\n}\r\n\r\n{\r\n    \"error\": {\r\n        \"code\": 272,\r\n        \"name\": \"LCB_KEY_ENOENT\",\r\n        \"desc\": \"The document key does not exist on the server\",\r\n        \"key_not_found\": true\r\n    },\r\n    \"success\": false\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong id=\"advanced-increment-op\">\uace0\uae09 \uc778\ud06c\ub9bd\uc158<\/strong>\uacb0\uacfc = <code>couchbase.increment(\ubc14\uc778\ub529, \uba54\ud0c0)<\/code><\/p>\n<p>\uc774 \uc791\uc5c5\uc740 \ud544\ub4dc\ub97c \uc6d0\uc790 \ub2e8\uc704\ub85c \uc99d\uac00\uc2dc\ud0b5\ub2c8\ub2e4. <code>\uce74\uc6b4\ud2b8<\/code> \ub97c \uc9c0\uc815\ud55c \ubb38\uc11c\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4. \ubb38\uc11c\uc758 \uad6c\uc870\ub294 \uc544\ub798\uc640 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:js decode:true\">{\"count\": 23} \/\/ 23 is the current counter value\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>\uadf8\ub9ac\uace0 <code>\uc99d\ubd84<\/code> \uc5f0\uc0b0\uc740 \uc99d\ubd84 \ud6c4 \uac12\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc9c0\uc815\ub41c \uce74\uc6b4\ud130 \ubb38\uc11c\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc73c\uba74 \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \ubb38\uc11c\uac00 \uc0dd\uc131\ub429\ub2c8\ub2e4. <code>\uce74\uc6b4\ud2b8<\/code> \uac12\uc744 0\uc73c\ub85c \uc124\uc815\ud558\uace0 \uc704\uc5d0\uc11c \uc5b8\uae09\ud55c \uad6c\uc870\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c \uccab \ubc88\uc9f8 \ubc18\ud658 \uac12\uc740 1\uc774 \ub429\ub2c8\ub2e4.<\/p>\n<p>KV \uc5d4\uc9c4 API\uc758 \uc81c\ud55c\uc73c\ub85c \uc778\ud574 \ud604\uc7ac \uc774 \uc791\uc5c5\uc740 \uc804\uccb4 \ubb38\uc11c \uce74\uc6b4\ud130\ub97c \uc870\uc791\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uace0\uae09 \ubc84\ud0b7 \uc561\uc138\uc11c\uc640 \uc720\uc0ac\ud55c \uae30\ubcf8 \ubc84\ud0b7 \uc561\uc138\uc11c \uc791\uc5c5\uc740 \uc5c6\uc2b5\ub2c8\ub2e4. <code>\uc778\ud06c\ub9bd\uc158<\/code> \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 \uace0\uae09\uc758 \uc608\uc785\ub2c8\ub2e4. <code>\uc778\ud06c\ub9bd\uc158<\/code> \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:js decode:true\">function OnUpdate(doc, meta) {\r\n    log('input meta', meta);\r\n    log('input doc ', doc);\r\n\r\n    \/\/ if doc.count doesn't exist it will be created\r\n    var ctr_meta = {\"id\": \"my_atomic_counter:1\" };\r\n    var result = couchbase.increment(src_bkt,ctr_meta);\r\n    if (result.success) {\r\n        log('success adv. increment: result',result);\r\n    } else {\r\n        log('failure adv. increment: id',ctr_meta.id,'result',result);\r\n    }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>\ubc18\ud658 \uac12\uc758 \uc608\uc2dc, \ub2e4\uc74c\uacfc \uac19\uc774 \uc0dd\uc131\ud55c\ub2e4\uace0 \uac00\uc815\ud569\ub2c8\ub2e4. <code>KEY \"my_atomic_counter:1\" DOC {\"count\": 23}<\/code> \uc704\uc758 \uc774\ubca4\ud2b8 \ud568\uc218\uac00 \ubc30\ud3ec\ub418\uba74 \uce74\uc6b4\ud2b8\uac00 \uc989\uc2dc \uc99d\uac00\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:js decode:true\">{\r\n    \"doc\": {\r\n        \"count\": 24\r\n    },\r\n    \"meta\": {\r\n        \"id\": \"key::1\",\r\n        \"cas\": \"1609374571840471040\"\r\n    },\r\n    \"success\": true\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong id=\"advanced-decrement-op\">\uace0\uae09 \uc120\uc5b8<\/strong>\uacb0\uacfc = <code>couchbase.decrement(\ubc14\uc778\ub529, \uba54\ud0c0)<\/code><\/p>\n<p>\uc774 \uc791\uc5c5\uc740 \ud544\ub4dc\ub97c \uc6d0\uc790 \ub2e8\uc704\ub85c \uac10\uc18c\uc2dc\ud0b5\ub2c8\ub2e4. <code>\uce74\uc6b4\ud2b8<\/code> \ub97c \uc9c0\uc815\ud55c \ubb38\uc11c\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4. \ubb38\uc11c\uc758 \uad6c\uc870\ub294 \uc544\ub798\uc640 \uac19\uc544\uc57c \ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:js decode:true\">{\"count\": 23} \/\/ 23 is the current counter value\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>\uadf8\ub9ac\uace0 <code>\uac10\uc18c<\/code> \uc5f0\uc0b0\uc740 \uac10\uc18c \ud6c4 \uac12\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc9c0\uc815\ud55c \uce74\uc6b4\ud130 \ubb38\uc11c\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc73c\uba74 <code>\uce74\uc6b4\ud2b8<\/code> \uac12\uc744 0\uc73c\ub85c \uc124\uc815\ud558\uace0 \uc704\uc5d0\uc11c \uc5b8\uae09\ud55c \uad6c\uc870\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uacb0\uacfc\uc801\uc73c\ub85c \uccab \ubc88\uc9f8 \ubc18\ud658 \uac12\uc740 -1\uc774 \ub429\ub2c8\ub2e4.<\/p>\n<p>KV \uc5d4\uc9c4 API\uc758 \uc81c\ud55c\uc73c\ub85c \uc778\ud574 \ud604\uc7ac \uc774 \uc791\uc5c5\uc740 \uc804\uccb4 \ubb38\uc11c \uce74\uc6b4\ud130\ub97c \uc870\uc791\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uace0\uae09 \ubc84\ud0b7 \uc561\uc138\uc11c\uc640 \uc720\uc0ac\ud55c \uae30\ubcf8 \ubc84\ud0b7 \uc561\uc138\uc11c \uc791\uc5c5\uc740 \uc5c6\uc2b5\ub2c8\ub2e4. <code>\uc120\uc5b8<\/code> \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 \uace0\uae09\uc758 \uc608\uc785\ub2c8\ub2e4. <code>\uc120\uc5b8<\/code> \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:js decode:true\">function OnUpdate(doc, meta) {\r\n    log('input meta', meta);\r\n    log('input doc ', doc);\r\n\r\n    \/\/ if doc.count doesn't exist it will be created\r\n    var ctr_meta = {\"id\": \"my_atomic_counter:1\" };\r\n    var result = couchbase.decrement(src_bkt,ctr_meta);\r\n    if (result.success) {\r\n        log('success adv. decrement: result',result);\r\n    } else {\r\n        log('failure adv. decrement: id',ctr_meta.id,'result',result);\r\n    }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>\ubc18\ud658 \uac12\uc758 \uc608\uc2dc, \ub2e4\uc74c\uacfc \uac19\uc774 \uc0dd\uc131\ud55c\ub2e4\uace0 \uac00\uc815\ud569\ub2c8\ub2e4. <code>KEY \"my_atomic_counter:1\" DOC {\"count\": 23}<\/code> \uc704\uc758 \uc774\ubca4\ud2b8 \ud568\uc218\uac00 \ubc30\ud3ec\ub418\uba74 \uc989\uc2dc \uce74\uc6b4\ud2b8\uac00 \uac10\uc18c\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:js decode:true\">{\r\n    \"doc\": {\r\n        \"count\": 22\r\n    },\r\n    \"meta\": {\r\n        \"id\": \"key::1\",\r\n        \"cas\": \"1609374770297176064\"\r\n    },\r\n    \"success\": true\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h2>\ucc38\uc870<\/h2>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/current\/eventing\/eventing-overview.html?ref=blog\" target=\"_blank\" rel=\"noopener noreferrer\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc774\ubca4\ud2b8 \ubb38\uc11c<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/current\/eventing\/eventing-advanced-keyspace-accessors.html?ref=blog\" target=\"_blank\" rel=\"noopener noreferrer\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc774\ubca4\ud2b8 \uace0\uae09 \uc811\uadfc\uc790 \ubb38\uc11c<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/current\/eventing\/eventing-examples.html?ref=blog\" target=\"_blank\" rel=\"noopener noreferrer\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc774\ubca4\ud2b8 \uc608\uc2dc<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/6.6\/introduction\/whats-new.html?ref=blog\" target=\"_blank\" rel=\"noopener noreferrer\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84 6.6\uc758 \uc0c8\ub85c\uc6b4 \uae30\ub2a5<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/tag\/eventing\/?ref=blog\" target=\"_blank\" rel=\"noopener noreferrer\">\uc774\ubca4\ud2b8\uc5d0 \uad00\ud55c Couchbase \ube14\ub85c\uadf8<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Advanced Bucket Accessors in Couchbase make it possible to access advanced key-value store (KV) functionality using the following built-in operators. They utilize the same bucket bindings defined in the handler as Basic Bucket Accessors, but expose a richer set of [&hellip;]<\/p>","protected":false},"author":42711,"featured_media":10196,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,2273,9327],"tags":[1543,9247,1991],"ppma_author":[9113],"class_list":["post-10195","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-eventing","category-javascript","tag-javascript","tag-key-value-store","tag-ttl"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Eventing: Introducing Advanced Bucket Accessors in Couchbase<\/title>\n<meta name=\"description\" content=\"Learn how to implement Advanced Bucket Accessors in Couchbase Server for Eventing to get direct access to TTLs, CAS values and more key-value functionality.\" \/>\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\/eventing-introducing-advanced-bucket-accessors-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Eventing: Introducing Advanced Bucket Accessors in Couchbase\" \/>\n<meta property=\"og:description\" content=\"Learn how to implement Advanced Bucket Accessors in Couchbase Server for Eventing to get direct access to TTLs, CAS values and more key-value functionality.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/eventing-introducing-advanced-bucket-accessors-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-09T11:05:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T05:39:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/01\/banner.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jon Strabala, 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=\"Jon Strabala, Principal Product Manager, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/\"},\"author\":{\"name\":\"Jon Strabala, Principal Product Manager, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c991579f88217edee79ffedb6fc914cc\"},\"headline\":\"Eventing: Introducing Advanced Bucket Accessors in Couchbase\",\"datePublished\":\"2021-06-09T11:05:56+00:00\",\"dateModified\":\"2025-06-14T05:39:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/\"},\"wordCount\":939,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/01\/banner.png\",\"keywords\":[\"javascript\",\"key-value store\",\"TTL\"],\"articleSection\":[\"Couchbase Server\",\"Eventing\",\"JavaScript\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/\",\"name\":\"Eventing: Introducing Advanced Bucket Accessors in Couchbase\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/01\/banner.png\",\"datePublished\":\"2021-06-09T11:05:56+00:00\",\"dateModified\":\"2025-06-14T05:39:24+00:00\",\"description\":\"Learn how to implement Advanced Bucket Accessors in Couchbase Server for Eventing to get direct access to TTLs, CAS values and more key-value functionality.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/01\/banner.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/01\/banner.png\",\"width\":1200,\"height\":628,\"caption\":\"Learn how to use Advanced Bucket Accessors in Couchbase for key-value store Eventing\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Eventing: Introducing Advanced Bucket Accessors in Couchbase\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"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\/c991579f88217edee79ffedb6fc914cc\",\"name\":\"Jon Strabala, Principal Product Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9c6045b0c2f7b07b0ee10f94ad748a25\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/db52a9f6d84faba430dd38106cdbc16ff02c2066b103b5f6b4cfcde40e83c683?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/db52a9f6d84faba430dd38106cdbc16ff02c2066b103b5f6b4cfcde40e83c683?s=96&d=mm&r=g\",\"caption\":\"Jon Strabala, Principal Product Manager, Couchbase\"},\"description\":\"Jon Strabala is a Principal Product Manager, responsible for the Couchbase Eventing Service. Before joining Couchbase, he spent more than 20 years building software products across various domains, starting with EDA in aerospace then transitioning to building enterprise software focused on what today is coined \u201cIoT\u201d and \u201cat-scale data.\u201d Jon worked for several small software consultancies until eventually starting and managing his own firm. He has extensive experience in NoSQL\/NewSQL, both in contributing and commercializing new technologies such as compressed bitmaps and column stores. Jon holds a bachelor\u2019s degree in electrical engineering and a master's in computer engineering, both from the University of Southern California, and an MBA from the University of California at Irvine.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/jon-strabala\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\uc774\ubca4\ud2b8: \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \uace0\uae09 \ubc84\ud0b7 \uc561\uc138\uc11c\ub9ac\ub97c \uc18c\uac1c\ud569\ub2c8\ub2e4.","description":"\uc774\ubca4\ud2b8\uc6a9 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84\uc5d0\uc11c \uace0\uae09 \ubc84\ud0b7 \uc561\uc138\uc2a4\uc790\ub97c \uad6c\ud604\ud558\uc5ec TTL, CAS \uac12 \ubc0f \uae30\ud0c0 \ud0a4-\uac12 \uae30\ub2a5\uc5d0 \uc9c1\uc811 \uc561\uc138\uc2a4\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uc138\uc694.","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\/eventing-introducing-advanced-bucket-accessors-couchbase\/","og_locale":"ko_KR","og_type":"article","og_title":"Eventing: Introducing Advanced Bucket Accessors in Couchbase","og_description":"Learn how to implement Advanced Bucket Accessors in Couchbase Server for Eventing to get direct access to TTLs, CAS values and more key-value functionality.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/eventing-introducing-advanced-bucket-accessors-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-06-09T11:05:56+00:00","article_modified_time":"2025-06-14T05:39:24+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/01\/banner.png","type":"image\/png"}],"author":"Jon Strabala, Principal Product Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Jon Strabala, Principal Product Manager, Couchbase","Est. reading time":"9\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/"},"author":{"name":"Jon Strabala, Principal Product Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c991579f88217edee79ffedb6fc914cc"},"headline":"Eventing: Introducing Advanced Bucket Accessors in Couchbase","datePublished":"2021-06-09T11:05:56+00:00","dateModified":"2025-06-14T05:39:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/"},"wordCount":939,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/01\/banner.png","keywords":["javascript","key-value store","TTL"],"articleSection":["Couchbase Server","Eventing","JavaScript"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/","name":"\uc774\ubca4\ud2b8: \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \uace0\uae09 \ubc84\ud0b7 \uc561\uc138\uc11c\ub9ac\ub97c \uc18c\uac1c\ud569\ub2c8\ub2e4.","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/01\/banner.png","datePublished":"2021-06-09T11:05:56+00:00","dateModified":"2025-06-14T05:39:24+00:00","description":"\uc774\ubca4\ud2b8\uc6a9 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84\uc5d0\uc11c \uace0\uae09 \ubc84\ud0b7 \uc561\uc138\uc2a4\uc790\ub97c \uad6c\ud604\ud558\uc5ec TTL, CAS \uac12 \ubc0f \uae30\ud0c0 \ud0a4-\uac12 \uae30\ub2a5\uc5d0 \uc9c1\uc811 \uc561\uc138\uc2a4\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uc138\uc694.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/01\/banner.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/01\/banner.png","width":1200,"height":628,"caption":"Learn how to use Advanced Bucket Accessors in Couchbase for key-value store Eventing"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/eventing-introducing-advanced-bucket-accessors-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Eventing: Introducing Advanced Bucket Accessors in Couchbase"}]},{"@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\/c991579f88217edee79ffedb6fc914cc","name":"Jon Strabala, \uc218\uc11d \uc81c\ud488 \uad00\ub9ac\uc790, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9c6045b0c2f7b07b0ee10f94ad748a25","url":"https:\/\/secure.gravatar.com\/avatar\/db52a9f6d84faba430dd38106cdbc16ff02c2066b103b5f6b4cfcde40e83c683?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/db52a9f6d84faba430dd38106cdbc16ff02c2066b103b5f6b4cfcde40e83c683?s=96&d=mm&r=g","caption":"Jon Strabala, Principal Product Manager, Couchbase"},"description":"\uc874 \uc2a4\ud2b8\ub77c\ubc1c\ub77c\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc774\ubca4\ud2b8 \uc11c\ube44\uc2a4\ub97c \ub2f4\ub2f9\ud558\ub294 \uc218\uc11d \uc81c\ud488 \uad00\ub9ac\uc790\uc785\ub2c8\ub2e4. Couchbase\uc5d0 \uc785\uc0ac\ud558\uae30 \uc804\uc5d0\ub294 \ud56d\uacf5\uc6b0\uc8fc \ubd84\uc57c\uc758 EDA\ub97c \uc2dc\uc791\uc73c\ub85c \uc624\ub298\ub0a0 \"IoT\"\uc640 \"\ub300\uaddc\ubaa8 \ub370\uc774\ud130\"\uc5d0 \ucd08\uc810\uc744 \ub9de\ucd98 \uc5d4\ud130\ud504\ub77c\uc774\uc988 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uad6c\ucd95\uc73c\ub85c \uc804\ud658\ud558\ub294 \ub4f1 20\ub144 \uc774\uc0c1 \ub2e4\uc591\ud55c \uc601\uc5ed\uc5d0\uc11c \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc81c\ud488\uc744 \uad6c\ucd95\ud588\uc2b5\ub2c8\ub2e4. Jon\uc740 \uc5ec\ub7ec \uc18c\uaddc\ubaa8 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ucee8\uc124\ud305 \ud68c\uc0ac\uc5d0\uc11c \uadfc\ubb34\ud558\ub2e4\uac00 \uacb0\uad6d \uc790\uc2e0\uc758 \ud68c\uc0ac\ub97c \uc124\ub9bd\ud558\uace0 \uacbd\uc601\ud558\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uadf8\ub294 \uc555\ucd95 \ube44\ud2b8\ub9f5\uacfc \uceec\ub7fc \uc2a4\ud1a0\uc5b4\uc640 \uac19\uc740 \uc0c8\ub85c\uc6b4 \uae30\uc220\uc5d0 \uae30\uc5ec\ud558\uace0 \uc0c1\uc6a9\ud654\ud558\ub294 \ub370 \uc788\uc5b4 NoSQL\/NewSQL\uc5d0 \ub300\ud55c \ud3ed\ub113\uc740 \uacbd\ud5d8\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. Jon\uc740 \uc11c\ub358 \uce98\ub9ac\ud3ec\ub2c8\uc544 \ub300\ud559\uad50\uc5d0\uc11c \uc804\uae30\uacf5\ud559 \ud559\uc0ac \ubc0f \ucef4\ud4e8\ud130\uacf5\ud559 \uc11d\uc0ac \ud559\uc704\ub97c, \uce98\ub9ac\ud3ec\ub2c8\uc544 \ub300\ud559\uad50 \uc5b4\ubc14\uc778 \ucea0\ud37c\uc2a4\uc5d0\uc11c MBA\ub97c \ucde8\ub4dd\ud588\uc2b5\ub2c8\ub2e4.","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/jon-strabala\/"}]}},"authors":[{"term_id":9113,"user_id":42711,"is_guest":0,"slug":"jon-strabala","display_name":"Jon Strabala, Principal Product Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/db52a9f6d84faba430dd38106cdbc16ff02c2066b103b5f6b4cfcde40e83c683?s=96&d=mm&r=g","author_category":"","last_name":"Strabala, Principal Product Manager, Couchbase","first_name":"Jon","job_title":"","user_url":"","description":"\uc874 \uc2a4\ud2b8\ub77c\ubc1c\ub77c\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc774\ubca4\ud2b8 \uc11c\ube44\uc2a4\ub97c \ub2f4\ub2f9\ud558\ub294 \uc218\uc11d \uc81c\ud488 \uad00\ub9ac\uc790\uc785\ub2c8\ub2e4. Couchbase\uc5d0 \uc785\uc0ac\ud558\uae30 \uc804\uc5d0\ub294 \ud56d\uacf5\uc6b0\uc8fc \ubd84\uc57c\uc758 EDA\ub97c \uc2dc\uc791\uc73c\ub85c \uc624\ub298\ub0a0 \"IoT\"\uc640 \"\ub300\uaddc\ubaa8 \ub370\uc774\ud130\"\uc5d0 \ucd08\uc810\uc744 \ub9de\ucd98 \uc5d4\ud130\ud504\ub77c\uc774\uc988 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uad6c\ucd95\uc73c\ub85c \uc804\ud658\ud558\ub294 \ub4f1 20\ub144 \uc774\uc0c1 \ub2e4\uc591\ud55c \uc601\uc5ed\uc5d0\uc11c \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc81c\ud488\uc744 \uad6c\ucd95\ud588\uc2b5\ub2c8\ub2e4. Jon\uc740 \uc5ec\ub7ec \uc18c\uaddc\ubaa8 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ucee8\uc124\ud305 \ud68c\uc0ac\uc5d0\uc11c \uadfc\ubb34\ud558\ub2e4\uac00 \uacb0\uad6d \uc790\uc2e0\uc758 \ud68c\uc0ac\ub97c \uc124\ub9bd\ud558\uace0 \uacbd\uc601\ud558\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uadf8\ub294 \uc555\ucd95 \ube44\ud2b8\ub9f5\uacfc \uceec\ub7fc \uc2a4\ud1a0\uc5b4\uc640 \uac19\uc740 \uc0c8\ub85c\uc6b4 \uae30\uc220\uc5d0 \uae30\uc5ec\ud558\uace0 \uc0c1\uc6a9\ud654\ud558\ub294 \ub370 \uc788\uc5b4 NoSQL\/NewSQL\uc5d0 \ub300\ud55c \ud3ed\ub113\uc740 \uacbd\ud5d8\uc744 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. Jon\uc740 \uc11c\ub358 \uce98\ub9ac\ud3ec\ub2c8\uc544 \ub300\ud559\uad50\uc5d0\uc11c \uc804\uae30\uacf5\ud559 \ud559\uc0ac \ubc0f \ucef4\ud4e8\ud130\uacf5\ud559 \uc11d\uc0ac \ud559\uc704\ub97c, \uce98\ub9ac\ud3ec\ub2c8\uc544 \ub300\ud559\uad50 \uc5b4\ubc14\uc778 \ucea0\ud37c\uc2a4\uc5d0\uc11c MBA\ub97c \ucde8\ub4dd\ud588\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/10195","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\/42711"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=10195"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/10195\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/10196"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=10195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=10195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=10195"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=10195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}