{"id":11387,"date":"2021-07-23T04:43:54","date_gmt":"2021-07-23T11:43:54","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=11387"},"modified":"2025-06-13T22:39:21","modified_gmt":"2025-06-14T05:39:21","slug":"how-to-use-couchbase-xml-database","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/how-to-use-couchbase-xml-database\/","title":{"rendered":"Couchbase\ub97c XML \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c \uc0ac\uc6a9\ud558\ub294 \ubc29\ubc95(\ubc0f \uc774\uc720)"},"content":{"rendered":"<h2>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc640 XML - \ubb38\uc81c\uc5c6\uc2b5\ub2c8\ub2e4!<\/h2>\n<p><strong>\uc218\uc2ed \ubc88\ub3c4 \ub354 \ub4e4\uc5c8\uc2b5\ub2c8\ub2e4:<\/strong> \"Couchbase\ub294 \ud6cc\ub96d\ud558\uc9c0\ub9cc \uc800\ub294 XML\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.\"<\/p>\n<p>\"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4\"\ub85c \ubc18\ubc15\ud558\ub294 \uac83\uc740 \uc54c\uace0 \uc788\uc2b5\ub2c8\ub2e4. <em>can<\/em> XML \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \ub418\ub77c\"\ub294 \ub9d0\uc740 \ud2b9\ud788 JSON \uc9c0\ud5a5 \ubb38\uc11c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uacbd\uc6b0 \uc0c1\ub2f9\ud788 \ub300\ub2f4\ud55c \ud45c\ud604\uc785\ub2c8\ub2e4. Couchbase \ucee4\ubba4\ub2c8\ud2f0\uc758 \uc77c\ubd80 \uc0ac\ub78c\ub4e4\uc740 \ub450 \ubc88 \uc0dd\uac01\ud560 \uc218\ub3c4 \uc788\uc9c0\ub9cc, \uc774 \uae00\uc758 \ub9c8\uc9c0\ub9c9 \ubd80\ubd84\uc5d0\uc11c \uc81c \ub9d0\uc774 \ubb34\uc2a8 \ub73b\uc778\uc9c0 \uc774\ud574\ud558\uc168\uc73c\uba74 \uc88b\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub9ce\uc740 \ub808\uac70\uc2dc \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc5ec\uc804\ud788 XML\uc5d0 \uc758\uc874\ud558\uace0 \uc788\ub294 \uac83\uc740 \uc0ac\uc2e4\uc774\uc9c0\ub9cc, \uacfc\uc5f0 Couchbase\uac00 XML \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\uace0 \ucc98\ub9ac\ud558\ub294 \ub370 \uc801\ud569\ud55c \uc194\ub8e8\uc158\uc77c\uae4c\uc694? \uac71\uc815\ud558\uc9c0 \ub9c8\uc138\uc694. Couchbase\uc640 XML\uc5d0 \uad00\ud574\uc11c\ub294 \ub450 \ub9c8\ub9ac \ud1a0\ub07c\ub97c \ubaa8\ub450 \uc7a1\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uba87 \uac00\uc9c0 \uac1c\ub150\uc744 \uc18c\uac1c\ud55c \ud6c4, \uc774 \uae00\uc5d0\uc11c\ub294 \uc774\ubca4\ud2b8 \ud568\uc218\ub97c \ud1b5\ud574 \uac70\uc758 \uc544\ubb34\ub7f0 \ub178\ub825 \uc5c6\uc774 Couchbase \ub0b4\uc5d0\uc11c XML\uc744 JSON\uc73c\ub85c \uc790\ub3d9 \ubc0f \uc989\uc2dc \ubcc0\ud658\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4. JSON\uc744 XML\uc744 \uc800\uc7a5\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 \uc911\uac04 \ucef4\ud4e8\ud130 \ud615\uc2dd\uc774\ub77c\uace0 \uc0dd\uac01\ud558\uc2e0\ub2e4\uba74 \uc774\ubbf8 \uc81c\uac00 \uc5b4\ub514\ub85c \ud5a5\ud558\uace0 \uc788\ub294\uc9c0 \uc544\uc2e4 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>XML \ub370\uc774\ud130\ub97c \ub124\uc774\ud2f0\ube0c JSON \ud45c\ud604\uc73c\ub85c \ubcc0\ud658\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 Couchbase\uc758 \ud48d\ubd80\ud55c \uc11c\ube44\uc2a4 \uc5d0\ucf54\uc2dc\uc2a4\ud15c\uc744 \ud65c\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/products\/n1ql\/?ref=blog\" target=\"_blank\" rel=\"noopener\">N1QL<\/a>, \uc778\ub371\uc2f1, <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/products\/full-text-search\/?ref=blog\" target=\"_blank\" rel=\"noopener\">\uc804\uccb4 \ud14d\uc2a4\ud2b8 \uac80\uc0c9<\/a>, <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/products\/eventing\/?ref=blog\" target=\"_blank\" rel=\"noopener\">\uc774\ubca4\ud2b8<\/a>\ubc0f <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/products\/analytics\/?ref=blog\" target=\"_blank\" rel=\"noopener\">\ubd84\uc11d<\/a>.<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/products\/capella\/\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4<\/a> \ub294 \ud544\uc694\uc5d0 \ub9de\uac8c \uc870\ud569\ud558\ub294 \uc804\uc6a9 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc785\ub2c8\ub2e4. \ube60\ub978 \uce90\uc2dc\ub9cc \ud544\uc694\ud558\uc2e0\uac00\uc694? \ub370\uc774\ud130 \uc11c\ube44\uc2a4 \ub610\ub294 \ud0a4-\uac12 \uc800\uc7a5\uc18c\ub9cc \uc788\uc73c\uba74 \ub429\ub2c8\ub2e4. SQL\uacfc \uc720\uc0ac\ud55c \uc561\uc138\uc2a4\ub97c \uc6d0\ud558\uc2dc\ub098\uc694? \ucffc\ub9ac \ubc0f \uc0c9\uc778 \uc11c\ube44\uc2a4\ub97c \ucd94\uac00\ud558\uc138\uc694. \uc544\ub2c8\uba74 \ubd84\uc11d\uc774\ub098 \uc804\uccb4 \ud14d\uc2a4\ud2b8 \uac80\uc0c9\uc774 \ud544\uc694\ud558\uc2e0\uac00\uc694? \uc801\uc808\ud55c \uc720\ud615\uc758 \ub178\ub4dc\ub97c \ucd94\uac00\ud558\uae30\ub9cc \ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<p>\uc704\uc758 \uac01 \uc11c\ube44\uc2a4\ub294 \ub3c5\ub9bd\uc801\uc73c\ub85c \ud655\uc7a5\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c \uacb0\uad6d \uad6c\ucd95\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4, <em>\ube44\uc6a9 \uc9c0\ubd88<\/em> - \ud544\uc694\ud55c \uac83\ub9cc \uc0ac\uc6a9\ud558\uc138\uc694. \uc544\ub798 \uae00\uc5d0\uc11c\ub294 Eventing\uc744 \uc0ac\uc6a9\ud558\uc5ec Couchbase\ub97c XML \uc9c0\uc6d0 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95\uc744 \uc124\uba85\ud569\ub2c8\ub2e4. \uc0ac\uc2e4\uc774\ub77c\uace0 \ud558\uae30\uc5d0\ub294 \ub108\ubb34 \uc88b\uac8c \ub4e4\ub9ac\uc9c0\ub9cc \uc2e4\uc81c\ub85c \ud6a8\uacfc\uac00 \uc788\ub2e4\ub294 \uac83\uc744 \ubbff\uc73c\uc138\uc694.<\/p>\n<p><em>Couchbase, XML \ubc0f JSON\uc5d0 \uc775\uc219\ud55c \uacbd\uc6b0 \ub2e4\uc74c\uc744 \uc218\ud589\ud558\uc2ed\uc2dc\uc624. <a href=\"#prereq\">\ud544\uc218 \uad6c\uc131 \uc694\uc18c \uc139\uc158\uc73c\ub85c \uac74\ub108\ub6f0\uae30<\/a>.<\/em><\/p>\n<h2>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub370\uc774\ud130 \ubaa8\ub378<\/h2>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/ko\/products\/server\/?ref=blog\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84<\/a> \ub294 \uc624\ud508 \uc18c\uc2a4 \ubd84\uc0b0 \ub370\uc774\ud130 \ud50c\ub7ab\ud3fc\uc785\ub2c8\ub2e4. \ub370\uc774\ud130\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uc800\uc7a5\ud569\ub2c8\ub2e4. <em>\ud56d\ubaa9<\/em>\uc774 \uc788\uc73c\uba70, \uac01\uac01\uc5d0\ub294 <em>\ud0a4<\/em> \ubc0f <em>\uac12<\/em>. \ubc00\ub9ac\ucd08 \ubbf8\ub9cc\uc758 \ub370\uc774\ud130 \uc791\uc5c5\uc740 \ucffc\ub9ac \ubc0f \uc778\ub371\uc2f1\uc744 \uc704\ud55c \uac15\ub825\ud55c \uc11c\ube44\uc2a4\uc640 \ud48d\ubd80\ud55c \uae30\ub2a5\uc744 \uac16\ucd98 \ubb38\uc11c \uc9c0\ud5a5 \ucffc\ub9ac \uc5b8\uc5b4\ub97c \ud1b5\ud574 \uc81c\uacf5\ub429\ub2c8\ub2e4, <em>N1QL<\/em>. \uc5ec\ub7ec \uac1c\uc758 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84 \uc778\uc2a4\ud134\uc2a4\ub97c \ub2e8\uc77c \uc778\uc2a4\ud134\uc2a4\ub85c \uacb0\ud569\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <em>\ud074\ub7ec\uc2a4\ud130<\/em>.<\/p>\n<h3>\ud0a4<\/h3>\n<p>\uac01 \uac12(\ubc14\uc774\ub108\ub9ac \ub610\ub294 JSON)\uc740 \ud56d\ubaa9\uc774 \uc800\uc7a5\ub420 \ub54c \uc0ac\uc6a9\uc790 \ub610\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc815\uc758\ud55c \uace0\uc720 \ud0a4\ub85c \uc2dd\ubcc4\ub429\ub2c8\ub2e4. \uc774 \ud0a4\ub294 \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc73c\ubbc0\ub85c \uc77c\ub2e8 \ud56d\ubaa9\uc774 \uc800\uc7a5\ub418\uba74 \ud0a4\ub97c \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. Couchbase\ub294 \ud56d\ubaa9\uc758 \ud0a4\ub97c \ud56d\ubaa9\uc758 <em>id<\/em>.<\/p>\n<p>\uac01 \ud0a4:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>\uacf5\ubc31\uc774 \uc5c6\ub294 UTF-8 \ubb38\uc790\uc5f4\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc740 \ud2b9\uc218 \ubb38\uc790 <code>(<\/code>, <code>%<\/code>, <code>\/<\/code>, <code>\"<\/code> \uadf8\ub9ac\uace0 <code>_<\/code> \ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li>250\ubc14\uc774\ud2b8\ub97c \ub118\uc9c0 \uc54a\uc544\uc57c \ud569\ub2c8\ub2e4.<\/li>\n<li>\ubc84\ud0b7 \ub0b4\uc5d0\uc11c \uace0\uc720\ud574\uc57c \ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h3>\uac12<\/h3>\n<p>\uac12\uc758 \ucd5c\ub300 \ud06c\uae30\ub294 20MB\uc785\ub2c8\ub2e4. \uac12\uc740 \ub2e4\uc74c \uc911 \ud558\ub098\uac00 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><strong>\ubc14\uc774\ub108\ub9ac:<\/strong> \ubaa8\ub4e0 \ud615\ud0dc\uc758 \ubc14\uc774\ub108\ub9ac\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uc9c4 \uac12\uc740 \uad6c\ubb38 \ubd84\uc11d, \uc778\ub371\uc2f1 \ub610\ub294 \ucffc\ub9ac\ud560 \uc218 \uc5c6\ub2e4\ub294 \uc810\uc5d0 \uc720\uc758\ud558\uc138\uc694. \ud0a4\ub85c\ub9cc \uac80\uc0c9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>JSON:<\/strong> JSON \uac12\uc740 <em>\ubb38\uc11c<\/em>\ub97c \uc0ac\uc6a9\ud558\uc5ec \uad6c\ubb38 \ubd84\uc11d, \uc778\ub371\uc2f1 \ubc0f \ucffc\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uac01 \ubb38\uc11c\ub294 \ud558\ub098 \uc774\uc0c1\uc758 \uc18d\uc131\uc73c\ub85c \uad6c\uc131\ub418\uba70, \uac01 \uc18d\uc131\uc5d0\ub294 \uace0\uc720\ud55c \uac12\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc18d\uc131\uc758 \uac12\uc740 \uc22b\uc790, \ubb38\uc790\uc5f4 \ub610\ub294 \ubd80\uc6b8\uacfc \uac19\uc740 \uae30\ubcf8 \uc720\ud615\uc774\uac70\ub098 \uc784\ubca0\ub514\ub4dc \ubb38\uc11c \ub610\ub294 \ubc30\uc5f4\uacfc \uac19\uc740 \ubcf5\ud569\ud615\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h3>JSON\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc785\ub2c8\ub2e4.<\/h3>\n<p>JSON\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubd05\uc2dc\ub2e4. JSON \ubb38\uc11c\ub97c \uad6c\ubb38 \ubd84\uc11d, \uc0c9\uc778, \ucffc\ub9ac \ubc0f \uc870\uc791\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc2e4\uc81c\ub85c Couchbase\ub294 \ubd84\uc0b0 \ubb38\uc11c \uc9c0\ud5a5 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ucffc\ub9ac \uc694\uad6c \uc0ac\ud56d\uc744 \ucda9\uc871\ud558\uae30 \uc704\ud574 N1QL \ucffc\ub9ac \uc5b8\uc5b4(\"\ub2c8\ucf08\"\ub85c \ubc1c\uc74c)\ub97c \ub3c4\uc785\ud588\uc2b5\ub2c8\ub2e4. N1QL\uc740 SQL\uc774 \uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4(RDBMS)\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uc870\uc791\ud558\ub294 \uac83\ucc98\ub7fc Couchbase\uc5d0\uc11c JSON \ub370\uc774\ud130\ub97c \uc870\uc791\ud558\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc5ec\uae30\uc5d0\ub294 \ub2e4\uc74c\uc774 \ud3ec\ud568\ub429\ub2c8\ub2e4. <code>\uc120\ud0dd<\/code>, <code>\uc0bd\uc785<\/code>, <code>\uc5c5\ub370\uc774\ud2b8<\/code>, <code>\uc0ad\uc81c<\/code> \uadf8\ub9ac\uace0 <code>MERGE<\/code> \ubb38\uc744 \uc0ac\uc6a9\ud558\uc5ec JSON \ub370\uc774\ud130\uc5d0 \ub300\ud574 \uc791\uc5c5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>XML\uc744 \ubb38\uc790\uc5f4\uc774\ub098 \ubc14\uc774\ub108\ub9ac \ube14\ub86d\uc73c\ub85c \uc800\uc7a5\ud560 \uc218\ub3c4 \uc788\uc9c0\ub9cc, \uadf8\ub807\uac8c \ud558\uba74 \uc7ac\ubbf8\uac00 \uc5c6\uac70\ub098 \uc720\uc6a9\uc131\uc774 \ub5a8\uc5b4\uc9c8\uae4c\uc694? \ub300\uc2e0 XML\uc744 JSON\uc73c\ub85c \uc790\ub3d9 \ubcc0\ud658\ud558\uba74 \uc5b4\ub5a8\uae4c\uc694? \uc9c8\ubb38\ud574\uc8fc\uc154\uc11c \uc815\ub9d0 \uac10\uc0ac\ud569\ub2c8\ub2e4.<\/p>\n<h3>XML: \ud655\uc7a5 \uac00\ub2a5\ud55c \ub9c8\ud06c\uc5c5 \uc5b8\uc5b4<\/h3>\n<p>XML\uc740 1996\ub144\uc5d0 \ub3c4\uc785\ub41c \ub9c8\ud06c\uc5c5 \uc5b8\uc5b4\ub85c, \uc0ac\ub78c\uc774 \uc77d\uc744 \uc218 \uc788\uace0 \uae30\uacc4\uac00 \uc77d\uc744 \uc218 \uc788\ub294 \ud615\uc2dd\uc73c\ub85c \ubb38\uc11c\ub97c \uc778\ucf54\ub529\ud558\uae30 \uc704\ud55c \uc77c\ub828\uc758 \uaddc\uce59\uc744 \uc815\uc758\ud569\ub2c8\ub2e4. W3C(\uc6d4\ub4dc\uc640\uc774\ub4dc\uc6f9 \ucee8\uc18c\uc2dc\uc5c4)\uc758 \uad8c\uc7a5 \uc0ac\ud56d\uc785\ub2c8\ub2e4.<\/p>\n<p>XML\uc758 \uc124\uacc4 \ubaa9\ud45c\ub294 \uc778\ud130\ub137 \uc804\ubc18\uc5d0\uc11c \ub2e8\uc21c\uc131, \ubc94\uc6a9\uc131, \uc720\uc6a9\uc131\uc744 \uac15\uc870\ud569\ub2c8\ub2e4. XML\uc740 \uc720\ub2c8\ucf54\ub4dc\ub97c \ud1b5\ud574 \ub2e4\uc591\ud55c \uc778\uac04 \uc5b8\uc5b4\ub97c \uac15\ub825\ud558\uac8c \uc9c0\uc6d0\ud558\ub294 \ud14d\uc2a4\ud2b8 \ub370\uc774\ud130 \ud615\uc2dd\uc785\ub2c8\ub2e4. XML\uc758 \uc124\uacc4\ub294 \ubb38\uc11c\uc5d0 \uc911\uc810\uc744 \ub450\uace0 \uc788\uc9c0\ub9cc, \uc774 \uc5b8\uc5b4\ub294 \uc6f9 \uc11c\ube44\uc2a4\uc5d0\uc11c \uc0ac\uc6a9\ub418\ub294 \uac83\uacfc \uac19\uc740 \uc784\uc758\uc758 \ub370\uc774\ud130 \uad6c\uc870\ub97c \ud45c\ud604\ud558\ub294 \ub370\uc5d0\ub3c4 \ub110\ub9ac \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 XML\uc758 \uc608\uc785\ub2c8\ub2e4:<\/p>\n<pre class=\"toolbar-overlay:false lang:js decode:true\">&lt;CD&gt;\r\n  &lt;TITLE&gt;EmpireBurlesque&lt;\/TITLE&gt;\r\n  &lt;ARTIST&gt;BobDylan&lt;\/ARTIST&gt;\r\n  &lt;COUNTRY&gt;USA&lt;\/COUNTRY&gt;\r\n  &lt;COMPANY&gt;Columbia&lt;\/COMPANY&gt;\r\n  &lt;PRICE&gt;10.90&lt;\/PRICE&gt;\r\n  &lt;YEAR&gt;1985&lt;\/YEAR&gt;\r\n&lt;\/CD&gt;\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h3>JSON: \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uac1d\uccb4 \ud45c\uae30\ubc95<\/h3>\n<p>2001\ub144\uacbd\uc5d0 \ub9cc\ub4e4\uc5b4\uc9c4 JSON\uc740 \uc0ac\ub78c\uc774 \uc77d\uc744 \uc218 \uc788\ub294 \ud14d\uc2a4\ud2b8\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc18d\uc131-\uac12 \uc30d\uacfc \ubc30\uc5f4(\ub610\ub294 \uae30\ud0c0 \uc9c1\ub82c\ud654 \uac00\ub2a5\ud55c \uac12)\ub85c \uad6c\uc131\ub41c \ub370\uc774\ud130 \uac1c\uccb4\ub97c \uc800\uc7a5\ud558\uace0 \uc804\uc1a1\ud558\ub294 \uc0c1\ub2f9\ud788 \uac00\ubcbc\uc6b4 \uac1c\ubc29\ud615 \ud45c\uc900 \ud30c\uc77c \ud615\uc2dd\uc774\uc790 \ub370\uc774\ud130 \uad50\ud658 \ud615\uc2dd\uc785\ub2c8\ub2e4.<\/p>\n<p>JSON\uc740 \ub9e4\uc6b0 \uc77c\ubc18\uc801\uc778 \ub370\uc774\ud130 \ud615\uc2dd\uc73c\ub85c, \uc11c\ubc84\uc640 \ud1b5\uc2e0\ud558\ub294 \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc608\ub85c \ub4e4 \uc218 \uc788\uc744 \uc815\ub3c4\ub85c \ub2e4\uc591\ud55c \uc6a9\ub3c4\ub85c \uc0ac\uc6a9\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 JSON \uc0d8\ud50c\uc785\ub2c8\ub2e4:<\/p>\n<pre class=\"toolbar-overlay:false lang:js decode:true\">{\r\n  \"email\": \"testme@example.org\",\r\n  \"friends\": [\r\n    {\"name\": \"rick\"},\r\n    {\"name\": \"cate\"}\r\n  ]\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h3>\uc804 \uc138\uacc4\ub97c \uc810\ub839\ud55c JSON<\/h3>\n<p>\uc624\ub298\ub0a0 \ub450 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc778\ud130\ub137\uc744 \ud1b5\ud574 \uc11c\ub85c \ud1b5\uc2e0\ud560 \ub54c, \ud2b9\ud788 \uc0ac\ub78c\uc774 \uc77d\uc744 \uc218 \uc788\ub294 \ud14d\uc2a4\ud2b8\ub85c \ud1b5\uc2e0\ud558\ub294 \uacbd\uc6b0 JSON\uc744 \uc0ac\uc6a9\ud560 \uac00\ub2a5\uc131\uc774 \ub192\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"JSON \ucc44\ud0dd\" src=\"https:\/\/twobithistory.org\/images\/json.svg\" alt=\"JSON vs XML adoption\" width=\"660\" height=\"400\" \/><\/p>\n<p>XML \ud32c\uc774\ub77c\uba74 \uc5ec\uae30\uc11c \uba54\uc2e0\uc800\ub97c \uc3d8\uc9c0 \ub9c8\uc138\uc694. HTML\uc774 \ub9c8\ud06c\uc5c5 \uc5b8\uc5b4\uc778 \uc774\uc0c1 XML\uc774 \uc0ac\ub77c\uc9c0\uc9c0\ub294 \uc54a\uaca0\uc9c0\ub9cc, \uc11c\ub85c \ud1b5\uc2e0\ud574\uc57c \ud558\ub294 \uc778\ud130\ub137 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uac1c\ubc1c\ud558\ub294 \ub370 \uc788\uc5b4\uc11c\ub294 \ud1b5\uacc4\uac00 \uac70\uc9d3\ub9d0\uc744 \ud558\uc9c0 \uc54a\ub294\ub2e4\uace0 \uc0dd\uac01\ud569\ub2c8\ub2e4.<\/p>\n<h2 id=\"prereq\">\uc804\uc81c \uc870\uac74: \uc774\ubca4\ud2b8\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uae30<\/h2>\n<p>\uc774 \uae00\uc5d0\uc11c\ub294 \ucd5c\uc2e0 \ubc84\uc804\uc778 6.6.2 \ubc84\uc804\uc744 \uc0ac\uc6a9\ud558\uc9c0\ub9cc \uc774\uc804 \ubc84\uc804\uc5d0\uc11c\ub3c4 \uc815\uc0c1\uc801\uc73c\ub85c \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<p>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4\ub098 \uc774\ubca4\ud2b8 \uc11c\ube44\uc2a4\uc5d0 \uc775\uc219\ud558\uc9c0 \uc54a\ub2e4\uba74 \ub2e4\uc74c \ub9ac\uc18c\uc2a4\ub97c \ud1b5\ud574 \ud558\ub098 \uc774\uc0c1\uc758 \uc774\ubca4\ud2b8 \uc608\uc2dc\ub97c \uc0b4\ud3b4\ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/6.6\/getting-started\/start-here.html?ref=blog\" target=\"_blank\" rel=\"noopener\">\uc791\ub3d9\ud558\ub294 Couchbase 6.6.2 \uc11c\ubc84 \uc124\uc815\ud558\uae30<\/a> \"\uc5ec\uae30\uc11c \uc2dc\uc791\ud558\uc138\uc694!\"\uc758 \uc9c0\uce68\uc5d0 \ub530\ub77c \ud074\ub9ad\ud569\ub2c8\ub2e4.<\/li>\n<li>\uae30\ubcf8 \uc774\ubca4\ud2b8 \ud568\uc218\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \ubc30\ud3ec\ud558\ub294 \ubc29\ubc95\uc744 \uc774\ud574\ud569\ub2c8\ub2e4. <a href=\"https:\/\/docs.couchbase.com\/server\/6.6\/eventing\/eventing-example-data-enrichment.html?ref=blog\" target=\"_blank\" rel=\"noopener\">\ub370\uc774\ud130 \uac15\ud654 \uc608\uc81c\uc758 \uc9c0\uce68\uc5d0 \ub530\ub77c<\/a>. '\uc18c\uc2a4' \ubc84\ud0b7\ub9cc \uc0ac\uc6a9\ud558\ub294 '\uc0ac\ub840 2'\ub97c \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\ub2e4\uc74c\uc774 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uc2ed\uc2dc\uc624. <strong>\ucd9c\ucc98<\/strong> UI\uc758 \ubc84\ud0b7 \ubcf4\uae30\uc5d0\uc11c \ucd5c\uc18c 100MB\uc758 \ubc84\ud0b7\uc744 \uc120\ud0dd\ud569\ub2c8\ub2e4.<\/li>\n<li>\ub77c\ub294 \ubc84\ud0b7\uc774 \uc788\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4. <strong>\uba54\ud0c0\ub370\uc774\ud130<\/strong> \ub97c 100MB \uc774\uc0c1\uc73c\ub85c \uc124\uc815\ud558\uc138\uc694.<\/li>\n<li>\ub2e4\uc74c\uc5d0 \ub300\ud55c \ubb38\uc11c\ub97c \ucc38\uc870\ud558\uc138\uc694. <a href=\"https:\/\/docs.couchbase.com\/server\/6.6\/manage\/manage-buckets\/create-bucket.html?ref=blog\" target=\"_blank\" rel=\"noopener\">\ubc84\ud0b7\uc744 \ub9cc\ub4dc\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \ub2e8\uacc4<\/a>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>Couchbase\uc5d0 XML \uc0bd\uc785\ud558\uae30<\/h2>\n<p>\uc774\uc81c \ub370\uc774\ud130\ub97c \ub85c\ub4dc\ud558\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc788\uac70\ub098 <code>cbimport<\/code> \ub97c \uc0ac\uc6a9\ud558\uc5ec XML \ub370\uc774\ud130\ub97c Couchbase \ud074\ub7ec\uc2a4\ud130\uc5d0 \ub85c\ub4dc\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc544\ub798 \ucf54\ub4dc\uc5d0\uc11c\ub294 \uccab \ubc88\uc9f8 \ubb38\uc11c\uc5d0 <em>\ud0a4<\/em> <code>xml::1<\/code> \ubc0f <em>body<\/em> \ub85c \uad6c\uc131\ub41c <code>\uc720\ud615<\/code> \ubc0f <code>id<\/code> \ud0a4\uc5d0 \uc0ac\uc6a9\ub418\ub294 \uac12(\uc774 \uac12\uc740 \uc120\ud0dd \uc0ac\ud56d\uc774\uc9c0\ub9cc \uc720\uc6a9\ud568), \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc18d\uc131 <code>in_xml<\/code> XML \ubb38\uc790\uc5f4 \uc790\uccb4\ub97c \ud3ec\ud568\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"toolbar-overlay:false wrap:true lang:default decode:true\">{\r\n  \"type\": \"xml\",\r\n  \"id\": 1,\r\n  \"in_xml\": \"&lt;CD&gt;&lt;TITLE&gt;EmpireBurlesque&lt;\/TITLE&gt;&lt;ARTIST&gt;BobDylan&lt;\/ARTIST&gt;&lt;COUNTRY&gt;USA&lt;\/COUNTRY&gt;&lt;COMPANY&gt;Columbia&lt;\/COMPANY&gt;&lt;PRICE&gt;10.90&lt;\/PRICE&gt;&lt;YEAR&gt;1985&lt;\/YEAR&gt;&lt;\/CD&gt;\"\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\uc704\uc758 XML \ubb38\uc790\uc5f4\ub85c\ub294 \ub9ce\uc740 \uac83\uc744 \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ubb3c\ub860 \ud504\ub85c\ud37c\ud2f0\ub97c \uc0c9\uc778\ud654\ud560 \uc218\ub294 \uc788\uc9c0\ub9cc <code>in_xml<\/code> \ub97c \ubb38\uc790\uc5f4\ub85c \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\uc9c0\ub9cc, \uc81c \uc18c\uacac\uc73c\ub85c\ub294 \uc4f8\ubaa8\uc5c6\ub294 \uc811\ub450\uc0ac \uac80\uc0c9\uc744 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294 \ud55c \uc774 \ubc29\ubc95\uc73c\ub85c \ub9ce\uc740 \uc131\ub2a5\uc744 \uc5bb\uc9c0 \ubabb\ud560 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc804\uccb4 \ud14d\uc2a4\ud2b8 \uac80\uc0c9(FTS) \uc81c\ud488\uc73c\ub85c \uc804\ub2ec\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uacbd\uc6b0 \ub354 \ub9ce\uc740 \uc720\uc6a9\uc131\uc744 \uc5bb\uc744 \uc218 \uc788\uc9c0\ub9cc, \uc911\uc694\ud55c \uc77c\ubd80\uac00 \uc544\ub2cc \uc804\uccb4 XML \ud398\uc774\ub85c\ub4dc\ub97c \uc0c9\uc778\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>\uc6b0\ub9ac\uac00 \uc815\ub9d0\ub85c \uc6d0\ud558\ub294 \uac83\uc740 XML \ubb38\uc790\uc5f4 \ud504\ub85c\ud37c\ud2f0\uc758 JSON \ud45c\ud604\uc785\ub2c8\ub2e4. <code>in_xml<\/code>\uc640 \uac19\uc740 \uac83\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"toolbar-overlay:false lang:js decode:true\">\"out_json\": {\r\n  \"CD\": {\r\n    \"TITLE\": \"EmpireBurlesque\",\r\n    \"ARTIST\": \"BobDylan\",\r\n    \"COUNTRY\": \"USA\",\r\n    \"COMPANY\": \"Columbia\",\r\n    \"PRICE\": \"10.90\",\r\n    \"YEAR\": \"1985\"\r\n  }\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\uc0c8 \uc18d\uc131 \uc0ac\uc6a9 <code>out_json<\/code>\uc774\uc81c N1QL, \uc778\ub371\uc2f1, \uc804\uccb4 \ud14d\uc2a4\ud2b8 \uac80\uc0c9(FTS), \uc774\ubca4\ud2b8 \ubc0f \ubd84\uc11d\uc774 \ubaa8\ub450 \uae30\ubcf8\uc801\uc73c\ub85c \ud6a8\uc728\uc801\uc73c\ub85c \uc791\ub3d9\ud558\ub294 \uc801\uc808\ud55c \uad6c\uc870\uc758 \uac1c\ubcc4 JSON \uc18d\uc131\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\ub7ec\ud55c \uc608\ube44 \ub2e8\uacc4\uac00 \ub05d\ub098\uba74 \ub370\uc774\ud130\ub97c \ud30c\uc2f1\ud558\uace0 JSON\uc73c\ub85c \ubcc0\ud658\ud55c \ud6c4 Couchbase\uc5d0 \ub123\uc73c\uba74 \ub41c\ub2e4\uace0 \uc0dd\uac01\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \ub2e8\uc810\uc740 \uc774\uc81c \ub354 \ub9ce\uc740 \ub178\ub4dc\ub97c \ucd94\uac00\ud558\uc5ec \ud655\uc7a5\ud560 \ub54c \ub354 \ub9ce\uc740 \uc9d0\uc744 \ub4e4\uace0 \ub2e4\ub2c8\uba70 \ubc30\ud3ec\ud574\uc57c \ud560 \uc778\ud504\ub77c(Couchbase \uc678\ubd80)\uac00 \ub298\uc5b4\ub09c\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>\ud53c\ud560 \uc218 \uc788\ub2e4\uba74 \uc0ac\uc6a9\uc790 \uc815\uc758 \uad6c\ubb38 \ubd84\uc11d\uae30\ub97c \uc791\uc131\ud558\uace0 \uc2f6\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc2dc\uac04\uc774 \uc9c0\ub0a8\uc5d0 \ub530\ub77c \uc694\uad6c \uc0ac\ud56d\uacfc \ub370\uc774\ud130 \ud615\uc2dd\uc774 \ubc14\ub00c\uba74 \uc7ac\ubbf8\ub3c4 \uc5c6\uace0 \uc720\uc9c0 \uad00\ub9ac\ub3c4 \uc5b4\ub835\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc0c1\uc801\uc73c\ub85c\ub294 \ub370\uc774\ud130 \ub85c\ub354\uc5d0 \uc601\ud5a5\uc744 \uc8fc\uc9c0 \uc54a\uace0 \uc77c\ubc18\uc801\uc73c\ub85c XML\uc744 \uc2e4\uc2dc\uac04\uc73c\ub85c JSON\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \uc778\uc11c\ubc84 \uc194\ub8e8\uc158\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n<h2>\uc989\uc11d\uc5d0\uc11c XML\uc744 JSON\uc73c\ub85c \ubcc0\ud658\ud558\uae30<\/h2>\n<p>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \uc774\ubca4\ud2b8 \uc11c\ube44\uc2a4\ub97c \uc785\ub825\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774\ubca4\ud2b8\ub294 \ub370\uc774\ud130\uc758 \ubaa8\ub4e0 \ubcc0\uacbd(\ub610\ub294 \ubcc0\uc774)\uc5d0 \ubc18\uc751\ud558\ub294 \ubb38\uc11c\uc758 '\ud3ec\uc2a4\ud2b8 \ud2b8\ub9ac\uac70'\ub77c\uace0 \uc0dd\uac01\ud558\uba74 \ub429\ub2c8\ub2e4. \uc8fc\uc694 \uc544\uc774\ub514\uc5b4\ub294 \ubb38\uc11c\ub97c \uc0bd\uc785\ud558\uac70\ub098 \uc5c5\ub370\uc774\ud2b8\ud560 \ub54c\ub9c8\ub2e4( <code>xml::1<\/code> \uc704) \ubb38\uc11c\uc5d0 \ub300\ud574 \uc791\uc740 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uc870\uac01, \uc989 \ub78c\ub2e4\uac00 \uc2e4\ud589\ub418\uace0 \ubb38\uc11c\ub97c \uc870\uc791\ud558\ub294 \ub370 \ud544\uc694\ud55c \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uc744 \ucea1\uc290\ud654\ud558\uc5ec \ubb38\uc11c\uac00 \uc6d0\ud558\ub294 \ud615\uc2dd\uc774 \ub418\ub3c4\ub85d \ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uacbd\uc6b0 \uc544\ub798\uc640 \uac19\uc740 \ubb38\uc11c\ub97c \ubcc0\ud658\ud558\ub824\uace0 \ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"toolbar-overlay:false wrap:true lang:default decode:true\">{\r\n  \"type\": \"xml\",\r\n  \"id\": 1,\r\n  \"in_xml\": \"&lt;CD&gt;&lt;TITLE&gt;EmpireBurlesque&lt;\/TITLE&gt;&lt;ARTIST&gt;BobDylan&lt;\/ARTIST&gt;&lt;COUNTRY&gt;USA&lt;\/COUNTRY&gt;&lt;COMPANY&gt;Columbia&lt;\/COMPANY&gt;&lt;PRICE&gt;10.90&lt;\/PRICE&gt;&lt;YEAR&gt;1985&lt;\/YEAR&gt;&lt;\/CD&gt;\"\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\uc2e4\uc2dc\uac04\uc73c\ub85c \uc704\uc758 \ubb38\uc11c\ub97c \uc544\ub798\uc640 \uac19\uc740 \ubcf4\uac15\ub41c \ubb38\uc11c\ub85c \ubcc0\ud658\ud558\ub824\uace0 \ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"toolbar-overlay:false wrap:true lang:js decode:true\">{\r\n  \"type\": \"xml\",\r\n  \"id\": 2,\r\n  \"in_xml\": \"&lt;CD&gt;&lt;TITLE&gt;EmpireBurlesque&lt;\/TITLE&gt;&lt;ARTIST&gt;BobDylan&lt;\/ARTIST&gt;&lt;COUNTRY&gt;USA&lt;\/COUNTRY&gt;&lt;COMPANY&gt;Columbia&lt;\/COMPANY&gt;&lt;PRICE&gt;10.90&lt;\/PRICE&gt;&lt;YEAR&gt;1985&lt;\/YEAR&gt;&lt;\/CD&gt;\",\r\n  \"out_json\": {\r\n    \"CD\": {\r\n      \"TITLE\": \"EmpireBurlesque\",\r\n      \"ARTIST\": \"BobDylan\",\r\n      \"COUNTRY\": \"USA\",\r\n      \"COMPANY\": \"Columbia\",\r\n      \"PRICE\": \"10.90\",\r\n      \"YEAR\": \"1985\"\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\uc704\uc5d0 \ud45c\uc2dc\ub41c \ubcf4\uac15\ub41c \ubb38\uc11c\ub294 \ud0a4-\uac12\uc744 \ud1b5\ud574 \uac80\uc0c9\ud558\uac70\ub098 N1QL\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud2b9\uc815 \ud544\ub4dc\uc5d0 \ub300\ud55c \uc778\ub371\uc2a4\ub97c \ud1b5\ud574 \uac80\uc0c9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc804\uacfc \ub9c8\ucc2c\uac00\uc9c0\ub85c \uac1c\ubcc4 JSON \ud504\ub85c\ud37c\ud2f0\ub294 \uc801\uc808\ud55c \uad6c\uc870\ub85c \ud45c\uc2dc\ub418\uc9c0\ub9cc <code>out_json<\/code> \uc18d\uc131\uc744 \uc0ac\uc6a9\ud558\uba74 \uc804\uccb4 \ud14d\uc2a4\ud2b8 \uac80\uc0c9(FTS), \ubd84\uc11d \ubc0f \uae30\ud0c0 \uc774\ubca4\ud2b8 \uae30\ub2a5\uc744 \ud6a8\uc728\uc801\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h3>\uc774\ubca4\ud2b8 \ud568\uc218: convertXMLtoJSON<\/h3>\n<p>Eventing\uc744 \uc0ac\uc6a9\ud558\uba74 \uc21c\uc218\ud55c \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uc744 \uc791\uc131\ud560 \uc218 \uc788\uc73c\uba70, Eventing \uc11c\ube44\uc2a4\ub294 \uc5ec\ub7ec \ub178\ub4dc\uc5d0\uc11c \uae30\ub2a5\uc744 \uad00\ub9ac\ud558\uace0 \ud655\uc7a5(\uc218\ud3c9 \ubc0f \uc218\uc9c1)\ud558\ub294 \ub370 \ud544\uc694\ud55c \ubaa8\ub4e0 \uc778\ud504\ub77c\ub97c \uc131\ub2a5\uacfc \uc548\uc815\uc131\uc744 \uac16\ucd98 \ubc29\uc2dd\uc73c\ub85c \ucc98\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n<p>\ubaa8\ub4e0 \uc774\ubca4\ud2b8 \ud568\uc218\uc5d0\ub294 \ub450 \uac00\uc9c0 \uc9c4\uc785\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4. <code>\uc628\uc5c5\ub370\uc774\ud2b8(\ubb38\uc11c,\uba54\ud0c0)<\/code> \uadf8\ub9ac\uace0 <code>OnDelete(\uba54\ud0c0,\uc635\uc158)<\/code>. \uc774 \uc608\uc81c\uc5d0\uc11c\ub294 \ud6c4\uc790\uc758 \uc9c4\uc785\uc810\uc5d0 \ub300\ud574\uc11c\ub294 \uac71\uc815\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ubb38\uc11c\uac00 \ubcc0\uacbd\ub418\uac70\ub098 \ubcc0\uacbd\ub418\uba74(\uc0bd\uc785, \uc5c5\uc11c\ud2b8, \ubc14\uafb8\uae30 \ub4f1) \ubb38\uc11c \uc0ac\ubcf8\uacfc \ubb38\uc11c\uc5d0 \ub300\ud55c \uc77c\ubd80 \uba54\ud0c0\ub370\uc774\ud130\uac00 \uc791\uc740 JavaScript \uc5d4\ud2b8\ub9ac \ud3ec\uc778\ud2b8\ub85c \uc804\ub2ec\ub429\ub2c8\ub2e4. <code>\uc628\uc5c5\ub370\uc774\ud2b8(\ubb38\uc11c,\uba54\ud0c0)<\/code>:<\/p>\n<pre class=\"toolbar-overlay:false lang:js decode:true\">function OnUpdate(doc, meta) {\r\n  \/\/ filter out non XML\r\n  if (!meta.id.startsWith(\"xml:\")) return;\r\n  \/\/ The KEY started with \"xml\" try to process it\r\n  \/\/ ===========================================================\r\n  \/\/ *** Do other work required here on non .in_xml changes ***\r\n  \/\/ ===========================================================\r\n  var jsonDoc = parseXmlToJson(doc.in_xml);\r\n  log(meta.id, \"1. INPUT xml doc.in_xml :\", doc.in_xml);\r\n  log(meta.id, \"2. OUTPUT doc.out_json :\", jsonDoc);\r\n  doc.out_json = jsonDoc;\r\n  \/\/ ===========================================================\r\n  \/\/ enrich the source bucket with .out_json\r\n  src_bkt[meta.id] = doc;\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\uadf8\ub9ac\uace0 <code>\uc628\uc5c5\ub370\uc774\ud2b8(\ubb38\uc11c,\uba54\ud0c0)<\/code> \ub85c\uc9c1\uc740 \ubaa8\ub4e0 \ub3cc\uc5f0\ubcc0\uc774\uc5d0 \ub300\ud574 \ub124 \ub2e8\uacc4\ub97c \uc218\ud589\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>\uba3c\uc800 <em>\ud0a4<\/em> \ub85c \uc2dc\uc791\ud558\uc9c0 \uc54a\uc73c\uba74 \ud655\uc778\ub429\ub2c8\ub2e4. <code>xml:<\/code>\ub85c \uc124\uc815\ud558\uba74 \ub2e4\ub978 \uc791\uc5c5\uc744 \uc218\ud589\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ucc38\uace0 <code>meta.id<\/code> \ub294 <em>\ud0a4<\/em> \uc758 \ubb38\uc11c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.<\/li>\n<li>\ub458\uc9f8, \ud568\uc218\ub97c \ud638\ucd9c\ud558\uba74 \ub429\ub2c8\ub2e4. <code>parseXmlToJson(doc.in_xml)<\/code> \ud568\uc218\uc5d0 XML \ubb38\uc790\uc5f4\uc744 \uc804\ub2ec\ud558\uae30\ub9cc \ud558\uba74 \ub429\ub2c8\ub2e4.<\/li>\n<li>\uc14b\uc9f8, \ub3cc\uc544\uc624\ub294 \ub0b4\uc6a9\uc740 \ubb38\uc11c \uc0ac\ubcf8\uc5d0 \uc18d\uc131\uc73c\ub85c\uc11c \uc0c8 \ud544\ub4dc\ub85c \ucd94\uac00\ub429\ub2c8\ub2e4. <code>out_json<\/code>.<\/li>\n<li>\ub137\uc9f8, JSON \ud45c\ud604\uc73c\ub85c \ubb38\uc11c\ub97c \uc2e4\uc2dc\uac04\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h3>\ud575\uc2ec XML-to-JSON \ubcc0\ud658 \ub85c\uc9c1<\/h3>\n<p>\ub2e4\uc74c\uc740 XML-JSON \ubcc0\ud658\uc758 \ud575\uc2ec \ub85c\uc9c1\uc785\ub2c8\ub2e4:<\/p>\n<pre class=\"toolbar-overlay:false lang:js decode:true\">\/\/ 6.6.0 version no String.matchAll need our own MatchAll function\r\nfunction* MatchAll(str, regExp) {\r\n  if (!regExp.global) {\r\n    throw new TypeError('Flag \/g must be set!');\r\n  }\r\n  const localCopy = new RegExp(regExp, regExp.flags);\r\n  let match;\r\n  while (match = localCopy.exec(str)) {\r\n    yield match;\r\n  }\r\n}\r\n\r\n\/\/ A simple XML to JSON parser\r\nfunction parseXmlToJson(xml) {\r\n    const json = {};\r\n    for (const res of MatchAll(xml,\/(?:&lt;(\\w*)(?:\\s[^&gt;]*)*&gt;)((?:(?!&lt;\\1).)*)(?:&lt;\\\/\\1&gt;)|&lt;(\\w*)(?:\\s*)*\\\/&gt;\/gm)) {\r\n        const key = res[1] || res[3];\r\n        const value = res[2] &amp;&amp; parseXmlToJson(res[2]);\r\n        json[key] = ((value &amp;&amp; Object.keys(value).length) ? value : res[2]) || null;\r\n    }\r\n    return json;\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\uc0ac\uc6a9\uc790 \ub355\ubd84\uc5d0 <code>\ub9c8\uc2a4\ud130\ud53c\uc2a4<\/code> \uc2a4\ud0dd \uc624\ubc84\ud50c\ub85c\uc5d0\uc11c \uacf5\uc720 <a href=\"https:\/\/stackoverflow.com\/questions\/1773550\/convert-xml-to-json-and-back-using-javascript\/61593773#61593773\" target=\"_blank\" rel=\"noopener\">\uba54\uc11c\ub4dc <code>parseXmlToJson(xml)<\/code> \uc804 \uc138\uacc4\uc640 \ud568\uaed8<\/a>. \uba54\uc11c\ub4dc <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Guide\/Regular_Expressions\" target=\"_blank\" rel=\"noopener\">\uba4b\uc9c4 \uc815\uaddc\uc2dd\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/a> \uc744 \ud638\ucd9c\ud558\uc5ec \uc77c\uae09 JSON \uac1d\uccb4\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4. (<em>\uc608, \uc791\ub3d9\ud558\uba70 \uc6b0\uc544\ud558\uace0 \ucef4\ud329\ud2b8\ud569\ub2c8\ub2e4.<\/em>.)<\/p>\n<p>Couchbase 7.0\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. <code>MatchAll(str, regExp)<\/code> \uc704\uc758 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \ucf54\ub4dc\uc5d0\uc11c <strong>not<\/strong> \uc774\uc81c Couchbase\uc5d0 \ub2e4\uc74c\uc744 \ud3ec\ud568\ud558\ub294 \ucd5c\uc2e0 v8 \ub7ec\ub108\uac00 \uc788\uc73c\ubbc0\ub85c \ud544\uc694\ud569\ub2c8\ub2e4. <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/String\/matchAll\" target=\"_blank\" rel=\"noopener\">\uc758 <code>String.prototype.MatchAll()<\/code> \ud568\uc218<\/a>.<\/p>\n<h3>\uc774\ubca4\ud2b8 \uae30\ub2a5 \ucd5c\uc801\ud654\ud558\uae30<\/h3>\n<p>\uc9c0\uae08\uae4c\uc9c0\ub294 \uc798 \uc791\ub3d9\ud558\uc9c0\ub9cc \ubb38\uc81c\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub370\uc774\ud130\uc5d0 \ucd08\ub2f9 100,000\uac1c\uc758 \ub3cc\uc5f0\ubcc0\uc774\uac00 \ubc1c\uc0dd\ud55c\ub2e4\uace0 \uac00\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. <em>\ud0a4<\/em> \uc811\ub450\uc0ac <code>xml:<\/code>. . <code>in_xml<\/code> \uc18d\uc131\uc774 \ubcc0\uacbd\ub418\uc9c0 \uc54a\ub294\ub2e4\uba74, \ud604\uc7ac Eventing \ud568\uc218\ub294 a) 100,000\ubc88\uc758 XML-to-JSON \ubcc0\ud658\uc744 \uc218\ud589\ud558\uace0 b) \ub370\uc774\ud130 \uc11c\ube44\uc2a4(\ub610\ub294 \ud0a4-\uac12 \uc800\uc7a5\uc18c)\uc5d0 100,000\ubc88\uc758 \uc4f0\uae30\ub97c \uc218\ud589\ud558\uac8c \ub429\ub2c8\ub2e4. \ub610\ud55c XML\uc740 \uc0d8\ud50c\ubcf4\ub2e4 \ud6e8\uc52c \ub354 \ubcf5\uc7a1\ud560 \uac00\ub2a5\uc131\uc774 \ub192\uc2b5\ub2c8\ub2e4. <code>in_xml<\/code> \ubb38\uc790\uc5f4\uc740 \uc911\ucca9\uc774 \uae4a\uace0 \uc218\ucc9c \uac1c\uc758 \ud544\ub4dc\uac00 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uba87 \uac00\uc9c0 \uace0\ub824\ud574\uc57c \ud560 \uc0ac\ud56d\uc774 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>\uc7ac\uadc0 \ub8e8\ud2f4\uc744 \ud1b5\ud574 \uc911\ucca9\ub41c \ub300\uc6a9\ub7c9 XML \ubb38\uc11c\ub97c \ubcc0\ud658\ud558\ub824\uba74 \ucef4\ud4e8\ud305 \ub9ac\uc18c\uc2a4\uac00 \ud544\uc694\ud569\ub2c8\ub2e4. \uba54\uc11c\ub4dc <code>parseXmlToJson(xml)<\/code> \ub294 XML\uc774 \ubcc0\uacbd\ub418\uc9c0 \uc54a\ub354\ub77c\ub3c4 \ubaa8\ub4e0 \ubcc0\uc774\uc5d0 \ub300\ud574 \uc2e4\ud589\ub429\ub2c8\ub2e4.<\/li>\n<li>\ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc4f0\uae30\ub294 I\/O\ub97c \uc218\ubc18\ud558\uba70, \ub354 \uc911\uc694\ud55c \uc791\uc5c5\uc744 \uc704\ud574 \uc8fc\uae30\ub098 \uc4f0\uae30\ub97c \uc800\uc7a5\ud558\uace0 \uc2f6\uc2b5\ub2c8\ub2e4. \ud604\uc7ac \uc774\ubca4\ud2b8 \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uba74 XML\uc774 \ubcc0\uacbd\ub418\uc9c0 \uc54a\ub354\ub77c\ub3c4 \ubaa8\ub4e0 \ubcc0\uacbd \uc2dc\ub9c8\ub2e4 \ud0a4-\uac12 \uc800\uc7a5\uc18c\uc5d0 \uc4f0\uae30\ub97c \uc218\ud589\ud558\uac70\ub098 \ubb38\uc11c\ub97c \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\uc704\uc758 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\ub824\uba74 \ubb38\uc11c \uc18d\uc131\ub9cc \uc5c5\ub370\uc774\ud2b8\ud558\ub294 \ub85c\uc9c1\uc744 \ucd94\uac00\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. <code>OUT_XML<\/code> \uac00 <code>in_xml<\/code> \ub370\uc774\ud130 \ubcc0\uacbd\uc774 \ubc1c\uc0dd\ud558\uac70\ub098 <code>OUT_XML<\/code> \uc18d\uc131\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc774 \ucd5c\uc801\ud654\ub97c \uad6c\ud604\ud558\uae30 \uc704\ud574 \uc800\ud76c\ub294 <code>\uccb4\ud06c\uc12c<\/code> \uc774\ubca4\ud2b8\uc758 \ube60\ub978 <code>crc64()<\/code> \uba54\uc11c\ub4dc\uc758 <code>in_xml<\/code> \uc18d\uc131\uc744 \uc0dd\uc131\ud558\uace0 \ubb38\uc11c\uc5d0 \uc18d\uc131\uc73c\ub85c \uc800\uc7a5\ud569\ub2c8\ub2e4: <code>xmlchksum<\/code>.<\/p>\n<p>\uadf8\ub7ec\uba74 \uc774 \ud544\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubd88\ud544\uc694\ud558\uac8c XML\uc744 JSON\uc73c\ub85c \ubcc0\ud658\ud558\uac70\ub098 \ub370\uc774\ud130 \uc11c\ube44\uc2a4\uc5d0 \ubcc0\uacbd\ub418\uc9c0 \uc54a\uc740 \ubb38\uc11c\ub97c \ubd88\ud544\uc694\ud558\uac8c \uc791\uc131\ud558\ub294 \ucd94\uac00 \uc791\uc5c5\uc744 \ucd5c\uc18c\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ucd5c\uc801\ud654\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"toolbar-overlay:false lang:js decode:true\">function OnUpdate(doc, meta) {\r\n    \/\/ filter out non XML\r\n    if (!meta.id.startsWith(\"xml:\")) return;\r\n    \/\/ The KEY started with \"xml\" try to process it\r\n    \/\/ ===========================================================\r\n    \/\/ *** Do other work required here on non .in_xml changes ***\r\n    \/\/ ===========================================================\r\n    \/\/ let's see if we need to re-create our json representation.\r\n    var xmlchksum = crc64(doc.in_xml);\r\n    \/\/ ===========================================================\r\n    \/\/ Don't reprocess if the doc.in_xml has not changed this could be\r\n    \/\/ a big performance win if the doc has other fields that mutate.\r\n    \/\/ We do this via a checksum of the .in_xml property.\r\n    if (doc.xmlchksum &amp;&amp; doc.xmlchksum === xmlchksum) return;\r\n    \/\/ Either this is the first pass, or the .in_xml property changed.\r\n    var jsonDoc = parseXmlToJson(doc.in_xml);\r\n    log(meta.id,\"1. INPUT xml doc.in_xml :\", doc.in_xml);\r\n    log(meta.id,\"2. CHECKSUM doc.in_xml :\", xmlchksum);\r\n    log(meta.id,\"3. OUTPUT doc.out_json :\", jsonDoc);\r\n    doc.out_json = jsonDoc;\r\n    doc.xmlchksum = xmlchksum;\r\n    \/\/ ===========================================================\r\n    \/\/ enrich the source bucket with .out_json and .xmlchksum\r\n    src_bkt[meta.id] = doc;\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\uc6d0\ubcf8\uc5d0 \ucd94\uac00\ud55c \ub0b4\uc6a9\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. <code>\uc628\uc5c5\ub370\uc774\ud2b8(\ubb38\uc11c,\uba54\ud0c0)<\/code> \uc9c4\uc785\uc810\uc785\ub2c8\ub2e4.<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>\uba3c\uc800, \uc778\uba54\ubaa8\ub9ac\uc5d0 \uc788\ub294 <code>\uccb4\ud06c\uc12c<\/code> \uc5d0\uc11c \uc561\uc138\uc2a4\ud55c XML \ubb38\uc790\uc5f4\uc5d0 <code>doc.in_xml<\/code>.<\/li>\n<li>\ub458\uc9f8, \uc774\ub97c \uc800\uc7a5\ub41c <code>\uccb4\ud06c\uc12c<\/code>: <code>doc.xmlchksum<\/code> (\uc788\ub294 \uacbd\uc6b0).<\/li>\n<li>\uc14b\uc9f8, \uc800\uc7a5\ub41c <code>\uccb4\ud06c\uc12c<\/code> \uac00 \ub204\ub77d\ub418\uc5c8\uac70\ub098 \ub2e4\ub978 \uacbd\uc6b0, XML\uc744 JSON\uc73c\ub85c \ubcc0\ud658\ud558\uace0 \uc0c8\ub85c\uc6b4 <code>\uccb4\ud06c\uc12c<\/code> <code>xmlchksum<\/code> \ubc0f <code>out_json<\/code> \uc18d\uc131\uc744 \ub370\uc774\ud130 \uc11c\ube44\uc2a4\uc5d0 \ub2e4\uc2dc \uae30\ub85d\ud558\uc5ec \ubb38\uc11c\uc758 \uc18d\uc131\uc744 \ubcc0\uacbd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h3>\ucd5c\uc885\uc801\uc774\uace0 \uc644\ubcbd\ud55c \uc774\ubca4\ud2b8 \uae30\ub2a5<\/h3>\n<p>\uc55e\uc11c \uc5b8\uae09\ud55c \ubaa8\ub4e0 \ucd5c\uc801\ud654\uac00 \uc801\uc6a9\ub41c XML\uc744 JSON\uc73c\ub85c \ubcc0\ud658\ud558\ub294 \uc804\uccb4 \uc774\ubca4\ud2b8 \ud568\uc218\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"toolbar-overlay:false lang:js decode:true\">function OnUpdate(doc, meta) {\r\n    \/\/ filter out non XML\r\n    if (!meta.id.startsWith(\"xml:\")) return;\r\n    \/\/ The KEY started with \"xml\" try to process it\r\n    \/\/ ===========================================================\r\n    \/\/ *** Do other work required here on non .in_xml changes ***\r\n    \/\/ ===========================================================\r\n    \/\/ let's see if we need to re-create our json representation.\r\n    var xmlchksum = crc64(doc.in_xml);\r\n    \/\/ ===========================================================\r\n    \/\/ Don't reprocess if the doc.in_xml has not changed this could be\r\n    \/\/ a big performance win if the doc has other fields that mutate.\r\n    \/\/ We do this via a checksum of the .in_xml property.\r\n    if (doc.xmlchksum &amp;&amp; doc.xmlchksum === xmlchksum) return;\r\n    \/\/ Either this is the first pass, or the .in_xml property changed.\r\n    var jsonDoc = parseXmlToJson(doc.in_xml);\r\n    log(meta.id,\"1. INPUT xml doc.in_xml :\", doc.in_xml);\r\n    log(meta.id,\"2. CHECKSUM doc.in_xml :\", xmlchksum);\r\n    log(meta.id,\"3. OUTPUT doc.out_json :\", jsonDoc);\r\n    doc.out_json = jsonDoc;\r\n    doc.xmlchksum = xmlchksum;\r\n    \/\/ ===========================================================\r\n    \/\/ enrich the source bucket with .out_json and .xmlchksum\r\n    src_bkt[meta.id] = doc;\r\n}\r\n\r\n\/\/ 6.6.0 version no String.matchAll need our own MatchAll function\r\nfunction* MatchAll(str, regExp) {\r\n  if (!regExp.global) {\r\n    throw new TypeError('Flag \/g must be set!');\r\n  }\r\n  const localCopy = new RegExp(regExp, regExp.flags);\r\n  let match;\r\n  while (match = localCopy.exec(str)) {\r\n    yield match;\r\n  }\r\n}\r\n\r\n\/\/ A simple XML to JSON parser\r\nfunction parseXmlToJson(xml) {\r\n    const json = {};\r\n    for (const res of MatchAll(xml,\/(?:&lt;(\\w*)(?:\\s[^&gt;]*)*&gt;)((?:(?!&lt;\\1).)*)(?:&lt;\\\/\\1&gt;)|&lt;(\\w*)(?:\\s*)*\\\/&gt;\/gm)) {\r\n        const key = res[1] || res[3];\r\n        const value = res[2] &amp;&amp; parseXmlToJson(res[2]);\r\n        json[key] = ((value &amp;&amp; Object.keys(value).length) ? value : res[2]) || null;\r\n    }\r\n    return json;\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>\uc774\ubca4\ud2b8 \ud568\uc218 \ubc30\ud3ec<\/h2>\n<p>\uc774\uc81c \uc774\ubca4\ud2b8 \uae30\ub2a5\uc744 \ubc30\ud3ec\ud560 \ucc28\ub840\uc785\ub2c8\ub2e4. XML-to-JSON \ubcc0\ud658\uae30\uc758 \ucf54\ub4dc\uc640 \ub514\uc790\uc778\uc744 \uc57d\uac04 \uac80\ud1a0\ud588\uc73c\ub2c8 \uc774\uc81c \ubaa8\ub4e0 \uac83\uc774 \ud568\uaed8 \uc791\ub3d9\ud558\ub294\uc9c0 \ud655\uc778\ud574 \ubcfc \ucc28\ub840\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uc2dc\uc810\uc5d0\uc11c JavaScript\uc5d0 \ud568\uc218\uac00 \uc788\uc73c\ubbc0\ub85c \uc774\ub97c Couchbase \ud074\ub7ec\uc2a4\ud130\uc5d0 \ucd94\uac00\ud558\uace0 \ud65c\uc131 \uc0c1\ud0dc\ub85c \ubc30\ud3ec\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uc608\uc81c\uc5d0\ub294 \ub450 \uac1c\uc758 \ubc84\ud0b7\uc774 \ud544\uc694\ud569\ub2c8\ub2e4: <strong>\ucd9c\ucc98<\/strong> (\uc989, \ubb38\uc11c \uc800\uc7a5\uc18c) \ubc0f <strong>\uba54\ud0c0\ub370\uc774\ud130<\/strong> (\uc989, \ub2e4\ub978 \uc774\ubca4\ud2b8 \ud568\uc218\uc640 \uacf5\uc720\ud560 \uc218 \uc788\ub294 \uc774\ubca4\ud2b8\uc6a9 \uc2a4\ud06c\ub798\uce58 \ud328\ub4dc). \uadf8\ub9ac\uace0 <strong>\ucd9c\ucc98<\/strong> \ubc84\ud0b7\uc758 \ud06c\uae30\ub294 100MB \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4(1,000\ub9cc \uac1c \uc774\uc0c1\uc758 \ubb38\uc11c\ub85c \ud14c\uc2a4\ud2b8\ud558\ub824\uba74 <strong>\ucd9c\ucc98<\/strong> \ubc84\ud0b7\uc744 \ub354 \ud06c\uac8c). \uadf8\ub9ac\uace0 <strong>\uba54\ud0c0\ub370\uc774\ud130<\/strong> \ubc84\ud0b7\uc758 \ucd5c\uc18c \ud06c\uae30\ub294 100MB\uc5ec\uc57c \ud569\ub2c8\ub2e4. \uc774 \ub450 \ubc84\ud0b7\uc740 \ubaa8\ub450 \uc774\ubbf8 <a href=\"#prereq\">\uc704\uc758 \uc804\uc81c \uc870\uac74\uc5d0 \ub530\ub77c<\/a>.<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>\uc5d0 \uc561\uc138\uc2a4\ud558\uc5ec \ud604\uc7ac \ubc84\ud0b7 \uad6c\uc131\uc744 \ud655\uc778\ud569\ub2c8\ub2e4. <strong>Couchbase \uc6f9 \ucf58\uc194 &gt; \ubc84\ud0b7<\/strong> \ud398\uc774\uc9c0\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4:<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11403 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/XML2JSON_1_buckets-2-1024x290.png\" alt=\"The Couchbase Web Console Buckets page\" width=\"900\" height=\"255\" data-recalc-dims=\"1\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_1_buckets-2-1024x290.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_1_buckets-2-300x85.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_1_buckets-2-768x218.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_1_buckets-2-1536x435.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_1_buckets-2-20x6.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_1_buckets-2-1320x374.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_1_buckets-2.png 1800w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>convertXMLtoJSON \ud568\uc218 \uc218\ub3d9 \ucd94\uac00\ud558\uae30<\/h2>\n<p>\uc5d0\uc11c \uccab \ubc88\uc9f8 \uc774\ubca4\ud2b8 \ud568\uc218\ub97c \ucd94\uac00\ud558\ub824\uba74 <strong>Couchbase \uc6f9 \ucf58\uc194 &gt; \uc774\ubca4\ud2b8 \uc124\uc815<\/strong> \ud398\uc774\uc9c0\uc5d0\uc11c <strong>\uae30\ub2a5 \ucd94\uac00<\/strong>\ub97c \ud074\ub9ad\ud574 \uc0c8 \uae30\ub2a5\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4. \uc758 <strong>\uae30\ub2a5 \ucd94\uac00<\/strong> \ub300\ud654 \uc0c1\uc790\uac00 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.<\/p>\n<p>\uc5d0\uc11c <strong>\uae30\ub2a5 \ucd94\uac00<\/strong> \ub300\ud654 \uc0c1\uc790\uc5d0\uc11c \uac1c\ubcc4 \uae30\ub2a5 \uc694\uc18c\uc5d0 \ub300\ud574 \uc544\ub798 \uc815\ubcf4\ub97c \uc785\ub825\ud569\ub2c8\ub2e4:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>\uc758 \uacbd\uc6b0 <strong>\uc18c\uc2a4 \ubc84\ud0b7<\/strong> \ub4dc\ub86d\ub2e4\uc6b4\uc5d0\uc11c <strong>\ucd9c\ucc98<\/strong>.<\/li>\n<li>\uc758 \uacbd\uc6b0 <strong>\uba54\ud0c0\ub370\uc774\ud130 \ubc84\ud0b7<\/strong> \ub4dc\ub86d\ub2e4\uc6b4\uc5d0\uc11c <strong>\uba54\ud0c0\ub370\uc774\ud130<\/strong>.<\/li>\n<li>\ub2e4\uc74c \uc0ac\ud56d\uc744 \ud655\uc778\ud558\uc2ed\uc2dc\uc624. <code>convertXMLtoJSON<\/code> \uc5d0\uc11c \uc0dd\uc131\ud558\ub294 \ud568\uc218\uc758 \uc774\ub984\uc785\ub2c8\ub2e4. <strong>\ud568\uc218 \uc774\ub984<\/strong> \ud14d\uc2a4\ud2b8 \uc0c1\uc790\uc785\ub2c8\ub2e4.<\/li>\n<li>[\uc120\ud0dd \ub2e8\uacc4] \ud14d\uc2a4\ud2b8 \uc785\ub825 <strong>\uc77c\ubc18 XML \ubcc0\ud658<\/strong>\uc5d0\uc11c <strong>\uc124\uba85<\/strong> \ud14d\uc2a4\ud2b8 \uc0c1\uc790\uc785\ub2c8\ub2e4.<\/li>\n<li>\uc758 \uacbd\uc6b0 <strong>\uc124\uc815<\/strong> \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc73c\ub824\uba74 \uae30\ubcf8\uac12\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/li>\n<li>\uc758 \uacbd\uc6b0 <strong>\ubc14\uc778\ub529<\/strong> \uc635\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub450 \uac1c\uc758 \ubc14\uc778\ub529\uc744 \ub9cc\ub4ed\ub2c8\ub2e4:\n<ul>\n<li>\ubc14\uc778\ub529\uc758 \uacbd\uc6b0 <strong>\ubc84\ud0b7 \ubcc4\uce6d<\/strong>\ub294 \ub2e4\uc74c\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4. <code>src_bkt<\/code> \ub85c <strong>\ubcc4\uce6d \uc774\ub984<\/strong> \uc744 \ud074\ub9ad\ud558\uace0 <strong>\ucd9c\ucc98<\/strong> \ub97c \uc5f0\uad00 \ubc84\ud0b7\uc73c\ub85c \uc9c0\uc815\ud558\uace0 \ubaa8\ub4dc\ub294 <strong>\uc77d\uae30 \ubc0f \uc4f0\uae30<\/strong>.<\/li>\n<li>\uc124\uc815\uc744 \uad6c\uc131\ud55c \ud6c4 \ub300\ud654 \uc0c1\uc790\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ud45c\uc2dc\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11391\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/XML2JSON_2_addfunc-1011x1024.png\" alt=\"Couchbase add function dialogue box\" width=\"645\" height=\"653\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_2_addfunc-1011x1024.png 1011w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_2_addfunc-296x300.png 296w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_2_addfunc-768x778.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_2_addfunc-65x65.png 65w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_2_addfunc-50x50.png 50w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_2_addfunc-300x304.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_2_addfunc-20x20.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_2_addfunc.png 1290w\" sizes=\"auto, (max-width: 645px) 100vw, 645px\" \/><\/li>\n<li>\uc5d0 \ud544\uc694\ud55c \ubaa8\ub4e0 \uc815\ubcf4\ub97c \uc81c\uacf5\ud55c \ud6c4 <strong>\uae30\ub2a5 \ucd94\uac00<\/strong> \ub300\ud654 \uc0c1\uc790\uc5d0\uc11c <strong>\ub2e4\uc74c: \ucf54\ub4dc \ucd94\uac00<\/strong>. . <code>\ud06c\ub860_\uc784\ud50c_2func_651<\/code> \ub300\ud654 \uc0c1\uc790\uac00 \ub098\ud0c0\ub0a9\ub2c8\ub2e4. \ub300\ud654 \uc0c1\uc790\uac00 \ub098\ud0c0\ub0a9\ub2c8\ub2e4. <code>convertXMLtoJSON<\/code> \ub300\ud654 \uc0c1\uc790\uc5d0\ub294 \ucc98\uc74c\uc5d0 \ud50c\ub808\uc774\uc2a4\ud640\ub354 \ucf54\ub4dc \ube14\ub85d\uc774 \ud3ec\ud568\ub429\ub2c8\ub2e4. \uc774 \ube14\ub85d\uc5d0 \uc800\ud76c\uac00 \uac1c\ubc1c\ud55c \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \ucf54\ub4dc\ub97c \ub300\uccb4\ud574\uc57c \ud569\ub2c8\ub2e4.<\/li>\n<li><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11392 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/XML2JSON_3_addfunc-1024x297.png\" alt=\"convert XML to JSON with Couchbase Eventing\" width=\"900\" height=\"261\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_3_addfunc-1024x297.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_3_addfunc-300x87.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_3_addfunc-768x223.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_3_addfunc-1536x446.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_3_addfunc-20x6.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_3_addfunc-1320x383.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_3_addfunc.png 1804w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/li>\n<li>\ub2e4\uc74c \uc774\ubca4\ud2b8 \ud568\uc218 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uc18c\uc2a4(48\uc904)\ub97c \ubcf5\uc0ac\ud558\uc5ec \ub2e4\uc74c \ud50c\ub808\uc774\uc2a4\ud640\ub354 \ucf54\ub4dc \ube14\ub85d\uc5d0 \ubd99\uc5ec\ub123\uc2b5\ub2c8\ub2e4. <code>convertXMLtoJSON<\/code>:\n<pre class=\"toolbar-overlay:false lang:js decode:true\">function OnUpdate(doc, meta) {\r\n    \/\/ filter out non XML\r\n    if (!meta.id.startsWith(\"xml:\")) return;\r\n    \/\/ The KEY started with \"xml\" try to process it\r\n    \/\/ ===========================================================\r\n    \/\/ *** Do other work required here on non .in_xml changes ***\r\n    \/\/ ===========================================================\r\n    \/\/ let's see if we need to re-create our json representation.\r\n    var xmlchksum = crc64(doc.in_xml);\r\n    \/\/ ===========================================================\r\n    \/\/ Don't reprocess if the doc.in_xml has not changed this could be\r\n    \/\/ a big performance win if the doc has other fields that mutate.\r\n    \/\/ We do this via a checksum of the .in_xml property.\r\n    if (doc.xmlchksum &amp;&amp; doc.xmlchksum === xmlchksum) return;\r\n    \/\/ Either this is the first pass, or the .in_xml property changed.\r\n    var jsonDoc = parseXmlToJson(doc.in_xml);\r\n    log(meta.id,\"1. INPUT xml doc.in_xml :\", doc.in_xml);\r\n    log(meta.id,\"2. CHECKSUM doc.in_xml :\", xmlchksum);\r\n    log(meta.id,\"3. OUTPUT doc.out_json :\", jsonDoc);\r\n    doc.out_json = jsonDoc;\r\n    doc.xmlchksum = xmlchksum;\r\n    \/\/ ===========================================================\r\n    \/\/ enrich the source bucket with .out_json and .xmlchksum\r\n    src_bkt[meta.id] = doc;\r\n}\r\n\r\n\/\/ 6.6.0 version no String.matchAll need our own MatchAll function\r\nfunction* MatchAll(str, regExp) {\r\n  if (!regExp.global) {\r\n    throw new TypeError('Flag \/g must be set!');\r\n  }\r\n  const localCopy = new RegExp(regExp, regExp.flags);\r\n  let match;\r\n  while (match = localCopy.exec(str)) {\r\n    yield match;\r\n  }\r\n}\r\n\r\n\/\/ A simple XML to JSON parser\r\nfunction parseXmlToJson(xml) {\r\n    const json = {};\r\n    for (const res of MatchAll(xml,\/(?:&lt;(\\w*)(?:\\s[^&gt;]*)*&gt;)((?:(?!&lt;\\1).)*)(?:&lt;\\\/\\1&gt;)|&lt;(\\w*)(?:\\s*)*\\\/&gt;\/gm)) {\r\n        const key = res[1] || res[3];\r\n        const value = res[2] &amp;&amp; parseXmlToJson(res[2]);\r\n        json[key] = ((value &amp;&amp; Object.keys(value).length) ? value : res[2]) || null;\r\n    }\r\n    return json;\r\n}<\/pre>\n<\/li>\n<li>\ubd99\uc5ec\ub123\uae30\ub97c \ub9c8\uce58\uba74 \uc544\ub798\uc640 \uac19\uc740 \ud654\uba74\uc774 \ub098\ud0c0\ub0a9\ub2c8\ub2e4:<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11396 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/XML2JSON_4_addfunc-1.png\" alt=\"The function editor in Couchbase Eventing\" width=\"1800\" height=\"1522\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_4_addfunc-1.png 1800w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_4_addfunc-1-300x254.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_4_addfunc-1-1024x866.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_4_addfunc-1-768x649.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_4_addfunc-1-1536x1299.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_4_addfunc-1-20x17.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_4_addfunc-1-1320x1116.png 1320w\" sizes=\"auto, (max-width: 1800px) 100vw, 1800px\" \/><\/li>\n<li>\ud074\ub9ad <strong>\uc800\uc7a5<\/strong>.<\/li>\n<li>\uc774\ubca4\ud2b8 \uc124\uc815 \ud654\uba74\uc73c\ub85c \ub3cc\uc544\uac00\ub824\uba74 <strong>&lt; \uc774\ubca4\ud2b8\ub85c \ub3cc\uc544\uac00\uae30<\/strong> \ub9c1\ud06c(\ud3b8\uc9d1\uae30 \uc544\ub798)\ub97c \ud074\ub9ad\ud558\uac70\ub098 <strong>\uc774\ubca4\ud2b8<\/strong> \uc635\uc158\uc744 \uc120\ud0dd\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>\ud568\uc218 \ubc30\ud3ec<\/h2>\n<p>\uc774\uc81c \uc774\ubca4\ud2b8 \uae30\ub2a5\uc744 \uc2dc\uc791\ud560 \uc900\ube44\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc5d0\uc11c <strong>Couchbase \uc6f9 \ucf58\uc194 &gt; \uc774\ubca4\ud2b8 \uc124\uc815<\/strong> \ud654\uba74\uc5d0\uc11c \ub2e4\uc74c \ub2e8\uacc4\ub97c \ub530\ub974\uc138\uc694:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>\uae30\ub2a5 \uc774\ub984\uc744 \ud074\ub9ad\ud569\ub2c8\ub2e4. <code>convertXMLtoJSON<\/code> \uc744 \ud074\ub9ad\ud574 \uae30\ub2a5 \ucee8\ud2b8\ub864\uc744 \ud655\uc7a5\ud558\uace0 \ub178\ucd9c\ud569\ub2c8\ub2e4.<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11394 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/XML2JSON_5_deploy-1024x288.png\" alt=\"Eventing function controls\" width=\"900\" height=\"253\" data-recalc-dims=\"1\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_5_deploy-1024x288.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_5_deploy-300x84.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_5_deploy-768x216.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_5_deploy-1536x432.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_5_deploy-20x6.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_5_deploy-1320x371.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_5_deploy.png 1798w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/li>\n<li>\ud074\ub9ad <strong>\ubc30\ud3ec<\/strong>.<\/li>\n<li>\uc5d0\uc11c <strong>\ubc30\ud3ec \uae30\ub2a5 \ud655\uc778<\/strong> \ub300\ud654 \uc0c1\uc790\uc5d0\uc11c <strong>\ubc30\ud3ec \uae30\ub2a5<\/strong> \ub97c \ud53c\ub4dc \uacbd\uacc4 \uc635\uc158\uc5d0\uc11c \uc120\ud0dd\ud569\ub2c8\ub2e4.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-11395\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/06\/XML2JSON_6_deployconf.png\" alt=\"Confirm deploy function Couchbase\" width=\"382\" height=\"251\" data-recalc-dims=\"1\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_6_deployconf.png 764w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_6_deployconf-300x197.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/XML2JSON_6_deployconf-20x13.png 20w\" sizes=\"auto, (max-width: 382px) 100vw, 382px\" \/><\/li>\n<li>\ud568\uc218\ub97c \ubc30\ud3ec\ud558\uba74 \ud65c\uc131\ud654\ub418\ub294 \ub370 \uc57d 18\ucd08\uac00 \uac78\ub9bd\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>\uc2e4\ud589 \uae30\ub2a5 \ud14c\uc2a4\ud2b8<\/h2>\n<p>\uc774 \uc2dc\uc810\uc5d0\uc11c \ubaa8\ub4e0 \ubb38\uc11c\ub97c \uc5c5\ub370\uc774\ud2b8\ud558\ub294 \ub78c\ub2e4\ub97c \uc2e4\ud589\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. <em>\ud0a4<\/em> \uc811\ub450\uc0ac <code>xml:<\/code> \uc758 XML \uc18d\uc131\uacfc <code>in_xml<\/code>.<\/p>\n<p>\uc774\ubca4\ud2b8 \uae30\ub2a5\uc744 \uc2e4\ud589\ud558\ub824\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ud558\uc138\uc694. <code>convertXMLtoJSON<\/code>\ub85c \uc774\ub3d9\ud558\uc5ec <strong>\ubb38\uc11c<\/strong> \ud398\uc774\uc9c0\ub85c \uc774\ub3d9\ud558\uc5ec \ub2e4\uc74c\uc744 \uc218\ud589\ud569\ub2c8\ub2e4:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>\ud074\ub9ad <strong>\ubb38\uc11c \ucd94\uac00<\/strong>.<\/li>\n<li>\uc785\ub825 <em>\ud0a4<\/em> \uc758 <code>xml::1<\/code> (\uc811\ub450\uc0ac\uac00 <code>xml:<\/code>)<\/li>\n<li>\ud074\ub9ad <strong>\uc800\uc7a5<\/strong>.<\/li>\n<li>\uc785\ub825 <em>body<\/em> \ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uc815\ud569\ub2c8\ub2e4:\n<pre class=\"toolbar-overlay:false wrap:true lang:js decode:true\">{\r\n  \"type\": \"xml\",\r\n  \"id\": 1,\r\n  \"in_xml\": \"&lt;CD&gt;&lt;TITLE&gt;EmpireBurlesque&lt;\/TITLE&gt;&lt;ARTIST&gt;BobDylan&lt;\/ARTIST&gt;&lt;COUNTRY&gt;USA&lt;\/COUNTRY&gt;&lt;COMPANY&gt;Columbia&lt;\/COMPANY&gt;&lt;PRICE&gt;10.90&lt;\/PRICE&gt;&lt;YEAR&gt;1985&lt;\/YEAR&gt;&lt;\/CD&gt;\"\r\n}<\/pre>\n<\/li>\n<li>\ud074\ub9ad <strong>\uc800\uc7a5<\/strong>.<\/li>\n<li>\ubc29\uae08 \uc800\uc7a5\ud55c \ubb38\uc11c\ub97c \ud3b8\uc9d1\ud558\uba74 \ubb38\uc11c\uac00 \uc2e4\uc2dc\uac04\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ub41c \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n<pre class=\"toolbar-overlay:false wrap:true lang:js decode:true\">{\r\n  \"type\": \"xml\",\r\n  \"id\": 1,\r\n  \"in_xml\": \"&lt;CD&gt;&lt;TITLE&gt;EmpireBurlesque&lt;\/TITLE&gt;&lt;ARTIST&gt;BobDylan&lt;\/ARTIST&gt;&lt;COUNTRY&gt;USA&lt;\/COUNTRY&gt;&lt;COMPANY&gt;Columbia&lt;\/COMPANY&gt;&lt;PRICE&gt;10.90&lt;\/PRICE&gt;&lt;YEAR&gt;1985&lt;\/YEAR&gt;&lt;\/CD&gt;\",\r\n  \"out_json\": {\r\n    \"CD\": {\r\n      \"TITLE\": \"EmpireBurlesque\",\r\n      \"ARTIST\": \"BobDylan\",\r\n      \"COUNTRY\": \"USA\",\r\n      \"COMPANY\": \"Columbia\",\r\n      \"PRICE\": \"10.90\",\r\n      \"YEAR\": \"1985\"\r\n    }\r\n  },\r\n  \"xmlchksum\": \"02087b7be275d0d8\"\r\n}<\/pre>\n<\/li>\n<li>\uc870\uc815 <code>in_xml<\/code>. \uc544\ub9c8\ub3c4 <strong>2\uc6d4<\/\uc6d4><\/strong> \ub97c \uc81c\ubaa9 \uc55e\uc5d0 \ubd99\uc785\ub2c8\ub2e4.\n<pre class=\"toolbar-overlay:false wrap:true lang:js decode:true\">\"in_xml\": \"&lt;CD&gt;&lt;MONTH&gt;FEB&lt;\/MONTH&gt;&lt;TITLE&gt;EmpireBurlesque&lt;\/TITLE&gt;&lt;ARTIST&gt;BobDylan&lt;\/ARTIST&gt;&lt;COUNTRY&gt;USA&lt;\/COUNTRY&gt;&lt;COMPANY&gt;Columbia&lt;\/COMPANY&gt;&lt;PRICE&gt;10.90&lt;\/PRICE&gt;&lt;YEAR&gt;1985&lt;\/YEAR&gt;&lt;\/CD&gt;\",<\/pre>\n<\/li>\n<li>\ud074\ub9ad <strong>\uc800\uc7a5<\/strong>.<\/li>\n<li>\ub2e4\uc2dc \ubc29\uae08 \uc800\uc7a5\ud55c \ubb38\uc11c\ub97c \ud3b8\uc9d1\ud569\ub2c8\ub2e4. \ubb38\uc11c\uac00 \ub2e4\uc2dc \ud55c \ubc88 \uc2e4\uc2dc\uac04\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8\ub41c \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:\n<pre class=\"toolbar-overlay:false wrap:true lang:js decode:true\">{\r\n  \"type\": \"xml\",\r\n  \"id\": 1,\r\n  \"in_xml\": \"&lt;CD&gt;&lt;MONTH&gt;FEB&lt;\/MONTH&gt;&lt;TITLE&gt;EmpireBurlesque&lt;\/TITLE&gt;&lt;ARTIST&gt;BobDylan&lt;\/ARTIST&gt;&lt;COUNTRY&gt;USA&lt;\/COUNTRY&gt;&lt;COMPANY&gt;Columbia&lt;\/COMPANY&gt;&lt;PRICE&gt;10.90&lt;\/PRICE&gt;&lt;YEAR&gt;1985&lt;\/YEAR&gt;&lt;\/CD&gt;\",\r\n  \"out_json\": {\r\n    \"CD\": {\r\n      \"MONTH\": \"FEB\",\r\n      \"TITLE\": \"EmpireBurlesque\",\r\n      \"ARTIST\": \"BobDylan\",\r\n      \"COUNTRY\": \"USA\",\r\n      \"COMPANY\": \"Columbia\",\r\n      \"PRICE\": \"10.90\",\r\n      \"YEAR\": \"1985\"\r\n    }\r\n  },\r\n  \"xmlchksum\": \"06b5b40b276f160b\"\r\n}<\/pre>\n<\/li>\n<li>\uc704\uc5d0 \uc0c8 \uc18d\uc131 \ucd94\uac00 <code>\uc720\ud615<\/code>\uc640 \uac19\uc740 <code>\"\uae30\ud0c0\": \"\uc7ac\ubbf8\uc788\uc5b4\uc694\",<\/code><\/li>\n<li>\ud074\ub9ad <strong>\uc800\uc7a5<\/strong>.<\/li>\n<li>\ub2e4\uc2dc \ud55c \ubc88 \ubb38\uc11c\ub97c \ud3b8\uc9d1\ud569\ub2c8\ub2e4. \ub2e4\uc2dc \ud55c \ubc88 <code>\uccb4\ud06c\uc12c<\/code> \uc5c5\ub370\uc774\ud2b8\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\n<pre class=\"toolbar-overlay:false lang:js decode:true\">{\r\n  \"other\": \"this is fun\",\r\n  \"type\": \"xml\",\r\n  \"id\": 1,\r\n  \"in_xml\": \"&lt;CD&gt;&lt;MONTH&gt;FEB&lt;\/MONTH&gt;&lt;TITLE&gt;EmpireBurlesque&lt;\/TITLE&gt;&lt;ARTIST&gt;BobDylan&lt;\/ARTIST&gt;&lt;COUNTRY&gt;USA&lt;\/COUNTRY&gt;&lt;COMPANY&gt;Columbia&lt;\/COMPANY&gt;&lt;PRICE&gt;10.90&lt;\/PRICE&gt;&lt;YEAR&gt;1985&lt;\/YEAR&gt;&lt;\/CD&gt;\",\r\n  \"out_json\": {\r\n    \"CD\": {\r\n      \"MONTH\": \"FEB\",\r\n      \"TITLE\": \"EmpireBurlesque\",\r\n      \"ARTIST\": \"BobDylan\",\r\n      \"COUNTRY\": \"USA\",\r\n      \"COMPANY\": \"Columbia\",\r\n      \"PRICE\": \"10.90\",\r\n      \"YEAR\": \"1985\"\r\n    }\r\n  },\r\n  \"xmlchksum\": \"06b5b40b276f160b\"\r\n}<\/pre>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>10\ub9cc \uac1c\uc758 XML \ub808\ucf54\ub4dc\ub97c \ucc98\ub9ac\ud574 \ubd05\uc2dc\ub2e4<\/h2>\n<p>\uc774\uc81c \uc5b4\ub5bb\uac8c \uc791\ub3d9\ud558\ub294\uc9c0 \uc0b4\ud3b4\ubcf4\uc558\uc73c\ub2c8 \ud568\uc218\uc5d0\uc11c \ub9ce\uc740 \ub370\uc774\ud130\ub97c \ub364\ud504\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uba3c\uc800 \uba87 \uac00\uc9c0 \ub370\uc774\ud130\ub97c \uc0dd\uc131\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>\ub77c\ub294 \uac04\ub2e8\ud55c Perl \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc0ac\uc6a9\ud558\uaca0\uc2b5\ub2c8\ub2e4. <code>xml_data_gen.pl<\/code> \uc774 \ube14\ub85c\uadf8 \ud3ec\uc2a4\ud305\uc744 \uc704\ud574 \uc791\uc131\ud588\uc2b5\ub2c8\ub2e4:\n<pre class=\"toolbar-overlay:false wrap:true lang:perl decode:true\">#!\/usr\/bin\/perl \r\nuse Getopt::Long qw(GetOptions);\r\n\r\nsub randi {\r\n    ($lower_limit,$upper_limit) = @_;\r\n    return int(rand($upper_limit-$lower_limit)) + $lower_limit;\r\n}\r\n\r\nmy $blk = 0;\r\nmy $num = 0;\r\nmy $help = 0;\r\nGetOptions(\r\n    'blk=i' =&gt; \\$blk,\r\n    'num=i' =&gt; \\$num,\r\n    'help' =&gt; \\$help,\r\n) or die \"Usage: $0 --blk # --num #\\n\";\r\n\r\nif ($num == 0 || $help != 0 || $blk &lt; 1) {\r\n    printf stderr \"Usage: $0 --blk # --num #\\n\";\r\n    printf stderr \"examples:\\n\";\r\n    printf stderr \".\/xml_data_gen.pl --blk 1 --num 100000 &gt; data.json\\n\";\r\n    printf stderr \"cbimport json -c couchbase:\/\/127.0.0.1 -u \\$CB_USERNAME \" .\r\n        \"-p \\$CB_PASSWORD -b source -d file:\/\/.\/data.json -f lines -t 4 -g xml::%%id%%\\n\";\r\n    exit(1);\r\n}\r\n\r\n@artist = (\"Elton John\", \"Lisa Lobb\", \"Sting\", \"Clash\", \"The Smiths\", \r\n    \"Bob Dylan\", \"The Yard Birds\", \"Journey\", \"Led Zeppelin\", \"Adele\");\r\n@title = (\"Empire Burlesque\", \"Greatest Hits\", \"Songs Vol 1.\", \"Songs Vol 2.\", \r\n    \"Songs Vol 3.\", \"Classics\", \"Hidden Tracks\");\r\n@country = (\"USA\", \"UK\", \"AU\", \"AR\", \"ES\", \"MO\");\r\n@company = (\"Columbia\", \"Capital\", \"Dog Boys\", \"Epic\", \"Home Brew\", \"EMG\");\r\n\r\n\r\n\r\n$template = '{\"type\":\"xml\",\"id\":_XXX_,\"in_xml\":\"&lt;CD&gt;&lt;TITLE&gt;_TTT_&lt;\/TITLE&gt;' .\r\n    '&lt;ARTIST&gt;_AAA_&lt;\/ARTIST&gt;&lt;COUNTRY&gt;_CCC_&lt;\/COUNTRY&gt;&lt;COMPANY&gt;_OOO_&lt;\/COMPANY&gt;' .\r\n    '&lt;PRICE&gt;_PPP_&lt;\/PRICE&gt;&lt;YEAR&gt;_YYY_&lt;\/YEAR&gt;&lt;\/CD&gt;\"}';\r\n\r\nmy $beg = 1 + ($blk-1) * $num;\r\nmy $max = $beg + $num - 1;\r\n\r\nmy $wrk = \"\";\r\nfor ($j=$beg; $j&lt;=$max; $j=$j+1) {\r\n\r\n    $wrk = $template; $wrk =~ s\/_XXX_\/$j\/;\r\n\r\n    $tmp = $artist[randi(0,$#artist-1)]; $wrk =~ s\/_AAA_\/$tmp\/;\r\n    $tmp = $title[randi(0,$#title-1)]; $wrk =~ s\/_TTT_\/$tmp\/;\r\n    $tmp = $country[randi(0,$#country-1)]; $wrk =~ s\/_CCC_\/$tmp\/;\r\n    $tmp = $company[randi(0,$#company-1)]; $wrk =~ s\/_OOO_\/$tmp\/;\r\n    $tmp = randi(850,1765)\/100; $wrk =~ s\/_PPP_\/$tmp\/;\r\n    $tmp = randi(1,30)+1981; $wrk =~ s\/_YYY_\/$tmp\/;\r\n\r\n    printf $wrk . \"\\n\";\r\n}<\/pre>\n<\/li>\n<li>\uc704\uc758 \uc0dd\uc131\uae30 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \ud14c\uc2a4\ud2b8\ud558\ub824\uba74 <code>xml_data_gen.pl<\/code> \uadf8\ub0e5 \uc2e4\ud589\ud558\uc138\uc694: <code>.\/xml_data_gen.pl --blk 1 --num 5<\/code><\/li>\n<li>\ub2e4\uc74c\uacfc \uac19\uc740 \ub0b4\uc6a9\uc774 \ud45c\uc2dc\ub420 \uac83\uc785\ub2c8\ub2e4:\n<pre class=\"striped:false wrap:true lang:js decode:true\">{\"type\":\"xml\",\"id\":1,\"in_xml\":\"&lt;CD&gt;&lt;TITLE&gt;Songs Vol 3.&lt;\/TITLE&gt;&lt;ARTIST&gt;Elton John&lt;\/ARTIST&gt;&lt;COUNTRY&gt;USA&lt;\/COUNTRY&gt;&lt;COMPANY&gt;Epic&lt;\/COMPANY&gt;&lt;PRICE&gt;10.64&lt;\/PRICE&gt;&lt;YEAR&gt;2003&lt;\/YEAR&gt;&lt;\/CD&gt;\"}\r\n{\"type\":\"xml\",\"id\":2,\"in_xml\":\"&lt;CD&gt;&lt;TITLE&gt;Songs Vol 1.&lt;\/TITLE&gt;&lt;ARTIST&gt;Clash&lt;\/ARTIST&gt;&lt;COUNTRY&gt;AU&lt;\/COUNTRY&gt;&lt;COMPANY&gt;Epic&lt;\/COMPANY&gt;&lt;PRICE&gt;12.69&lt;\/PRICE&gt;&lt;YEAR&gt;1989&lt;\/YEAR&gt;&lt;\/CD&gt;\"}\r\n{\"type\":\"xml\",\"id\":3,\"in_xml\":\"&lt;CD&gt;&lt;TITLE&gt;Empire Burlesque&lt;\/TITLE&gt;&lt;ARTIST&gt;Journey&lt;\/ARTIST&gt;&lt;COUNTRY&gt;AU&lt;\/COUNTRY&gt;&lt;COMPANY&gt;Epic&lt;\/COMPANY&gt;&lt;PRICE&gt;15.25&lt;\/PRICE&gt;&lt;YEAR&gt;1999&lt;\/YEAR&gt;&lt;\/CD&gt;\"}\r\n{\"type\":\"xml\",\"id\":4,\"in_xml\":\"&lt;CD&gt;&lt;TITLE&gt;Songs Vol 1.&lt;\/TITLE&gt;&lt;ARTIST&gt;Bob Dylan&lt;\/ARTIST&gt;&lt;COUNTRY&gt;AR&lt;\/COUNTRY&gt;&lt;COMPANY&gt;Dog Boys&lt;\/COMPANY&gt;&lt;PRICE&gt;15.43&lt;\/PRICE&gt;&lt;YEAR&gt;1997&lt;\/YEAR&gt;&lt;\/CD&gt;\"}\r\n{\"type\":\"xml\",\"id\":5,\"in_xml\":\"&lt;CD&gt;&lt;TITLE&gt;Greatest Hits&lt;\/TITLE&gt;&lt;ARTIST&gt;Journey&lt;\/ARTIST&gt;&lt;COUNTRY&gt;UK&lt;\/COUNTRY&gt;&lt;COMPANY&gt;Columbia&lt;\/COMPANY&gt;&lt;PRICE&gt;10.71&lt;\/PRICE&gt;&lt;YEAR&gt;1983&lt;\/YEAR&gt;&lt;\/CD&gt;\"}<\/pre>\n<\/li>\n<li>100,000\uac1c \uae30\ub85d\uc744 \ub9cc\ub4e4\ub824\uba74 <code>xml_data_gen.pl<\/code> \ub97c \uc2e4\ud589\ud558\uc5ec \ub098\uc911\uc5d0 Couchbase \ud074\ub7ec\uc2a4\ud130\uc5d0 \ub85c\ub4dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4: <code>.\/xml_data_gen.pl --blk 1 --num 100000 &gt; data.json<\/code><\/li>\n<li>\uc774\uc81c \ub370\uc774\ud130\ub97c \ub85c\ub4dc\ud574\uc57c \ud569\ub2c8\ub2e4. \uc800\ub294 <code>cbimport<\/code> \uc720\ud2f8\ub9ac\ud2f0\uc5d0 \uc788\ub294 <code>.\/bin<\/code> \ub514\ub809\ud130\ub9ac\ub97c \ub178\ub4dc \uc911 \ud558\ub098\uc5d0 \uc124\uce58\ud569\ub2c8\ub2e4. Couchbase \ud074\ub7ec\uc2a4\ud130\uc5d0 \ub300\ud55c \uc178 \uc561\uc138\uc2a4 \uad8c\ud55c\uacfc \ud544\uc694\ud55c \uc790\uaca9 \uc99d\uba85\uc774 \uc788\ub2e4\uace0 \uac00\uc815\ud569\ub2c8\ub2e4.\n<pre class=\"toolbar-overlay:false wrap:true lang:sh decode:true\">cbimport json -c couchbase:\/\/127.0.0.1 -u $CB_USERNAME -p $CB_PASSWORD -b source -d file:\/\/.\/data.json -f lines -t 4 -g xml::%id%\r\n<\/pre>\n<\/li>\n<li>\ubcf4\uc138\uc694. \ubaa8\ub4e0 100,000\uac1c\uc758 \ud56d\ubaa9\uc740 \ub85c\ub4dc\ub418\ub294 \uc989\uc2dc (\uc0bd\uc785\uc73c\ub85c \uc778\ud55c \ubcc0\uc774\uc5d0\uc11c) \ubcc0\ud658\ub429\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\ub354 \ub9ce\uc740 \uc131\ub2a5\uc744 \uc6d0\ud55c\ub2e4\uba74 \ud568\uc218 \uc124\uc815\uc5d0\uc11c \uc6cc\ucee4 \uc218\ub97c \ub298\ub9ac\uac70\ub098 \uc774\ubca4\ud2b8 \ub178\ub4dc\ub97c \ub354 \ucd94\uac00\ud558\uc5ec \uc218\uc9c1\uc801\uc73c\ub85c \ud655\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub354 \ub9ce\uc740 \ub370\uc774\ud130\ub97c \ub85c\ub4dc\ud558\uace0 100% \uba54\ubaa8\ub9ac\ub97c \uc720\uc9c0\ud558\ub824\uba74 \ubc84\ud0b7\uc758 \ud06c\uae30\ub97c \ub298\ub824\uc57c \ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\ucd5c\uc885 \uc0dd\uac01<\/h2>\n<p>\uc774 \uc6cc\ud06c\uc2a4\ub8e8\uac00 \ub3c4\uc6c0\uc774 \ub418\uc168\uae30\ub97c \ubc14\ub77c\uba70, \ub2e4\uc74c \uc0ac\ud56d\uc5d0 \ub300\ud574 \ub354 \ub9ce\uc740 \uc774\ud574\ub97c \uc5bb\uc73c\uc168\uae30\ub97c \ubc14\ub78d\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/products\/eventing\/?ref=blog\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc774\ubca4\ud2b8 \uc11c\ube44\uc2a4<\/a> \uc804\uccb4\uc801\uc73c\ub85c.<\/p>\n<p>\uc774\uc804\uc5d0\ub294 \ub354 \uc801\uc740 \ucef4\ud4e8\ud305 \ub9ac\uc18c\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub3c4\ub85d \ud568\uc218\ub97c \ucd5c\uc801\ud654\ud588\uc2b5\ub2c8\ub2e4. \ub610\ud55c \uc800\uc7a5 \uacf5\uac04\uc5d0 \ub9de\uac8c \ucd5c\uc801\ud654\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \ucc38\uace0\ub85c <code>in_xml<\/code> \ubc0f <code>out_json<\/code> \uc18d\uc131\uc744 \ubcf4\uac15\ud55c \ud6c4 \ubb38\uc11c\uc5d0 \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc57d\uac04\uc758 \uc870\uc815(\ub450 \uc904 \ucd94\uac00)\ub9cc\uc73c\ub85c \ubb38\uc11c\uc5d0 \uc788\ub294 <code>in_xml<\/code> \ub97c \uc0ac\uc6a9\ud558\uc5ec \uc911\ubcf5 \uc800\uc7a5\uc18c\ub97c \uc81c\uac70\ud569\ub2c8\ub2e4(<em>30%\uc758 \ub514\uc2a4\ud06c \uacf5\uac04\uc744 \uc808\uc57d\ud574\uc90d\ub2c8\ub2e4.<\/em>). \ud568\uc218\uac00 \uc5b4\ub5bb\uac8c \uc2e4\ud589\ub418\ub294\uc9c0 \ub354 \uc798 \ubcf4\uc5ec\ub4dc\ub9ac\uae30 \uc704\ud574 \uc608\uc81c\uc5d0\uc11c\ub294 \uc774 \ubd80\ubd84\uc744 \uc0dd\ub7b5\ud588\uc9c0\ub9cc \ub2e4\uc74c\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc9c1\uc811 \uc2e4\ud5d8\ud574 \ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4:<\/p>\n<pre class=\"toolbar-overlay:false lang:js decode:true\">function OnUpdate(doc, meta) {\r\n    \/\/ filter out non XML\r\n    if (!meta.id.startsWith(\"xml:\")) return;\r\n    if (!doc.in_xml) return; \/\/ optimize for storage space\r\n    \r\n    \/\/ ALL OTHER LINES THE SAME\r\n    \r\n    delete doc.in_xml; \/\/ optimize for storage space\r\n    src_bkt[meta.id] = doc;\r\n}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\uc774 \uc608\uc81c\ub294 Couchbase\uc758 \uae30\ubcf8 \ubb38\uc11c \uc0ac\uc774\ud2b8\uc5d0 \uc608\uc81c \uc2a4\ud06c\ub9bd\ud2c0\ub9bf\uc73c\ub85c \uac8c\uc2dc\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4: <a href=\"https:\/\/docs.couchbase.com\/server\/6.6\/eventing\/eventing-handler-convertXMLtoJSON.html?ref=blog\" target=\"_blank\" rel=\"noopener\">\uae30\ub2a5: <code>convertXMLtoJSON<\/code><\/a>. XML \uc5b4\ud2b8\ub9ac\ubdf0\ud2b8\ub97c \ubc88\uc5ed\ud558\uc9c0\ub294 \uc54a\uc9c0\ub9cc \uc27d\uac8c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4(<em>\ub2e4\uc74c \ub2e8\ub77d \ucc38\uc870<\/em>). \ud558\uc9c0\ub9cc \uac04\ub2e8\ud55c \ubc29\ubc95 <code>parseXmlToJson()<\/code> \uc81c\uac00 \uc0ac\uc6a9\ud55c \uac83\uc740 \ucd08\uae30 \ub370\uc774\ud130\uc5d0 \ub531 \ub9de\ub294 \uac83\uc774\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uac1c\ubc1c \uacfc\uc815\uc5d0\uc11c \uc800\ub294 \uac04\ub2e8\ud558\uac8c \uc2dc\uc791\ud558\uc5ec \uba87 \uac00\uc9c0 \ubc29\ub300\ud55c XML \ubb38\uc11c\ub97c \ud14c\uc2a4\ud2b8\ud588\uc9c0\ub9cc, \ubb3c\ub860 XML \uad6c\uc870\uc758 \ubaa8\ub4e0 \uc601\uc5ed\uc744 \ub2e4\ub8e8\uc9c0\ub294 \ubabb\ud588\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \ub450 \ubc88\uc9f8 \uc2a4\ud06c\ub9bd\ud2c0\ub9bf\uc744 \uac1c\ubc1c\ud588\uc2b5\ub2c8\ub2e4. <code>convertAdvXMLtoJSON<\/code> (\uc774 \uae30\uc0ac\uc5d0\ub294 \ud45c\uc2dc\ub418\uc9c0 \uc54a\uc74c)\uc744 \uc989\uc2dc \uc54c\uac8c \ub418\uc5c8\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. <em>\ub9ce\uc740 XML \ubb38\uc11c\uac00 \uc5b4\ud2b8\ub9ac\ubdf0\ud2b8\ub97c \ud65c\uc6a9\ud569\ub2c8\ub2e4.<\/em> \ud765\ubbf8\ub85c\uc6b4 \uad6c\ubb38 \ubcc0\ud615\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"striped:false lang:xhtml decode:true\">&lt;DOC_WITH_ATTRS&gt;\r\n  &lt;ADVELEM1 adv_attrA=\"adv_valA\" \/&gt;\r\n  &lt;ADVELEM2 adv_attrA=\"adv_valA\" adv_attrB=\"adv_valB\"&gt;\r\n    &lt;SUB&gt;\r\n      SUBDATA\r\n    &lt;\/SUB&gt;\r\n  &lt;\/ADVELEM2&gt;\r\n&lt;\/DOC_WITH_ATTRS&gt;\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\uc774\ub97c \ud1b5\ud574 XML \uc5b4\ud2b8\ub9ac\ubdf0\ud2b8\uc640 \uc81c\uac00 \ub9cc\ub09c \uad6c\ubb38 \ubcc0\ud615\uc744 \ubcc0\ud658\ud558\ub294 \ubcf4\ub2e4 \uad11\ubc94\uc704\ud55c Eventing \ud568\uc218\ub97c \ub9cc\ub4e4\uac8c \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774 \ub354 \uae38\uace0 \ub354 \ub9ce\uc740 \uae30\ub2a5\uc744 \uac16\ucd98 Eventing \ud568\uc218\uc758 \uc18c\uc2a4\ub294 Couchbase\uc758 \uae30\ubcf8 \ubb38\uc11c \uc0ac\uc774\ud2b8\uc5d0\uc11c \uc608\uc81c \uc2a4\ud06c\ub9bd\ud2b8\ub85c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4: <a href=\"https:\/\/docs.couchbase.com\/server\/6.6\/eventing\/eventing-handler-convertAdvXMLtoJSON.html?ref=blog\" target=\"_blank\" rel=\"noopener\">\uae30\ub2a5: <code>convertAdvXMLtoJSON<\/code><\/a>.  \uc774 \uace0\uae09 \ubc84\uc804\uc740 '\uc624\ud508\uc2a4\ud2b8\ub9ac\ud2b8\ub9f5 \uc9c0\uc624\uba54\ud2b8\ub9ac \ud30c\uc77c'\uacfc '\ud654\uc6e8\uc774 \uc140\ub8f0\ub7ec \uc6b4\uc601 \uce21\uc815'\uc744 \ud3ec\ud568\ud55c \ub300\uc6a9\ub7c9 XML \ubb38\uc11c\ub97c \uc131\uacf5\uc801\uc73c\ub85c \ubcc0\ud658\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc744 \uc2dc\ub3c4\ud574 \ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>\uc5ed\ud568\uc218\ub97c \uc791\uc131\ud569\ub2c8\ub2e4: \ub300\uc2e0 <code>convertXMLtoJSON<\/code>\ub77c\uace0 \ub9d0\ud569\ub2c8\ub2e4. <code>convertJSONtoXML<\/code><\/li>\n<li>\ubcc0\uacbd <code>convertAdvXMLtoJSON<\/code> \uc640 \uac19\uc740 \uc18d\uc131 \uc774\ub984 \uc55e\uc5d0 <code>attr_<\/code> \ub97c \uc0ac\uc6a9\ud558\uc5ec \ucd5c\uc885 JSON \ubcc0\ud658\uc5d0\uc11c XML \uc18d\uc131\uc744 \uc2dd\ubcc4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li>\uae30\ubcf8 \ubb38\uc790\uc5f4 \uc720\ud615 \ub300\uc2e0 \uc774\ub984\ubcc4 \ud504\ub85c\ud37c\ud2f0\ub97c \uc2e4\uc218 \ubc0f \ubd80\uc6b8\ub85c \uc77c\ubc18 \ubcc0\ud658\ud558\ub294 JavaScript \ub9f5 \ubc0f \ub8e8\ud2f4(\uc120\ud0dd \uc0ac\ud56d)\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4.<\/li>\n<li>\uc785\ub825 \ub370\uc774\ud130\uc5d0 '\ubb38\uc11c \uc720\ud615 \uc815\uc758' \ub610\ub294 DTD\ub97c \uc801\uc6a9\ud558\ub294 \uae30\ub2a5\uc744 \uad6c\ud604\ud558\uc5ec \ub2e4\ub978 \ubb38\uc11c\uc5d0\uc11c DTD\ub97c \uc77d\uc5b4\uc624\ub294 \uae30\ub2a5\uc744 \uad6c\ud604\ud569\ub2c8\ub2e4.<\/li>\n<li>\ubcc0\ud658\ub41c \ubb38\uc11c\uc758 JSON \ud45c\ud604\uc758 \ub2e4\ub978 \ubd80\ubd84\uc744 \uac00\ub9ac\ud0a4\ub294(\uac00\ub9ac\ud0a4\ub294) XPath \ucffc\ub9ac\uc6a9 \ubc88\uc5ed\uae30\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\ucffc\ub9ac \uc6cc\ud06c\ubca4\uce58\uc5d0\uc11c SQL++(N1QL)\uc744 \uc2e4\ud5d8\ud574\ubcf4\uace0, \uc778\ub371\uc2a4 \uc5b4\ub4dc\ubc14\uc774\uc800\ub97c \uc0ac\uc6a9\ud574 XML \ub370\uc774\ud130(JSON\uc73c\ub85c \ubcc0\ud658)\uc5d0 \uc561\uc138\uc2a4\ud558\uae30 \uc704\ud55c \ucd5c\uc801\uc758 \uc778\ub371\uc2a4\ub97c \ucffc\ub9ac\ud558\uace0 \uc0dd\uc131\ud558\ub294 \uac83\uc744 \uc78a\uc9c0 \ub9c8\uc138\uc694.<\/p>\n<h2>\ub9ac\uc18c\uc2a4<\/h2>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><em>\ub2e4\uc6b4\ub85c\ub4dc:<\/em> <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/downloads\/?ref=blog\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84 6.6.2 \ub2e4\uc6b4\ub85c\ub4dc<\/a><\/li>\n<li><em>\uc774\ubca4\ud2b8 \uc2a4\ud06c\ub9bd\ud2b8:<\/em> <a href=\"https:\/\/docs.couchbase.com\/server\/6.6\/eventing\/eventing-handler-convertXMLtoJSON.html?ref=blog\" target=\"_blank\" rel=\"noopener\">\uae30\ub2a5: <code>convertXMLtoJSON<\/code><\/a>.<\/li>\n<li><em>\uc774\ubca4\ud2b8 \uc2a4\ud06c\ub9bd\ud2b8:<\/em> <a href=\"https:\/\/docs.couchbase.com\/server\/6.6\/eventing\/eventing-handler-convertAdvXMLtoJSON.html?ref=blog\" target=\"_blank\" rel=\"noopener\">\uae30\ub2a5: <code>convertAdvXMLtoJSON<\/code><\/a>.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>\ucc38\uc870<\/h2>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/6.6\/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\/6.6\/introduction\/whats-new.html?ref=blog\" target=\"_blank\" rel=\"noopener noreferrer\">\uc0c8\ub85c\uc6b4 \uae30\ub2a5 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84 6.6<\/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 \ub2e4\ub978 Couchbase \ube14\ub85c\uadf8<\/a><\/li>\n<li><a href=\"https:\/\/stackoverflow.com\/questions\/1773550\/convert-xml-to-json-and-back-using-javascript\/61593773#61593773\" target=\"_blank\" rel=\"noopener\">\uc2a4\ud0dd \uc624\ubc84\ud50c\ub85c: Javascript\ub97c \uc0ac\uc6a9\ud558\uc5ec XML\uc744 JSON\uc73c\ub85c \ubcc0\ud658(\ub610\ub294 \uadf8 \ubc18\ub300\ub85c \ubcc0\ud658)<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>\uc774\ubca4\ud305\uc744 \ud1b5\ud55c \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uac00 XML \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub77c\ub294 \uc0ac\uc2e4\uc744 \ub0a9\ub4dd\ud558\uc168\uae30\ub97c \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n<p>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc640 \uc774\ubca4\ud2b8 \uae30\ub2a5\uc774 \ub9c8\uc74c\uc5d0 \ub4dc\uc168\ub294\uc9c0, \uc55e\uc73c\ub85c \ube44\uc988\ub2c8\uc2a4\uc5d0 \uc5b4\ub5a4 \ub3c4\uc6c0\uc774 \ub418\ub294\uc9c0 \uc5ec\ub7ec\ubd84\uc758 \uc758\uacac\uc744 \ub4e3\uace0 \uc2f6\uc2b5\ub2c8\ub2e4. \uc544\ub798 \ub313\uae00\uc774\ub098 \ub2e4\uc74c\uc5d0\uc11c \uc758\uacac\uc744 \uacf5\uc720\ud574 \uc8fc\uc138\uc694. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/forums\/?ref=blog\" target=\"_blank\" rel=\"noopener\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ud3ec\ub7fc<\/a>.<\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Couchbase and XML &#8211; no problem! I&#8217;ve heard it said dozens of times: &#8220;Hey, Couchbase is great but I use XML.&#8221; I recognize that countering with, &#8220;Couchbase can be your XML database&#8221; is pretty bold, especially for a JSON-oriented document [&hellip;]<\/p>","protected":false},"author":42711,"featured_media":11598,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1816,2273,2165,9327,1812],"tags":[2312,1543,1261,9247,1747],"ppma_author":[9113],"class_list":["post-11387","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","category-eventing","category-full-text-search","category-javascript","category-n1ql-query","tag-document-database","tag-javascript","tag-json","tag-key-value-store","tag-xml"],"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>XML Database Best Practices - The Couchbase Data Model<\/title>\n<meta name=\"description\" content=\"Find out how to use Eventing to transform Couchbase into an XML-capable database. This may sound too good to be true but trust us - it really does work!\" \/>\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\/how-to-use-couchbase-xml-database\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How (and Why) to Use Couchbase as an XML Database\" \/>\n<meta property=\"og:description\" content=\"Find out how to use Eventing to transform Couchbase into an XML-capable database. This may sound too good to be true but trust us - it really does work!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/how-to-use-couchbase-xml-database\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-23T11:43:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T05:39:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/couchbase-xml-database-how-to-walkthrough.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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=\"17\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/\"},\"author\":{\"name\":\"Jon Strabala, Principal Product Manager, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c991579f88217edee79ffedb6fc914cc\"},\"headline\":\"How (and Why) to Use Couchbase as an XML Database\",\"datePublished\":\"2021-07-23T11:43:54+00:00\",\"dateModified\":\"2025-06-14T05:39:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/\"},\"wordCount\":3373,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/couchbase-xml-database-how-to-walkthrough.jpeg\",\"keywords\":[\"document database\",\"javascript\",\"JSON\",\"key-value store\",\"XML\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"Eventing\",\"Full-Text Search\",\"JavaScript\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/\",\"name\":\"XML Database Best Practices - The Couchbase Data Model\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/couchbase-xml-database-how-to-walkthrough.jpeg\",\"datePublished\":\"2021-07-23T11:43:54+00:00\",\"dateModified\":\"2025-06-14T05:39:21+00:00\",\"description\":\"Find out how to use Eventing to transform Couchbase into an XML-capable database. This may sound too good to be true but trust us - it really does work!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/couchbase-xml-database-how-to-walkthrough.jpeg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/couchbase-xml-database-how-to-walkthrough.jpeg\",\"width\":1200,\"height\":675,\"caption\":\"Learn how to use the Couchbase Eventing Service to automatically convert your XML data into JSON\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How (and Why) to Use Couchbase as an XML Database\"}]},{\"@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":"XML Database Best Practices - The Couchbase Data Model","description":"Eventing\uc744 \uc0ac\uc6a9\ud558\uc5ec Couchbase\ub97c XML \uc9c0\uc6d0 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uc138\uc694. \ubbff\uae30 \uc5b4\ub824\uc6b8 \uc218\ub3c4 \uc788\uc9c0\ub9cc \uc2e4\uc81c\ub85c \uc791\ub3d9\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\/how-to-use-couchbase-xml-database\/","og_locale":"ko_KR","og_type":"article","og_title":"How (and Why) to Use Couchbase as an XML Database","og_description":"Find out how to use Eventing to transform Couchbase into an XML-capable database. This may sound too good to be true but trust us - it really does work!","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/how-to-use-couchbase-xml-database\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-07-23T11:43:54+00:00","article_modified_time":"2025-06-14T05:39:21+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/couchbase-xml-database-how-to-walkthrough.jpeg","type":"image\/jpeg"}],"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":"17\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/"},"author":{"name":"Jon Strabala, Principal Product Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c991579f88217edee79ffedb6fc914cc"},"headline":"How (and Why) to Use Couchbase as an XML Database","datePublished":"2021-07-23T11:43:54+00:00","dateModified":"2025-06-14T05:39:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/"},"wordCount":3373,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/couchbase-xml-database-how-to-walkthrough.jpeg","keywords":["document database","javascript","JSON","key-value store","XML"],"articleSection":["Best Practices and Tutorials","Couchbase Server","Eventing","Full-Text Search","JavaScript","SQL++ \/ N1QL Query"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/","url":"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/","name":"XML Database Best Practices - The Couchbase Data Model","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/couchbase-xml-database-how-to-walkthrough.jpeg","datePublished":"2021-07-23T11:43:54+00:00","dateModified":"2025-06-14T05:39:21+00:00","description":"Eventing\uc744 \uc0ac\uc6a9\ud558\uc5ec Couchbase\ub97c XML \uc9c0\uc6d0 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c \ubcc0\ud658\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uc138\uc694. \ubbff\uae30 \uc5b4\ub824\uc6b8 \uc218\ub3c4 \uc788\uc9c0\ub9cc \uc2e4\uc81c\ub85c \uc791\ub3d9\ud569\ub2c8\ub2e4!","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/couchbase-xml-database-how-to-walkthrough.jpeg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/couchbase-xml-database-how-to-walkthrough.jpeg","width":1200,"height":675,"caption":"Learn how to use the Couchbase Eventing Service to automatically convert your XML data into JSON"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/how-to-use-couchbase-xml-database\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How (and Why) to Use Couchbase as an XML Database"}]},{"@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\/11387","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=11387"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/11387\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/11598"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=11387"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=11387"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=11387"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=11387"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}