{"id":15981,"date":"2024-06-28T13:15:46","date_gmt":"2024-06-28T20:15:46","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=15981"},"modified":"2025-06-13T21:11:02","modified_gmt":"2025-06-14T04:11:02","slug":"couchbase-rails-guide-adaptive-data","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-rails-guide-adaptive-data\/","title":{"rendered":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc628 \ub808\uc77c\uc988: \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ub3d9\uc801 \uc801\uc751\ud615 \ub370\uc774\ud130 \ub3c4\uc785\uc744 \uc704\ud55c \uac00\uc774\ub4dc"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">\ub8e8\ube44 \uc628 \ub808\uc77c\uc988\ub294 \uc885\uc885 \uc0c8\ub85c\uc6b4 \ud504\ub85c\uc81d\ud2b8\ub97c \uc2dc\uc791\ud558\uae30 \uc704\ud574 \uc120\ud0dd\ud558\ub294 \ud504\ub808\uc784\uc6cc\ud06c\uc785\ub2c8\ub2e4. \uac1c\ubc1c \ubc0f \ubc18\ubcf5 \uc791\uc5c5\uc758 \uc18d\ub3c4\ub294 \uc5ec\ub7ec \uba74\uc5d0\uc11c \ud0c0\uc758 \ucd94\uc885\uc744 \ubd88\ud5c8\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c \ub370\uc774\ud130\uc5d0 \ub9ce\uc740 \uc720\uc5f0\uc131\uc774 \ud544\uc694\ud558\uace0 \uc720\ub3d9\uc801\uc778 \uad6c\uc870\ub97c \uac00\uc9c4 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ud504\ub808\uc784\uc6cc\ud06c\ub85c Rails\ub97c \uc0ac\uc6a9\ud558\uace0 \uc2f6\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \ubaa8\ub4e0 \uc885\ub958\uc758 \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud574\uc57c \ud558\ub294 \uc0ac\ubb3c \uc778\ud130\ub137 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774\ub098 \ucf58\ud150\uce20 \uad00\ub9ac \uc2dc\uc2a4\ud15c\uc744 \uad6c\ucd95\ud558\uace0 \uc788\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uae30\uc874 Rails\uc6a9 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc194\ub8e8\uc158\uc73c\ub85c\ub294 \ucda9\ubd84\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5b4\ub5bb\uac8c \ud574\uc57c \ud560\uae4c\uc694?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc774 \uac00\uc774\ub4dc\uc5d0\uc11c\ub294 Rails \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \uc644\uc804\ud788 \ud1b5\ud569\ub41c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c Couchbase\ub97c \ud65c\uc6a9\ud558\uae30 \uc704\ud55c \uace0\ub824 \uc0ac\ud56d\uacfc \ub2e8\uacc4\uc5d0 \ub300\ud574 \uc124\uba85\ud569\ub2c8\ub2e4. Couchbase\ub85c \uad6c\ucd95\ud558\uae30\ub85c \uacb0\uc815\ud558\uba74 \uae30\uc220 \uad6c\ud604\uc758 \ubcc0\ud654\ubfd0\ub9cc \uc544\ub2c8\ub77c \ub370\uc774\ud130\uc5d0 \uc811\uadfc\ud558\ub294 \ubc29\uc2dd\uc5d0 \ub300\ud55c \uac1c\ub150\uc801 \ubcc0\ud654\ub3c4 \ub3c4\uc785\ub429\ub2c8\ub2e4. \uc790\uc138\ud788 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<hr \/>\n<p><i><span style=\"font-weight: 400;\">\uc694\uc57d \ucf54\ub4dc\ub9cc \ubcf4\uace0 \uc2f6\uc73c\uc2e0\uac00\uc694? \ub2e4\uc74c\uc5d0\uc11c Ruby on Rails \ubc0f Couchbase Ruby ORM\uc73c\ub85c \ubaa8\ub4e0 CRUD \uc791\uc5c5\uc744 \uc2dc\uc5f0\ud558\ub294 \uc2e4\uc81c \uad6c\ucd95\ub41c \uc608\uc81c \uc571\uc744 \ud655\uc778\ud558\uc138\uc694. <\/span><\/i><a href=\"https:\/\/github.com\/hummusonrails\/realworld-couchbase-ruby-orm\/tree\/main\"><i><span style=\"font-weight: 400;\">GitHub<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">.<\/span><\/i><\/p>\n<hr \/>\n<h2>\ubb38\uc11c \ubaa8\ub378\uacfc \uad00\uacc4\ud615 \ubaa8\ub378<\/h2>\n<p><span style=\"font-weight: 400;\">Rails\uc5d0\uc11c\ub294 \uc77c\ubc18\uc801\uc73c\ub85c ActiveRecord\ub97c \uc0ac\uc6a9\ud558\ub294 \uad00\uacc4\ud615 \ubaa8\ub378\ub85c \uc791\uc5c5\ud558\ub294 \ub370 \uc775\uc219\ud569\ub2c8\ub2e4. \ub370\uc774\ud130\ub294 \ud589\uacfc \uc5f4\uc774 \uc788\ub294 \ud14c\uc774\ube14\ub85c \uad6c\uc131\ub418\uba70, \uc5d4\ud130\ud2f0 \uac04\uc758 \uad00\uacc4\ub294 \uc678\ub798 \ud0a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc815\uc758\ub429\ub2c8\ub2e4. \ubc18\uba74\uc5d0 Couchbase\ub294 \ub370\uc774\ud130\uac00 JSON \ubb38\uc11c\uc5d0 \uc800\uc7a5\ub418\ub294 \ubb38\uc11c \ubaa8\ub378\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ubb38\uc11c \ubaa8\ub378\uc740 \ub370\uc774\ud130 \uad6c\uc870\uc5d0 \ub354 \ub9ce\uc740 \uc720\uc5f0\uc131\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \uc774\uc81c \uc911\ucca9\ub41c \ub370\uc774\ud130\ub97c \uc0c1\uc704 \ub370\uc774\ud130\uc758 \ub3d9\uc77c\ud55c \ubb38\uc11c\uc5d0 \uc9c1\uc811 \uc800\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc989, \ube14\ub85c\uadf8 \ud50c\ub7ab\ud3fc\uc744 \uad6c\ucd95\ud558\ub294 \uacbd\uc6b0 \ub313\uae00 ID\ub85c \ub313\uae00\uc744 \uae30\uc0ac\uc5d0 \uc5f0\uacb0\ud558\ub294 \ub300\uc2e0 \uac01 \uae30\uc0ac\uc758 JSON \ubb38\uc11c\uc5d0 \uc9c1\uc811 \ub313\uae00\uc744 \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud560\uc9c0 \uc5ec\ubd80\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc124\uacc4\ud560 \ub54c \uace0\ub824\ud574\uc57c \ud558\ub294 \uc561\uc138\uc2a4 \ud328\ud134\uacfc \uc131\ub2a5 \uace0\ub824 \uc0ac\ud56d\uc5d0 \ub530\ub77c \ub2ec\ub77c\uc9d1\ub2c8\ub2e4.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ub370\uc774\ud130\uc758 \ucc28\uc774\ub294 \ub2e4\uc74c \uc608\uc2dc\uc640 \uac19\uc2b5\ub2c8\ub2e4.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc784\ubca0\ub4dc\ub41c \ub313\uae00:<\/span><\/p>\n<pre class=\"nums:false lang:js decode:true\">{\r\n  \"title\": \"\ub0b4 \uae30\uc0ac\",\r\n  \"content\": \"\uc774\uac83\uc740 \uae30\uc0ac\uc758 \ub0b4\uc6a9\uc785\ub2c8\ub2e4...\",\r\n  \"comments\": [\r\n    {\"author\": \"User1\", \"text\": \"\ud6cc\ub96d\ud55c \uae30\uc0ac\uc785\ub2c8\ub2e4!\"},\r\n    {\"author\": \"User2\", \"text\": \"\uc815\ubcf4 \uc8fc\uc154\uc11c \uac10\uc0ac\ud569\ub2c8\ub2e4.\"}\r\n  ]\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">\ubc18\uba74, \ub300\ubd80\ubd84\uc758 Rails \uac1c\ubc1c\uc790\uc5d0\uac8c \uc775\uc219\ud55c \uae30\uc874 \ubaa8\ub378\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/span><\/p>\n<pre class=\"nums:false lang:js decode:true\">{\r\n  \"title\": \"\ub0b4 \uae00\",\r\n  \"content\": \"\uc774\uac83\uc740 \uae30\uc0ac\uc758 \ub0b4\uc6a9\uc785\ub2c8\ub2e4...\",\r\n  \"comment_ids\": [\"comment1\", \"comment2\"]\r\n}\r\n<\/pre>\n<p>Couchbase\uc5d0\uc11c \ub370\uc774\ud130\ub97c \ubaa8\ub378\ub9c1\ud558\ub294 \ubc29\ubc95\uc744 \uacb0\uc815\ud560 \ub54c\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uc77d\uace0 \uc4f0\ub294 \ubc29\ubc95\uc744 \uace0\ub824\ud574\uc57c \ud569\ub2c8\ub2e4. \ubb38\uc11c \ubb38\uc11c \ub0b4\uc5d0 \ub313\uae00\uc744 \ud3ec\ud568\ud558\ub3c4\ub85d \uc120\ud0dd\ud558\uba74 \ubaa8\ub4e0 \ub370\uc774\ud130\uac00 \ub2e8\uc77c \ubb38\uc11c\uc5d0 \ud3ec\ud568\ub418\ubbc0\ub85c \uc77d\uae30 \uc791\uc5c5\uc744 \ub354 \ube60\ub974\uac8c \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc811\uadfc \ubc29\uc2dd\uc740 \ubaa8\ub4e0 \ub313\uae00\uacfc \ud568\uaed8 \ubb38\uc11c\ub97c \ube60\ub974\uac8c \uac80\uc0c9\ud574\uc57c \ud560 \ub54c \uc720\uc6a9\ud569\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \ubb38\uc11c\ub098 \ub313\uae00\uc744 \uc5c5\ub370\uc774\ud2b8\ud558\ub824\uba74 \uc804\uccb4 \ubb38\uc11c\ub97c \ub2e4\uc2dc \uc791\uc131\ud574\uc57c \ud55c\ub2e4\ub294 \ub2e8\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub294 \ud2b9\ud788 \ubb38\uc11c\uac00 \ud06c\uac70\ub098 \uc5c5\ub370\uc774\ud2b8\uac00 \uc790\uc8fc \uc774\ub8e8\uc5b4\uc9c0\ub294 \uacbd\uc6b0 \ube44\ud6a8\uc728\uc801\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \ub313\uae00 \uc784\ubca0\ub529\uc740 \ub313\uae00\uc774 \ubb38\uc11c\uc640 \ub3c5\ub9bd\uc801\uc73c\ub85c \uac70\uc758 \uc5c5\ub370\uc774\ud2b8\ub418\uc9c0 \uc54a\uace0 \uc77d\uae30 \uc131\ub2a5\uc774 \uc911\uc694\ud55c \uc2dc\ub098\ub9ac\uc624\uc5d0 \uc801\ud569\ud569\ub2c8\ub2e4.<\/p>\n<p><span style=\"font-weight: 400;\">\ubc18\uba74\uc5d0 \ub313\uae00\uc744 ID\ub85c \ucc38\uc870\ud558\uba74 \ubcf4\ub2e4 \uc138\ubd84\ud654\ub41c \uc5c5\ub370\uc774\ud2b8\uac00 \uac00\ub2a5\ud569\ub2c8\ub2e4. \uac01 \ub313\uae00\uc744 \ubb38\uc11c\uc640 \ub3c5\ub9bd\uc801\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c \uc4f0\uae30 \uc791\uc5c5\uc774 \ub354 \ud6a8\uc728\uc801\uc785\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \uc774 \uc811\uadfc \ubc29\uc2dd\uc740 \ubaa8\ub4e0 \ub313\uae00\uc774 \uc788\ub294 \ubb38\uc11c\ub97c \uac80\uc0c9\ud558\ub824\uba74 \uc5ec\ub7ec \ubb38\uc11c\ub97c \uac00\uc838\uc640\uc57c \ud558\ubbc0\ub85c \uc77d\uae30 \uc791\uc5c5 \uc18d\ub3c4\uac00 \ub290\ub824\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud328\ud134\uc740 \ub313\uae00\uc774 \uc790\uc8fc \uc5c5\ub370\uc774\ud2b8\ub418\uac70\ub098 \uc131\ub2a5\uc0c1\uc758 \uc774\uc720\ub85c \uc804\uccb4 \ubb38\uc11c \ud06c\uae30\ub97c \uc791\uac8c \uc720\uc9c0\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\uc5d0 \uc720\ub9ac\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc774\ub7ec\ud55c \uc7a5\ub2e8\uc810\uc744 \uc774\ud574\ud558\uba74 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uad6c\uc870\ud654\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc815\ubcf4\uc5d0 \uc785\uac01\ud55c \uacb0\uc815\uc744 \ub0b4\ub9ac\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4. \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc77d\uae30 \ubc0f \uc4f0\uae30 \ud328\ud134\uc744 \uc2e0\uc911\ud558\uac8c \uace0\ub824\ud558\uba74 \uc131\ub2a5\uc744 \ucd5c\uc801\ud654\ud558\uace0 \ud6a8\uc728\uc801\uc778 \ub370\uc774\ud130 \uad00\ub9ac\ub97c \ubcf4\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<h2>\ub808\uc77c\uc988 \uce90\uc2f1\uc740 \uc131\ub2a5 \uc808\ucda9\uc810\uc744 \uc904\uc774\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4.<\/h2>\n<p><span style=\"font-weight: 400;\">Rails \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc784\ubca0\ub514\ub4dc \ubb38\uc11c \uc811\uadfc \ubc29\uc2dd\uacfc \ucc38\uc870 \ubb38\uc11c \uc811\uadfc \ubc29\uc2dd \uac04\uc758 \uc7a0\uc7ac\uc801\uc778 \uc7a5\ub2e8\uc810\uc744 \uace0\ub824\ud560 \ud544\uc694\uc131\uc744 \uc644\ud654\ud558\uae30 \uc704\ud574 \ud65c\uc6a9\ud560 \uc218 \uc788\ub294 \ud55c \uac00\uc9c0 \ubc29\ubc95\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uadf8 \uc811\uadfc \ubc29\uc2dd\uc740 \uce90\uc2f1 \ubc0f \ud65c\uc6a9\uc785\ub2c8\ub2e4. <\/span><span style=\"font-weight: 400;\"><code>ActiveSupport::Cache<\/code><\/span><span style=\"font-weight: 400;\">. \ucd5c\uc18c\ud55c\uc758 \ucd94\uac00 \uad6c\uc131\uc73c\ub85c Couchbase\ub97c \ud1b5\ud574 \uadf8\ub807\uac8c \ud560 \uc218 \uc788\ub2e4\ub294 \uc0ac\uc2e4\uc744 \uc54c\uace0 \uacc4\uc168\ub098\uc694?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub8e8\ube44 SDK <\/span><a href=\"https:\/\/github.com\/couchbase\/couchbase-ruby-client\/blob\/main\/lib\/active_support\/cache\/couchbase_store.rb\"><span style=\"font-weight: 400;\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub370\uc774\ud130 \uc804\uc6a9 ActiveSupport \uce90\uc2dc \uc800\uc7a5\uc18c \uc9c0\uc6d0 \ud3ec\ud568<\/span><\/a><span style=\"font-weight: 400;\">. \uc774\ub807\uac8c \ud558\uba74 JSON \ubb38\uc11c \ub370\uc774\ud130\uc5d0 \ub300\ud55c ActiveSupport\uc758 \ubaa8\ub4e0 \uc774\uc810\uc744 \ub204\ub9b4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc5b4\ub5bb\uac8c \uc791\ub3d9\ud558\ub294\uc9c0 \uac04\ub2e8\ud788 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ub2e4\uc74c\uc744 \ucd94\uac00\ud558\uc5ec Couchbase SDK\ub97c \uc124\uce58\ud55c \ud6c4 <\/span><span style=\"font-weight: 400;\"><code>\ubcf4\uc11d \uce74\uc6b0\uce58\ubca0\uc774\uc2a4<\/code><\/span><span style=\"font-weight: 400;\"> \ub97c <\/span><em><span style=\"font-weight: 400;\">\ubcf4\uc11d \ud30c\uc77c<\/span><\/em><span style=\"font-weight: 400;\"> \ubc0f \uc2e4\ud589 <\/span><span style=\"font-weight: 400;\"><code>\ubc88\ub4e4 \uc124\uce58<\/code><\/span><span style=\"font-weight: 400;\"> \ub97c \uba85\ub839\uc904\uc5d0\uc11c \uc2e4\ud589\ud558\uba74 Rails \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \uce90\uc2f1 \uc9c0\uc6d0\uc744 \ud1b5\ud569\ud560 \uc900\ube44\uac00 \ub41c \uac83\uc785\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uba3c\uc800 Couchbase \uc2a4\ud1a0\uc5b4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4. <\/span><em><span style=\"font-weight: 400;\">config.rb<\/span><\/em><span style=\"font-weight: 400;\">:<\/span><\/p>\n<pre class=\"nums:false lang:ruby decode:true\">config.cache_store = :couchbase_store, {\r\n  connection_string: # YOUR_COUCHBASE_CAPELLA_CONNECTION_STRING\",\r\n  \uc0ac\uc6a9\uc790 \uc774\ub984: YOUR_COUCHBASE_ACCESS_CREDENTIALS_USERNAME,\r\n  \ube44\ubc00\ubc88\ud638: YOUR_COUCHBASE_ACCESS_CREDENTIALS_PASSWORD\",\r\n  bucket: YOUR_COUCHBASE_\ubc84\ud0b7_\uc774\ub984\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">\uadf8\ub7f0 \ub2e4\uc74c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ud5ec\ud37c \uba54\uc11c\ub4dc\ub97c \uc0dd\uc131\ud558\uc5ec \ub370\uc774\ud130\ub97c \uac00\uc838\uc640 \uce90\uc2dc\uc5d0 \uc800\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ube14\ub85c\uadf8 \ud50c\ub7ab\ud3fc\uc744 \ub9cc\ub4e0\ub2e4\uace0 \uac00\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uae00\uc740 \uc77c\ub2e8 \uac8c\uc2dc\ub418\uba74 \uc624\ub7ab\ub3d9\uc548 \ub3d9\uc77c\ud558\uac8c \uc720\uc9c0\ub418\ub294 \uacbd\uc6b0\uac00 \ub9ce\uc73c\ubbc0\ub85c \uce90\uc2dc\uc5d0 \ubcf4\uad00\ud558\ub294 \uac83\uc774 \uc548\uc804\ud569\ub2c8\ub2e4. \ub9c8\ucc2c\uac00\uc9c0\ub85c Couchbase\uc758 \ubb38\uc11c JSON \ubb38\uc11c\uc5d0 \ub313\uae00\uc744 \ud3ec\ud568\ud558\ub3c4\ub85d \uc120\ud0dd\ud558\uba74 \uc0c8 \ub313\uae00\uc774 \ucd94\uac00\ub420 \ub54c\ub9c8\ub2e4 \ubb38\uc11c\ub97c \uc5c5\ub370\uc774\ud2b8\ud558\uace0 \uce90\uc2dc\uc5d0\uc11c \uc0c8 \uc0ac\ubcf8\uc744 \uac00\uc838\uc624\uae30\ub9cc \ud558\uba74 \ub418\ubbc0\ub85c \ub9e4\ubc88 \uc694\uccad\ud560 \ub54c\ub9c8\ub2e4 \ubb38\uc11c\ub97c \uac00\uc838\uc624\ub294 \uac83\ubcf4\ub2e4 \ud655\uc2e4\ud788 \ube48\ub3c4\uac00 \uc801\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\ucf54\ub4dc\ub294 \ub2e4\uc74c \uc608\uc2dc\uc640 \uac19\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc740 \uba54\uc11c\ub4dc\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/span><code><span style=\"font-weight: 400;\">#fetch_article_with_caching<\/span><\/code><span style=\"font-weight: 400;\"> \ub97c \ud638\ucd9c\ud558\uc5ec \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc5d0\uc11c \ubb38\uc11c\ub97c \uac00\uc838\uc624\uace0 \uacb0\uacfc\ub97c \uad6c\ubb38 \ubd84\uc11d\ud558\uc5ec \ubb38\uc11c \ub0b4\uc6a9\uacfc CAS \uac12\uc744 \uc5bb\uc2b5\ub2c8\ub2e4. CAS(\ube44\uad50 \ubc0f \uc2a4\uc651) \uac12\uc740 \ubb38\uc11c\uc758 \ud604\uc7ac \uc0c1\ud0dc\ub97c \ub098\ud0c0\ub0b4\uba70, \ubaa8\ub4e0 \uc4f0\uae30 \uc791\uc5c5\uc5d0 \ub300\ud55c \ub3d9\uc2dc\uc131 \uc81c\uc5b4\ub97c \ubcf4\uc7a5\ud569\ub2c8\ub2e4. \ub85c\uceec \uce90\uc2dc\uc5d0 \uc788\ub294 \ub370\uc774\ud130\uc758 \uc0c1\ud0dc\uac00 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uac00\uc7a5 \ucd5c\uadfc \uc0c1\ud0dc\uc640 \uc77c\uce58\ud558\ub294\uc9c0 \ud655\uc778\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4. \uc774 \ubc29\ubc95\uc740 CAS \uac12\uc744 \uc0ac\uc6a9\ud574 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uce90\uc2dc\ub97c \uc5c5\ub370\uc774\ud2b8\ud558\uac70\ub098 \uce90\uc2dc\uc5d0\uc11c \ubb38\uc11c\ub97c \ubc18\ud658\ud568\uc73c\ub85c\uc368 Couchbase\uc758 \uc784\ubca0\ub514\ub4dc \ub370\uc774\ud130\uc640 \uae30\uc874 \uad00\uacc4\ud615 \ub370\uc774\ud130 \ubaa8\ub378 \uac04\uc758 \uc808\ucda9\uc810\uc744 \uc904\uc785\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"nums:false lang:ruby decode:true\"># \uce90\uc2f1\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub313\uae00 \ub610\ub294 \uae30\uc0ac \uc5c5\ub370\uc774\ud2b8\ub97c \ud655\uc778\ud558\uba74\uc11c \uae30\uc0ac\ub97c \uac00\uc838\uc635\ub2c8\ub2e4.\r\ndef fetch_article_with_caching(article_id)\r\n  cache_key = \"article_#{article_id}\"\r\n\r\n  # \uae30\uc0ac \uba54\ud0c0\ub370\uc774\ud130(CAS \uac12 \ud3ec\ud568) \uac00\uc838\uc624\uae30\r\n  # CAS \uac12\uc740 \ub3d9\uc2dc\uc131 \uc81c\uc5b4\ub97c \uc704\ud55c \ud1a0\ud070\uc73c\ub85c, \ubb38\uc11c \uc5c5\ub370\uc774\ud2b8\ub97c \ud655\uc778\ud569\ub2c8\ub2e4.\r\n  result = Article.bucket.default_collection.get(article_id, Couchbase::Options::Get(with_expiry: true))\r\n  article = \uacb0\uacfc.\ub0b4\uc6a9\r\n  cas = \uacb0\uacfc.\uba54\ud0c0.cas\r\n\r\n  # \uce90\uc2dc\ub41c \uc544\ud2f0\ud074\uc744 \ud574\ub2f9 CAS \uac12\uacfc \ud568\uaed8 \uac00\uc838\uc635\ub2c8\ub2e4.\r\n  cached_article, cached_cas = Rails.cache.read(cache_key)\r\n\r\n  # \uae30\uc0ac \ub610\ub294 \ub313\uae00\uc774 \ubcc0\uacbd\ub41c \uacbd\uc6b0 \uce90\uc2dc\ub97c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4.\r\n  cached_article.nil? || cached_cas != cas\r\n    Rails.cache.write(cache_key, [article, cas], expires_in: 12.hours)\r\n  else\r\n    article = cached_article\r\n  end\r\n\r\n  article\r\nend\r\n\r\n# \uc0ac\uc6a9 \uc608\r\narticle = fetch_article_with_caching(\"your_article_id\")<\/pre>\n<h2>\uc561\ud2f0\ube0c \ub808\ucf54\ub4dc\uac00 \uc5c6\ub098\uc694... \uc544\ub2c8\uba74 \uc788\ub098\uc694?<\/h2>\n<p><span style=\"font-weight: 400;\">Couchbase\ub85c \uc804\ud658\ud558\uba74 \uc775\uc219\ud55c ActiveRecord \ub77c\uc774\ube0c\ub7ec\ub9ac\uc640 \uc791\ubcc4\uc744 \uace0\ud574\uc57c \ud55c\ub2e4\uace0 \uc0dd\uac01\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc0c8\ub85c\uc6b4 <\/span><a href=\"https:\/\/couchbase-ruby-orm.com\/\"><span style=\"font-weight: 400;\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub8e8\ube44 ORM<\/span><\/a><span style=\"font-weight: 400;\">\ub97c \uc0ac\uc6a9\ud558\uba74 Rails \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c Couchbase\ub85c \uc791\uc5c5\ud560 \ub54c ActiveRecord\uc640 \uc720\uc0ac\ud55c \ud658\uacbd\uc744 \uacc4\uc18d \uc990\uae38 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Couchbase Ruby ORM\uc740 ActiveRecord\uc758 \uae30\ub2a5\uacfc \uad6c\ubb38\uc744 \ubaa8\ubc29\ud55c ORM \uacc4\uce35\uc744 \uc81c\uacf5\ud558\uc5ec Rails \uac1c\ubc1c\uc790\uac00 \ubcf4\ub2e4 \uc6d0\ud65c\ud558\uac8c \uc804\ud658\ud560 \uc218 \uc788\ub3c4\ub85d \ud569\ub2c8\ub2e4. \uc774 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 \uc775\uc219\ud55c \uad00\uacc4\ud615 \ubaa8\ub378\uacfc Couchbase\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \ubb38\uc11c \ubaa8\ub378 \uc0ac\uc774\uc758 \uac04\uadf9\uc744 \uba54\uc6cc\uc90d\ub2c8\ub2e4. Rails \uac1c\ubc1c\uc790\uc5d0\uac8c \uc775\uc219\ud55c \uad6c\ubb38\uc744 \uc81c\uacf5\ud558\ubbc0\ub85c \ud559\uc2b5 \uace1\uc120\uc774 \uc904\uc5b4\ub4ed\ub2c8\ub2e4. \ubaa8\ub378\uc744 \uc815\uc758\ud558\uace0, \uc18d\uc131\uc744 \uc124\uc815\ud558\uace0, ActiveRecord\uc640 \uc720\uc0ac\ud55c \ubc29\uc2dd\uc73c\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640 \uc0c1\ud638 \uc791\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc608\ub97c \ub4e4\uc5b4, \ub2e4\uc74c\uacfc \uac19\uc774 \uc815\uc758\ud574\uc57c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <\/span><em><span style=\"font-weight: 400;\">\uae30\uc0ac<\/span><\/em><span style=\"font-weight: 400;\"> \ud074\ub798\uc2a4\uc758 \uc0c8 \uc778\uc2a4\ud134\uc2a4\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4. \uc0c8 ORM\uc744 \uc0ac\uc6a9\ud558\uba74 Couchbase\uc5d0\uc11c \uc774 \uc791\uc5c5\uc744 \uc218\ud589\ud558\ub294 \uac83\uc774 ActiveRecord\uc5d0\uc11c \uc218\ud589\ud558\ub294 \uac83\uacfc \ub611\uac19\uc544 \ubcf4\uc785\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"nums:false lang:ruby decode:true\">\uae30\uc0ac \ud074\ub798\uc2a4 &lt; CouchbaseOrm::Base\r\n  \uc18d\uc131 :\uc81c\ubaa9, \uc720\ud615: \ubb38\uc790\uc5f4\r\n  \uc18d\uc131 :\ub0b4\uc6a9, \uc720\ud615: String\r\n  \uc18d\uc131 :\ucf54\uba58\ud2b8, \uc720\ud615: \ubc30\uc5f4\r\nend\r\n\r\narticle = Article.create(title: &quot;\ub0b4 \uae30\uc0ac&quot;, content: &quot;\uc774\uac83\uc740 \uae30\uc0ac\uc758 \ub0b4\uc6a9\uc785\ub2c8\ub2e4...&quot;)<\/pre>\n<p><span style=\"font-weight: 400;\">\uc720\ud6a8\uc131 \uac80\uc0ac\ub97c \uc815\uc758\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. <\/span><em><span style=\"font-weight: 400;\">\uae30\uc0ac<\/span><\/em><span style=\"font-weight: 400;\"> \ud074\ub798\uc2a4\ucc98\ub7fc \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"nums:false lang:ruby decode:true\">\uae30\uc0ac \ud074\ub798\uc2a4 &lt; CouchbaseOrm::Base\r\n  \uc18d\uc131 :\uc81c\ubaa9, \uc720\ud615: \ubb38\uc790\uc5f4\r\n  \uc18d\uc131 :\ub0b4\uc6a9, \uc720\ud615: String\r\n  \uc18d\uc131 :\ucf54\uba58\ud2b8, \uc720\ud615: \ubc30\uc5f4\r\nend\r\n\r\n## \ubaa8\ub4e0 \uc0c8 \ubb38\uc11c\uc5d0 \uc81c\ubaa9\uc774 \uc788\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.\r\nvalidates :title, presence: true\r\n\r\narticle = Article.create(title: &quot;\ub0b4 \uae00&quot;, content: &quot;\uc774\uac83\uc740 \uae00\uc758 \ub0b4\uc6a9\uc785\ub2c8\ub2e4...&quot;)<\/pre>\n<p><span style=\"font-weight: 400;\">\uc11c\ub85c \ub2e4\ub978 \ubaa8\ub378 \uac04\uc5d0 \uc5f0\uad00\uc744 \ub9cc\ub4dc\ub294 \uac83\uc740 \uc5b4\ub5a8\uae4c\uc694? \ubb38\uc11c\uc5d0\uc11c \ud574\ub2f9 \ub313\uae00\uc744 \uac00\uc838\uc624\uae30 \uc704\ud574 <\/span><em><span style=\"font-weight: 400;\">#\ub313\uae00<\/span><\/em><span style=\"font-weight: 400;\"> \uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec <\/span><em><span style=\"font-weight: 400;\">has_many<\/span><\/em><span style=\"font-weight: 400;\"> \ub9e4\ud06c\ub85c. \uc774\uac83\ub3c4 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"nums:false lang:ruby decode:true\">\ud074\ub798\uc2a4 Article &lt; CouchbaseOrm::Base\r\n  # \uc5f0\uad00\uc131\uc744 \uc815\uc758\ud558\uace0 \uc18c\uba78\ub85c \ub9cc\ub4ed\ub2c8\ub2e4.\r\n  \ubb38\uc11c\uac00 \uc0ad\uc81c\ub420 \ub54c # \uc885\uc18d\uc131\uc744 \uc815\uc758\ud569\ub2c8\ub2e4.\r\n  has_many :\ub313\uae00, \uc758\uc874\uc131: \ud30c\uae30\r\n\r\n  \uc18d\uc131 :\uc81c\ubaa9, \uc720\ud615: \ubb38\uc790\uc5f4\r\n  \uc18d\uc131 :\ub0b4\uc6a9, \uc720\ud615: \ubb38\uc790\uc5f4\r\n  \uc18d\uc131 :\ub313\uae00, \uc720\ud615: \ubc30\uc5f4\r\nend\r\n\r\nvalidates :title, presence: true\r\n\r\narticle = Article.create(title: &quot;\ub0b4 \uae30\uc0ac&quot;, content: &quot;\uc774\uac83\uc740 \uae30\uc0ac\uc758 \ub0b4\uc6a9\uc785\ub2c8\ub2e4...&quot;)<\/pre>\n<h2>\uace0\uc720\ud55c \uace0\ub824 \uc0ac\ud56d<\/h2>\n<p><span style=\"font-weight: 400;\">Rails \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c Couchbase\ub97c \ub3c4\uc785\ud560 \ub54c, \uc77c\ucc0d \ub3c4\uc785\ud558\uba74 \uac1c\ubc1c \uc791\uc5c5\uc774 \ub354 \uc6d0\ud65c\ud558\uace0 \ud6a8\uc728\uc801\uc73c\ub85c \uc9c4\ud589\ub420 \uc218 \uc788\ub2e4\ub294 \uc810\uc744 \uace0\ub824\ud574\uc57c \ud560 \uba87 \uac00\uc9c0 \uc0ac\ud56d\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uccab\uc9f8, Ruby ORM\uc740 \ub9e4\uc6b0 \uc0c8\ub86d\uae30 \ub54c\ubb38\uc5d0 \ud14c\uc2a4\ud2b8\ub97c \ube4c\ub4dc\ud560 \ub54c \ubaa8\uc758, \uc2a4\ud141\uc744 \uc0dd\uc131\ud558\uace0 \uc77c\uce58\uc790\ub97c \uc815\uc758\ud558\uae30 \uc704\ud574 RSpec\uc5d0 \ud1b5\ud569\ud560 \uc218 \uc788\ub294 \ud14c\uc2a4\ud2b8 \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \uc544\uc9c1 \uc5c6\uc2b5\ub2c8\ub2e4.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc989, \ubaa8\uc758 \uc2dc\ud5d8 \ubc0f \uae30\ud0c0 \ud14c\uc2a4\ud2b8 \uad00\ub828 \ud56d\ubaa9\uc744 \uc9c1\uc811 \uc815\uc758\ud574\uc57c \ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ubb38\uc11c\uc758 \ubaa8\uc758 \ubb38\uc11c\ub97c \ub9cc\ub4e4\uace0 \uadf8\uc5d0 \ub300\ud55c \uae30\ub300\uce58\ub97c \uc815\uc758\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"nums:false lang:ruby decode:true\">RSpec.describe \uae30\uc0ac, \uc720\ud615: :\ubaa8\ub378 do\r\n let(:article) do\r\n    Article.new(id: 'article-id', title: '\ud14c\uc2a4\ud2b8 \uc81c\ubaa9', description: '\ud14c\uc2a4\ud2b8 \uc124\uba85', body: '\ud14c\uc2a4\ud2b8 \ubcf8\ubb38', author_id: author.id)\r\n  end\r\n\r\n\ucee8\ud14d\uc2a4\ud2b8 '\ubb38\uc11c \uc800\uc7a5 \uc2dc'\r\n    \uc124\uba85 '#save' do\r\n      '\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc0c8 \ubb38\uc11c \ub808\ucf54\ub4dc\ub97c \uc0dd\uc131' do\r\n        allow(Article).to receive(:new).and_return(article)\r\n        allow(article).to receive(:save).and_return(true)\r\n\r\n        article.save\r\n        expect(article.id).to eq('article-id')\r\n      end\r\n    end\r\n  end\r\nend<\/pre>\n<p><span style=\"font-weight: 400;\">\uae30\uc5b5\ud574\uc57c \ud560 Couchbase \ub370\uc774\ud130\uc758 \ub610 \ub2e4\ub978 \uc911\uc694\ud55c \uae30\ub2a5\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 \uc5ed\ud560\uc785\ub2c8\ub2e4. <\/span><a href=\"https:\/\/docs.couchbase.com\/cloud\/n1ql\/n1ql-language-reference\/indexing-meta-info.html\"><span style=\"font-weight: 400;\">\uba54\ud0c0\ub370\uc774\ud130<\/span><\/a><span style=\"font-weight: 400;\"> \ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uba54\ud0c0\ub370\uc774\ud130\uc5d0\ub294 \ubb38\uc11c ID, CAS \uac12, \ub9cc\ub8cc \uc2dc\uac04 \ub4f1 \ubb38\uc11c\uc5d0 \ub300\ud55c \ub2e4\uc591\ud55c \uc815\ubcf4\uac00 \ud3ec\ud568\ub429\ub2c8\ub2e4. \uc774 \uba54\ud0c0\ub370\uc774\ud130\ub294 \ub370\uc774\ud130\ub97c \uad00\ub9ac\ud558\uace0 \ub370\uc774\ud130\uc640 \uc0c1\ud638 \uc791\uc6a9\ud558\ub294 \ub370 \uc720\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uba54\ud0c0\ub370\uc774\ud130\uc758 \ud575\uc2ec \uad6c\uc131 \uc694\uc18c \uc911 \ud558\ub098\ub294 \ubb38\uc11c ID\uc785\ub2c8\ub2e4. \ubb38\uc11c ID\ub294 Couchbase\uc758 \uac01 \ubb38\uc11c\uc5d0 \ub300\ud55c \uace0\uc720 \uc2dd\ubcc4\uc790\uc785\ub2c8\ub2e4. \uc774 ID\ub97c \uae30\ubc18\uc73c\ub85c \ubb38\uc11c\ub97c \uac80\uc0c9, \uc5c5\ub370\uc774\ud2b8 \ubc0f \uc0ad\uc81c\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uae30\ubcf8 \ud0a4\ub97c \uc790\uc8fc \uc0ac\uc6a9\ud558\ub294 \uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640 \ub2ec\ub9ac Couchbase\ub294 \uc774\ub7ec\ud55c \ubb38\uc11c ID\ub97c \uc0ac\uc6a9\ud558\uc5ec \uac01 JSON \ubb38\uc11c\ub97c \uace0\uc720\ud558\uac8c \uc2dd\ubcc4\ud569\ub2c8\ub2e4.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">JSON \ubb38\uc11c\uc758 \uba54\ud0c0\ub370\uc774\ud130\uc5d0 \uc561\uc138\uc2a4\ud558\ub824\uba74 Ruby ORM\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc0ac\uc6a9\uc790 \uc815\uc758 \ucffc\ub9ac\ub97c \ub9cc\ub4e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\ub798 \uc608\uc5d0\uc11c\ub294 \uba3c\uc800 \ucffc\ub9ac\ub97c \uc815\uc758\ud55c \ub2e4\uc74c \uc774\ub97c \uc0ac\uc6a9\ud558\ub294 \uba54\uc11c\ub4dc\ub97c \uc815\uc758\ud558\uc5ec \ubb38\uc11c ID\ub97c \uac00\uc838\uc635\ub2c8\ub2e4. \uc774 \uba54\uc11c\ub4dc\ub294 \ubb38\uc11c ID\uc640 \ub098\uba38\uc9c0 \ubb38\uc11c \ub370\uc774\ud130\ub97c \ubaa8\ub450 \ubc18\ud658\ud569\ub2c8\ub2e4.<\/span><\/p>\n<pre class=\"nums:false lang:ruby decode:true\">\uae30\uc0ac \ud074\ub798\uc2a4 &lt; CouchbaseOrm::Base\r\n  \uc18d\uc131 :\uc81c\ubaa9, \uc720\ud615: \ubb38\uc790\uc5f4\r\n  \uc18d\uc131 :\ub0b4\uc6a9, \uc720\ud615: String\r\n  \uc18d\uc131 :\ucf54\uba58\ud2b8, \uc720\ud615: Array\r\n\r\n  # \ubb38\uc11c \ub370\uc774\ud130\uc640 \ud568\uaed8 \uba54\ud0c0\ub370\uc774\ud130 ID\ub97c \uac00\uc838\uc624\uae30 \uc704\ud55c \uc0ac\uc6a9\uc790 \uc9c0\uc815 \ucffc\ub9ac\r\n  n1ql :by_id_with_meta, emit_key: [:id], query_fn: proc { |\ubc84\ud0b7, \uac12, \uc635\uc158||\r\n    cluster.query(\r\n      &quot;SELECT META(a).id AS meta_id, a.*\r\n      FROM `#{\ubc84\ud0b7.\uc774\ub984}` AS a\r\n      WHERE META(a).id = $1&quot;,\r\n      Couchbase::Options::Query(positional_parameters: values)\r\n    )\r\n  }\r\nend\r\n\r\n# \uba54\ud0c0\ub370\uc774\ud130 ID\ub85c \uc544\ud2f0\ud074\uc744 \uac00\uc838\uc640\uc11c \ud45c\uc2dc\ud558\uae30\r\ndef fetch_article_with_meta_id(article_id)\r\n  results = Article.by_id_with_meta(article_id)\r\n  results.each do |row|\r\n    meta_id = row[&quot;meta_id&quot;]\r\n    article_data = row.reject { |key| key == &quot;meta_id&quot; }\r\n    &quot;\uba54\ud0c0 ID: #{meta_id}&quot;\r\n    &quot;\uae30\uc0ac \ub370\uc774\ud130: #{article_data}&quot;\r\n  end\r\nend\r\n\r\n# \uc0ac\uc6a9 \uc608\r\nFETCH_ARTICLE_WITH_META_ID(&quot;YOUR_ARTICLE_ID&quot;)<\/pre>\n<p><span style=\"font-weight: 400;\">\uc544\uc9c1 Couchbase\uc5d0 \uc775\uc219\ud558\uc9c0 \uc54a\ub2e4\uba74 \uc774 \ucffc\ub9ac\ub97c \ubcf4\uace0 SQL\uacfc \ub9e4\uc6b0 \ube44\uc2b7\ud558\ub2e4\uace0 \uc0dd\uac01\ud560 \uc218 \uc788\uc73c\uba70, \ub9de\uc744 \uac83\uc785\ub2c8\ub2e4! Couchbase\uc758 \uac00\uc7a5 \ud070 \uc7a5\uc810 \uc911 \ud558\ub098\ub294 \ucffc\ub9ac \uc5b8\uc5b4\ub97c \ub3c4\uc785\ud588\ub2e4\ub294 \uc810\uc785\ub2c8\ub2e4. <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/products\/n1ql\/\"><span style=\"font-weight: 400;\">SQL++<\/span><\/a><span style=\"font-weight: 400;\"> - \ub97c \uc0ac\uc6a9\ud558\uc5ec SQL \ud14c\uc774\ube14\uc5d0\uc11c\uc640 \ub3d9\uc77c\ud55c \uc0c1\ud638 \uc791\uc6a9 \ud658\uacbd\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. SQL++\ub97c \uc0ac\uc6a9\ud558\uc5ec Couchbase\uc5d0\uc11c \ub370\uc774\ud130 \uc791\uc5c5\uc744 \ud558\uba74 \ubaa8\ub4e0 SQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uc775\uc219\ud55c \uae30\ub2a5\uacfc \uc778\uccb4\uacf5\ud559\uc801 \ub514\uc790\uc778\uc744 \uadf8\ub300\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc791\uc5c5\uc5d0 \ucd94\uac00\uc801\uc778 \uc778\uc9c0\uc801 \uc624\ubc84\ud5e4\ub4dc\ub97c \ub3c4\uc785\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \uc6b0\ub9ac \uc911 \ub204\uad6c\ub3c4 \uc6d0\uce58 \uc54a\ub294 \uc77c\uc774\uc8e0!\u00a0<\/span><\/p>\n<pre class=\"nums:false wrap:true lang:default decode:true\">SELECT `#{\ubc84\ud0b7.\uc774\ub984}`\uc5d0\uc11c `#{\ubc84\ud0b7.\uc774\ub984}`\ub85c META(a).id AS meta_id, a.* WHERE META(a).id = $1<\/pre>\n<h2>\ub9c8\ubb34\ub9ac<\/h2>\n<p><span style=\"font-weight: 400;\">Rails\uc758 \ub3d9\uc801 NoSQL \ub370\uc774\ud130\uc5d0 ActiveRecord\uc640 \uc720\uc0ac\ud55c \ud658\uacbd\uc744 \uc81c\uacf5\ud558\ub294 ORM\uacfc \ub2e4\ub978 \uc0ac\uc6a9 \uc0ac\ub840\ub97c \ub2e4\ub8e8\ub294 SQL\uacfc \uc720\uc0ac\ud55c \ucffc\ub9ac \uc5b8\uc5b4\uc758 \uc870\ud569\uc740 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc704\ud55c \uc644\uc804\ud55c \ub2e4\uc6a9\ub3c4 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubc0f \ub370\uc774\ud130 \uad00\ub9ac \uc2dc\uc2a4\ud15c\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4. \uc644\uc804\ud55c \uae30\ub2a5\uc744 \uac16\ucd98 \uad6c\ud604\uc774 \uc5b4\ub5a4 \ubaa8\uc2b5\uc778\uc9c0 \uc0b4\ud3b4\ubcf4\uace0 \uc2f6\ub2e4\uba74 \ub2e4\uc74c\uc5d0\uc11c Ruby ORM\uc744 \uc0ac\uc6a9\ud558\uc5ec \ubaa8\ub4e0 \uc0dd\uc131, \uc77d\uae30, \uc5c5\ub370\uc774\ud2b8 \ubc0f \uc0ad\uc81c \uc791\uc5c5\uc744 \ub2e4\ub8e8\ub294 \uc2e4\uc81c \uc608\uc81c Rails \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ubcf5\uc81c\ud558\uc5ec \uc0b4\ud3b4\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. <\/span><a href=\"https:\/\/github.com\/hummusonrails\/realworld-couchbase-ruby-orm\/tree\/main\"><span style=\"font-weight: 400;\">GitHub<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \uc5c4\uaca9\ud55c \uc2a4\ud0a4\ub9c8\ub098 \uc5c4\uaca9\ud558\uac8c \uc815\uc758\ub41c \uad6c\uc870\ub97c \uc27d\uac8c \ub530\ub974\uc9c0 \uc54a\ub294 \ub370\uc774\ud130\uac00 \ud544\uc694\ud558\uace0 \uc774\ub97c \uc218\uc6a9\ud558\ub294 \ubc29\ubc95\uc744 \ucc3e\uace0 \uc788\ub2e4\uba74 \uc0c8\ub85c\uc6b4 Ruby ORM\uc774 \ud3ec\ud568\ub41c Couchbase\uac00 \ub9e4\ub825\uc801\uc778 \uc194\ub8e8\uc158\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>Ruby on Rails is often the framework of choice for getting new projects off the ground. The speed of development and iteration is in many ways unparalleled. As such, perhaps you want to use Rails as the framework for your [&hellip;]<\/p>","protected":false},"author":85356,"featured_media":15989,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1815,2225,1816,9407,2201],"tags":[9984,1395],"ppma_author":[9985],"class_list":["post-15981","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-best-practices-and-tutorials","category-cloud","category-couchbase-server","category-ruby","category-tools-sdks","tag-orm","tag-rails"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.4 (Yoast SEO v26.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase on Rails: A Guide to Introducing Dynamic and Adaptive Data to Your Application - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"In this guide, you will discover the considerations and steps to utilizing Couchbase as your database fully integrated into your Rails application.\" \/>\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\/couchbase-rails-guide-adaptive-data\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase on Rails: A Guide to Introducing Dynamic and Adaptive Data to Your Application\" \/>\n<meta property=\"og:description\" content=\"In this guide, you will discover the considerations and steps to utilizing Couchbase as your database fully integrated into your Rails application.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-rails-guide-adaptive-data\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-06-28T20:15:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:11:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/realworld_readme_banner-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ben Greenberg, Senior Developer Evangelist\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ben Greenberg, Senior Developer Evangelist\" \/>\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\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/\"},\"author\":{\"name\":\"Ben Greenberg, Senior Developer Evangelist\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/48efa1524aec97312d92f65a270c255d\"},\"headline\":\"Couchbase on Rails: A Guide to Introducing Dynamic and Adaptive Data to Your Application\",\"datePublished\":\"2024-06-28T20:15:46+00:00\",\"dateModified\":\"2025-06-14T04:11:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/\"},\"wordCount\":1613,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/realworld_readme_banner-1.png\",\"keywords\":[\"orm\",\"Rails\"],\"articleSection\":[\"Application Design\",\"Best Practices and Tutorials\",\"Couchbase Capella\",\"Couchbase Server\",\"Ruby\",\"Tools &amp; SDKs\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/\",\"name\":\"Couchbase on Rails: A Guide to Introducing Dynamic and Adaptive Data to Your Application - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/realworld_readme_banner-1.png\",\"datePublished\":\"2024-06-28T20:15:46+00:00\",\"dateModified\":\"2025-06-14T04:11:02+00:00\",\"description\":\"In this guide, you will discover the considerations and steps to utilizing Couchbase as your database fully integrated into your Rails application.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/realworld_readme_banner-1.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/realworld_readme_banner-1.png\",\"width\":1280,\"height\":640},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase on Rails: A Guide to Introducing Dynamic and Adaptive Data to Your Application\"}]},{\"@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\/48efa1524aec97312d92f65a270c255d\",\"name\":\"Ben Greenberg, Senior Developer Evangelist\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/c9bda12524045d12a5878a2ef3fbe0de\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/T024FJS4M-U075H3NTJUR-b4c321d902e2-512.jpeg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/T024FJS4M-U075H3NTJUR-b4c321d902e2-512.jpeg\",\"caption\":\"Ben Greenberg, Senior Developer Evangelist\"},\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/bengreenberg\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase on Rails: A Guide to Introducing Dynamic and Adaptive Data to Your Application - The Couchbase Blog","description":"\uc774 \uac00\uc774\ub4dc\uc5d0\uc11c\ub294 Couchbase\ub97c Rails \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \uc644\uc804\ud788 \ud1b5\ud569\ub41c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c \ud65c\uc6a9\ud558\uae30 \uc704\ud55c \uace0\ub824 \uc0ac\ud56d\uacfc \ub2e8\uacc4\uc5d0 \ub300\ud574 \uc124\uba85\ud569\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\/couchbase-rails-guide-adaptive-data\/","og_locale":"ko_KR","og_type":"article","og_title":"Couchbase on Rails: A Guide to Introducing Dynamic and Adaptive Data to Your Application","og_description":"In this guide, you will discover the considerations and steps to utilizing Couchbase as your database fully integrated into your Rails application.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/couchbase-rails-guide-adaptive-data\/","og_site_name":"The Couchbase Blog","article_published_time":"2024-06-28T20:15:46+00:00","article_modified_time":"2025-06-14T04:11:02+00:00","og_image":[{"width":1280,"height":640,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/realworld_readme_banner-1.png","type":"image\/png"}],"author":"Ben Greenberg, Senior Developer Evangelist","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ben Greenberg, Senior Developer Evangelist","Est. reading time":"8\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/"},"author":{"name":"Ben Greenberg, Senior Developer Evangelist","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/48efa1524aec97312d92f65a270c255d"},"headline":"Couchbase on Rails: A Guide to Introducing Dynamic and Adaptive Data to Your Application","datePublished":"2024-06-28T20:15:46+00:00","dateModified":"2025-06-14T04:11:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/"},"wordCount":1613,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/realworld_readme_banner-1.png","keywords":["orm","Rails"],"articleSection":["Application Design","Best Practices and Tutorials","Couchbase Capella","Couchbase Server","Ruby","Tools &amp; SDKs"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/","name":"Couchbase on Rails: A Guide to Introducing Dynamic and Adaptive Data to Your Application - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/realworld_readme_banner-1.png","datePublished":"2024-06-28T20:15:46+00:00","dateModified":"2025-06-14T04:11:02+00:00","description":"\uc774 \uac00\uc774\ub4dc\uc5d0\uc11c\ub294 Couchbase\ub97c Rails \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \uc644\uc804\ud788 \ud1b5\ud569\ub41c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c \ud65c\uc6a9\ud558\uae30 \uc704\ud55c \uace0\ub824 \uc0ac\ud56d\uacfc \ub2e8\uacc4\uc5d0 \ub300\ud574 \uc124\uba85\ud569\ub2c8\ub2e4.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/realworld_readme_banner-1.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/realworld_readme_banner-1.png","width":1280,"height":640},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-rails-guide-adaptive-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase on Rails: A Guide to Introducing Dynamic and Adaptive Data to Your Application"}]},{"@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\/48efa1524aec97312d92f65a270c255d","name":"\ubca4 \uadf8\ub9b0\ubc84\uadf8, \uc218\uc11d \uac1c\ubc1c\uc790 \uc5d0\ubc18\uc824\ub9ac\uc2a4\ud2b8","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/c9bda12524045d12a5878a2ef3fbe0de","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/T024FJS4M-U075H3NTJUR-b4c321d902e2-512.jpeg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/T024FJS4M-U075H3NTJUR-b4c321d902e2-512.jpeg","caption":"Ben Greenberg, Senior Developer Evangelist"},"url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/bengreenberg\/"}]}},"authors":[{"term_id":9985,"user_id":85356,"is_guest":0,"slug":"bengreenberg","display_name":"Ben Greenberg, Senior Developer Evangelist","avatar_url":{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/T024FJS4M-U075H3NTJUR-b4c321d902e2-512.jpeg","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/06\/T024FJS4M-U075H3NTJUR-b4c321d902e2-512.jpeg"},"author_category":"","last_name":"Greenberg, Senior Developer Evangelist","first_name":"Ben","job_title":"Senior Developer Evangelist","user_url":"","description":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/15981","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\/85356"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=15981"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/15981\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/15989"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=15981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=15981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=15981"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=15981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}