{"id":2669,"date":"2026-10-24T08:59:17","date_gmt":"2026-10-24T08:59:17","guid":{"rendered":"https:\/\/wayhope.kro.kr\/?p=2669"},"modified":"2026-10-24T08:59:17","modified_gmt":"2026-10-24T08:59:17","slug":"rdbms-%ea%b8%b0%ec%b4%88","status":"publish","type":"post","link":"https:\/\/wayhope.kro.kr\/?p=2669","title":{"rendered":"RDBMS \uae30\ucd08"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\ubc31\uc5d4\ub4dc \uc11c\ubc84\uc5d0\uc11c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub294 \ub2e8\uc21c\ud788 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\ub294 \uacf5\uac04\uc774 \uc544\ub2c8\ub2e4. \ub370\uc774\ud130\uc758 \ubb34\uacb0\uc131\uc744 \ubcf4\uc7a5\ud558\uace0, \uc5ec\ub7ec \uc694\uccad\uc774 \ub3d9\uc2dc\uc5d0 \ubc1c\uc0dd\ud558\ub294 \uc0c1\ud669\uc744 \uc81c\uc5b4\ud558\uba70, \ud544\uc694\ud55c \ub370\uc774\ud130\ub97c \ud6a8\uc728\uc801\uc73c\ub85c \uc870\ud68c\ud558\ub294 \ud575\uc2ec \uc2dc\uc2a4\ud15c\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 \uac8c\uc784 \uc11c\ubc84\uc5d0\uc11c\ub294 \uc720\uc800 \uc815\ubcf4, \uc778\ubca4\ud1a0\ub9ac, \uc7ac\ud654, \uacb0\uc81c \ub0b4\uc5ed, \uac8c\uc784 \uc9c4\ud589 \uae30\ub85d \ub4f1 \ub2e4\uc591\ud55c \ub370\uc774\ud130\ub97c \uad00\ub9ac\ud55c\ub2e4. \ub370\uc774\ud130\uc758 \ud2b9\uc131\uacfc \uc911\uc694\ub3c4\uc5d0 \ub530\ub77c \uc801\uc808\ud55c \uc800\uc7a5 \uad6c\uc870\ub97c \uc124\uacc4\ud574\uc57c \ud558\uba70, \uc798\ubabb\ub41c \uc124\uacc4\ub294 \ub370\uc774\ud130 \ubd88\uc77c\uce58, \uc131\ub2a5 \uc800\ud558, \ub3d9\uc2dc\uc131 \ubb38\uc81c\ub85c \uc774\uc5b4\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubc88 \uae00\uc5d0\uc11c\ub294 RDBMS\uc758 \uae30\ubcf8 \uac1c\ub150\ubd80\ud130 NoSQL\uacfc\uc758 \ucc28\uc774, \uc2a4\ud0a4\ub9c8 \uc124\uacc4, \ud0a4\uc640 \uc81c\uc57d \uc870\uac74, \uc778\ub371\uc2a4, \uc2e4\ud589 \uacc4\ud68d, \ucffc\ub9ac \ucd5c\uc801\ud654, Connection Pool, \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub9c8\uc774\uadf8\ub808\uc774\uc158\uae4c\uc9c0 \uc815\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640 NoSQL \ube44\uad50<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">RDBMS\ub780?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">RDBMS(Relational Database Management System)\ub294 \ub370\uc774\ud130\ub97c \ud14c\uc774\ube14 \ud615\ud0dc\ub85c \uad00\ub9ac\ud558\ub294 \uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uad00\ub9ac \uc2dc\uc2a4\ud15c\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc774\ube14\uc740 \ud589(Row)\uacfc \uc5f4(Column)\ub85c \uad6c\uc131\ub418\uba70, \uac01 \ud14c\uc774\ube14\uc740 \uae30\ubcf8\ud0a4\uc640 \uc678\ub798\ud0a4 \ub4f1\uc744 \uc774\uc6a9\ud574 \uc11c\ub85c \uad00\uacc4\ub97c \ub9fa\uc744 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 RDBMS\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>MySQL<\/li>\n\n\n\n<li>PostgreSQL<\/li>\n\n\n\n<li>MariaDB<\/li>\n\n\n\n<li>Microsoft SQL Server<\/li>\n\n\n\n<li>Oracle Database<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uac8c\uc784 \uc11c\ubc84\uc5d0\uc11c \uc720\uc800 \uc815\ubcf4\ub97c \uc800\uc7a5\ud558\ub294 \ud14c\uc774\ube14\uc740 \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uacc4\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE users (\n    id BIGINT PRIMARY KEY AUTO_INCREMENT,\n    nickname VARCHAR(30) NOT NULL,\n    email VARCHAR(255) NOT NULL UNIQUE,\n    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP\n);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ud14c\uc774\ube14\uc740 \uc720\uc800\uc758 \uace0\uc720 ID, \ub2c9\ub124\uc784, \uc774\uba54\uc77c, \uc0dd\uc131 \uc2dc\uac01\uc744 \uad00\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>PRIMARY KEY<\/code>\ub294 \uac01 \uc720\uc800\ub97c \uc2dd\ubcc4\ud558\uace0, <code>UNIQUE<\/code>\ub294 \uc774\uba54\uc77c \uc911\ubcf5\uc744 \ubc29\uc9c0\ud55c\ub2e4. \uc774\ub7ec\ud55c \uc81c\uc57d \uc870\uac74\uc744 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc124\uc815\ud558\uba74 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ucf54\ub4dc\uc758 \uc2e4\uc218\ub85c \uc798\ubabb\ub41c \ub370\uc774\ud130\uac00 \uc800\uc7a5\ub418\ub294 \uac83\uc744 \ubc29\uc9c0\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">NoSQL\uc774\ub780?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">NoSQL\uc740 \uc804\ud1b5\uc801\uc778 \uad00\uacc4\ud615 \ud14c\uc774\ube14 \uad6c\uc870\uc5d0 \ud55c\uc815\ub418\uc9c0 \uc54a\ub294 \ub2e4\uc591\ud55c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc758\ubbf8\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 \uc720\ud615\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>\uc720\ud615<\/th><th>\ud2b9\uc9d5<\/th><th>\ub300\ud45c \uc81c\ud488<\/th><\/tr><tr><td>\ubb38\uc11c\ud615<\/td><td>JSON\uacfc \uc720\uc0ac\ud55c \ubb38\uc11c \ub2e8\uc704 \uc800\uc7a5<\/td><td>MongoDB<\/td><\/tr><tr><td>\ud0a4-\uac12\ud615<\/td><td>\ud0a4\ub97c \uc774\uc6a9\ud55c \ube60\ub978 \ub370\uc774\ud130 \uc811\uadfc<\/td><td>Redis<\/td><\/tr><tr><td>\uceec\ub7fc \ud328\ubc00\ub9ac\ud615<\/td><td>\ub300\uaddc\ubaa8 \ubd84\uc0b0 \ub370\uc774\ud130 \ucc98\ub9ac\uc5d0 \uc801\ud569<\/td><td>Apache Cassandra<\/td><\/tr><tr><td>\uadf8\ub798\ud504\ud615<\/td><td>\ub370\uc774\ud130 \uac04 \uc5f0\uacb0 \uad00\uacc4\ub97c \uc911\uc2ec\uc73c\ub85c \uad00\ub9ac<\/td><td>Neo4j<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">NoSQL\uc774\ub77c\uace0 \ud574\uc11c \ubaa8\ub450 \uc2a4\ud0a4\ub9c8\uac00 \uc5c6\uac70\ub098 \ud2b8\ub79c\uc7ad\uc158\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4. \ub370\uc774\ud130 \ubaa8\ub378\uacfc \uc77c\uad00\uc131, \ud2b8\ub79c\uc7ad\uc158 \uc9c0\uc6d0 \ubc29\uc2dd\uc774 \uc81c\ud488\ub9c8\ub2e4 \ub2e4\ub974\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">RDBMS\uc640 NoSQL\uc758 \ucc28\uc774<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>\ube44\uad50 \ud56d\ubaa9<\/th><th>RDBMS<\/th><th>NoSQL<\/th><\/tr><tr><td>\ub370\uc774\ud130 \ubaa8\ub378<\/td><td>\ud14c\uc774\ube14\uacfc \uad00\uacc4<\/td><td>\ubb38\uc11c, \ud0a4-\uac12 \ub4f1<\/td><\/tr><tr><td>\uc2a4\ud0a4\ub9c8<\/td><td>\uc77c\ubc18\uc801\uc73c\ub85c \uba85\uc2dc\uc801<\/td><td>\uc81c\ud488\uacfc \uc124\uacc4\uc5d0 \ub530\ub77c \uc720\uc5f0\ud568<\/td><\/tr><tr><td>\uad00\uacc4 \ud45c\ud604<\/td><td>JOIN\uacfc \uc678\ub798\ud0a4<\/td><td>\uc911\ucca9, \ucc38\uc870, \ubcc4\ub3c4 \uc870\ud68c \ub4f1<\/td><\/tr><tr><td>\ud2b8\ub79c\uc7ad\uc158<\/td><td>\uac15\ub825\ud55c \ud2b8\ub79c\uc7ad\uc158 \uc9c0\uc6d0<\/td><td>\uc81c\ud488\ubcc4\ub85c \uc9c0\uc6d0 \ubc94\uc704\uac00 \ub2e4\ub984<\/td><\/tr><tr><td>\ud655\uc7a5 \ubc29\uc2dd<\/td><td>\uc218\uc9c1 \ud655\uc7a5 \ubc0f \ub2e4\uc591\ud55c \ubd84\uc0b0 \uad6c\uc131<\/td><td>\uc218\ud3c9 \ud655\uc7a5\uc744 \uc9c0\uc6d0\ud558\ub294 \uc81c\ud488\uc774 \ub9ce\uc74c<\/td><\/tr><tr><td>\uc801\ud569\ud55c \uc0ac\ub840<\/td><td>\uc7ac\ud654, \uacb0\uc81c, \uacc4\uc815 \uc815\ubcf4<\/td><td>\uce90\uc2dc, \uc774\ubca4\ud2b8 \ub370\uc774\ud130, \uc720\uc5f0\ud55c \ubb38\uc11c \ub370\uc774\ud130<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\uac8c\uc784 \uc11c\ubc84\uc5d0\uc11c\uc758 \uc120\ud0dd<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784 \uc11c\ubc84\uc5d0\uc11c\ub294 \ub370\uc774\ud130\uc758 \uc131\uaca9\uc5d0 \ub530\ub77c \uc800\uc7a5\uc18c\ub97c \uad6c\ubd84\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>MySQL:<\/strong> \uc720\uc800 \uc815\ubcf4, \uc778\ubca4\ud1a0\ub9ac, \uc7ac\ud654, \uac70\ub798 \ubc0f \uacb0\uc81c \ub0b4\uc5ed<\/li>\n\n\n\n<li><strong>Redis:<\/strong> \uc138\uc158, \uce90\uc2dc, \uc784\uc2dc \uc0c1\ud0dc, \ub9cc\ub8cc\uac00 \ud544\uc694\ud55c \ub370\uc774\ud130<\/li>\n\n\n\n<li><strong>MongoDB:<\/strong> \ubb38\uc11c \ud615\ud0dc\uc758 \uc720\uc5f0\ud55c \ub370\uc774\ud130\ub098 \ud2b9\uc815 \uc774\ubca4\ud2b8 \ub370\uc774\ud130<\/li>\n\n\n\n<li><strong>Loki:<\/strong> \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ub85c\uadf8 \uac80\uc0c9 \ubc0f \ubd84\uc11d<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c \uc911\uc694\ud55c \uc810\uc740 \uc800\uc7a5\uc18c\uc758 \uc885\ub958\ubcf4\ub2e4 \ub370\uc774\ud130\uc758 \uc694\uad6c\uc0ac\ud56d\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc720\uc800\uc758 \uc7ac\ud654\uac00 100\uc5d0\uc11c 50\uc73c\ub85c \uac10\uc18c\ud588\ub2e4\uba74, \ud574\ub2f9 \ubcc0\uacbd\uc740 \uc815\ud655\ud558\uac8c \uc800\uc7a5\ub418\uc5b4\uc57c \ud55c\ub2e4. \uce90\uc2dc\ub098 \ub85c\uadf8\ub9cc\uc73c\ub85c \uc774\ub97c \ucc98\ub9ac\ud558\uba74 \uc7a5\uc560 \ubc1c\uc0dd \uc2dc \ub370\uc774\ud130\uac00 \uc720\uc2e4\ub418\uac70\ub098 \ubd88\uc77c\uce58\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \uc601\uc18d\uc131\uacfc \uc815\ud569\uc131\uc774 \uc911\uc694\ud55c \ub370\uc774\ud130\ub294 \uc801\uc808\ud55c \ud2b8\ub79c\uc7ad\uc158\uc744 \uac16\ucd98 \uc800\uc7a5\uc18c\ub97c \uae30\uc900 \ub370\uc774\ud130 \uc800\uc7a5\uc18c(Source of Truth)\ub85c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc77c\ubc18\uc801\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc2a4\ud0a4\ub9c8 \uc124\uacc4\uc640 \uc815\uaddc\ud654<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\uc2a4\ud0a4\ub9c8\ub780?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2a4\ud0a4\ub9c8(Schema)\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uad6c\uc870\ub97c \uc815\uc758\ud55c \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc774\ube14\uc758 \uc774\ub984, \uceec\ub7fc, \uc790\ub8cc\ud615, \uae30\ubcf8\ud0a4, \uc678\ub798\ud0a4, \uc81c\uc57d \uc870\uac74 \ub4f1\uc744 \ud3ec\ud568\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc720\uc800\uc640 \uc544\uc774\ud15c\uc744 \uad00\ub9ac\ud558\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uacc4\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE users (\n    id BIGINT PRIMARY KEY AUTO_INCREMENT,\n    nickname VARCHAR(30) NOT NULL\n);\n\nCREATE TABLE items (\n    id BIGINT PRIMARY KEY AUTO_INCREMENT,\n    name VARCHAR(100) NOT NULL\n);\n\nCREATE TABLE inventory (\n    user_id BIGINT NOT NULL,\n    item_id BIGINT NOT NULL,\n    quantity INT NOT NULL DEFAULT 0,\n\n    PRIMARY KEY (user_id, item_id),\n\n    FOREIGN KEY (user_id)\n        REFERENCES users(id),\n\n    FOREIGN KEY (item_id)\n        REFERENCES items(id),\n\n    CHECK (quantity &gt;= 0)\n);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uad6c\uc870\ub294 \uc720\uc800, \uc544\uc774\ud15c, \uc778\ubca4\ud1a0\ub9ac \uc815\ubcf4\ub97c \ubd84\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>inventory<\/code>\ub294 \uc720\uc800\uc640 \uc544\uc774\ud15c\uc758 \uad00\uacc4\ub97c \ud45c\ud604\ud558\uba70, \uac01 \uc720\uc800\uac00 \ud2b9\uc815 \uc544\uc774\ud15c\uc744 \uba87 \uac1c \ubcf4\uc720\ud558\uace0 \uc788\ub294\uc9c0 \uc800\uc7a5\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub3d9\uc77c\ud55c \uc720\uc800\uac00 \ub3d9\uc77c\ud55c \uc544\uc774\ud15c\uc744 \uc5ec\ub7ec \ud589\uc73c\ub85c \uc911\ubcf5 \ubcf4\uc720\ud558\uc9c0 \uc54a\ub3c4\ub85d \ubcf5\ud569 \uae30\ubcf8\ud0a4 <code>(user_id, item_id)<\/code>\ub97c \uc0ac\uc6a9\ud588\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8, \uc2e4\uc81c \uc544\uc774\ud15c \uc2dc\uc2a4\ud15c\uc5d0\uc11c \uc7a5\ube44\ub9c8\ub2e4 \uace0\uc720\ud55c \uac15\ud654 \uc218\uce58\ub098 \ub0b4\uad6c\ub3c4\uac00 \ud544\uc694\ud558\ub2e4\uba74 \uc544\uc774\ud15c \uc778\uc2a4\ud134\uc2a4\ub97c \ubcc4\ub3c4\ub85c \ubaa8\ub378\ub9c1\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc815\uaddc\ud654\ub780?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc815\uaddc\ud654(Normalization)\ub294 \ub370\uc774\ud130\uc758 \uc911\ubcf5\uc744 \uc904\uc774\uace0 \uc0bd\uc785, \uc218\uc815, \uc0ad\uc81c \uacfc\uc815\uc5d0\uc11c \ubc1c\uc0dd\ud560 \uc218 \uc788\ub294 \uc774\uc0c1 \ud604\uc0c1\uc744 \ubc29\uc9c0\ud558\ub3c4\ub85d \ud14c\uc774\ube14 \uad6c\uc870\ub97c \uc124\uacc4\ud558\ub294 \uacfc\uc815\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub2e4\uc74c\uacfc \uac19\uc740 \ud14c\uc774\ube14\uc774 \uc788\ub2e4\uace0 \uac00\uc815\ud55c\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>user_id<\/th><th>nickname<\/th><th>item_name<\/th><th>quantity<\/th><\/tr><tr><td>1<\/td><td>PlayerA<\/td><td>Sword<\/td><td>1<\/td><\/tr><tr><td>1<\/td><td>PlayerA<\/td><td>Potion<\/td><td>10<\/td><\/tr><tr><td>2<\/td><td>PlayerB<\/td><td>Sword<\/td><td>1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uad6c\uc870\uc5d0\uc11c\ub294 \ub3d9\uc77c\ud55c \uc720\uc800\uc758 \ub2c9\ub124\uc784\uc774 \uc5ec\ub7ec \ud589\uc5d0 \ubc18\ubcf5\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2c9\ub124\uc784\uc774 \ubcc0\uacbd\ub418\uba74 \ud574\ub2f9 \uc720\uc800\uc758 \ubaa8\ub4e0 \ud589\uc744 \uc218\uc815\ud574\uc57c \ud55c\ub2e4. \uc77c\ubd80 \ud589\ub9cc \ubcc0\uacbd\ud558\uba74 \uc11c\ub85c \ub2e4\ub978 \ub2c9\ub124\uc784\uc774 \ub3d9\uc77c\ud55c \uc720\uc800\uc5d0\uac8c \uc5f0\uacb0\ub418\ub294 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc815\uaddc\ud654\ub41c \uad6c\uc870\uc5d0\uc11c\ub294 \uc720\uc800 \uc815\ubcf4\uc640 \uc544\uc774\ud15c \uc815\ubcf4\ub97c \ubcc4\ub3c4 \ud14c\uc774\ube14\ub85c \ubd84\ub9ac\ud558\uace0, \uc678\ub798\ud0a4\ub85c \uad00\uacc4\ub97c \uc5f0\uacb0\ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc815\uaddc\ud654\uc758 \uc8fc\uc694 \ub2e8\uacc4<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc81c1\uc815\uaddc\ud615(1NF)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac01 \uceec\ub7fc\uc740 \ud558\ub098\uc758 \uac12\ub9cc \uac00\uc9c0\ub3c4\ub85d \uc124\uacc4\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc798\ubabb\ub41c \uc608:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>user_id<\/th><th>items<\/th><\/tr><tr><td>1<\/td><td>Sword, Potion, Shield<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uac1c\uc120\ub41c \uad6c\uc870\uc5d0\uc11c\ub294 \uc544\uc774\ud15c\ub9c8\ub2e4 \ubcc4\ub3c4\uc758 \ud589\uc744 \uc0ac\uc6a9\ud558\uac70\ub098 \uc778\ubca4\ud1a0\ub9ac \ud14c\uc774\ube14\ub85c \ubd84\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc81c2\uc815\uaddc\ud615(2NF)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc81c1\uc815\uaddc\ud615\uc744 \ub9cc\uc871\ud558\uba74\uc11c \uae30\ubcf8\ud0a4\uc758 \uc77c\ubd80\uc5d0\ub9cc \uc885\uc18d\ub418\ub294 \uc18d\uc131\uc744 \uc81c\uac70\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uae30\ubcf8\ud0a4\uac00 <code>(user_id, item_id)<\/code>\uc778 \ud14c\uc774\ube14\uc5d0\uc11c <code>nickname<\/code>\uc774 <code>user_id<\/code>\uc5d0\ub9cc \uc885\uc18d\ub41c\ub2e4\uba74 \uc720\uc800 \uc815\ubcf4 \ud14c\uc774\ube14\ub85c \ubd84\ub9ac\ud558\ub294 \uac83\uc774 \uc801\uc808\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc81c3\uc815\uaddc\ud615(3NF)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\ubcf8\ud0a4\uac00 \uc544\ub2cc \uc18d\uc131\uc774 \ub2e4\ub978 \uae30\ubcf8\ud0a4 \uc678 \uc18d\uc131\uc5d0 \uc885\uc18d\ub418\ub294 \uc774\ud589\uc801 \uc885\uc18d\uc744 \uc81c\uac70\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc720\uc800 \ud14c\uc774\ube14\uc5d0 <code>department_id<\/code>\uc640 <code>department_name<\/code>\uc744 \ud568\uaed8 \uc800\uc7a5\ud558\uace0, \ubd80\uc11c \uc774\ub984\uc774 \ubd80\uc11c ID\uc5d0 \uc758\ud574 \uacb0\uc815\ub41c\ub2e4\uba74 \ubd80\uc11c \uc815\ubcf4\ub97c \ubcc4\ub3c4 \ud14c\uc774\ube14\ub85c \ubd84\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc815\uaddc\ud654\uc640 \uc131\ub2a5\uc758 \uade0\ud615<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc815\uaddc\ud654\ub294 \uc911\ubcf5\uacfc \ub370\uc774\ud130 \uc774\uc0c1\uc744 \uc904\uc774\ub294 \ub370 \uc720\ub9ac\ud558\uc9c0\ub9cc, \uc9c0\ub098\uce58\uac8c \ub9ce\uc740 \ud14c\uc774\ube14\uc744 \ubd84\ub9ac\ud558\uba74 \uc870\ud68c\ud560 \ub54c JOIN\uc774 \ub298\uc5b4\ub0a0 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uacbd\uc6b0 \uc2e4\uc81c \uc870\ud68c \ud328\ud134\uacfc \uce21\uc815 \uacb0\uacfc\ub97c \ubc14\ud0d5\uc73c\ub85c \uc77c\ubd80 \ub370\uc774\ud130\ub97c \uc911\ubcf5 \uc800\uc7a5\ud558\ub294 \ubc18\uc815\uaddc\ud654(Denormalization)\ub97c \uace0\ub824\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \uc911\ubcf5 \ub370\uc774\ud130\ub97c \uc0ac\uc6a9\ud55c\ub2e4\uba74 \ub3d9\uae30\ud654 \uaddc\uce59\uacfc \ub370\uc774\ud130 \ubd88\uc77c\uce58 \ubcf5\uad6c \uc804\ub7b5\uc774 \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc124\uacc4 \uc6d0\uce59\uc740 \uc815\uaddc\ud654\ub97c \uae30\ubcf8\uc73c\ub85c \ud558\uace0, \uce21\uc815\ub41c \uc131\ub2a5 \ubb38\uc81c\uc5d0 \ud55c\ud574 \uc758\ub3c4\uc801\uc73c\ub85c \ubc18\uc815\uaddc\ud654\ud558\ub294 \uac83\uc774\ub2e4.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uae30\ubcf8\ud0a4\uc640 \uc678\ub798\ud0a4<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\uae30\ubcf8\ud0a4(Primary Key)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\ubcf8\ud0a4\ub294 \ud14c\uc774\ube14\uc758 \uac01 \ud589\uc744 \uace0\uc720\ud558\uac8c \uc2dd\ubcc4\ud558\ub294 \uceec\ub7fc \ub610\ub294 \uceec\ub7fc \uc870\ud569\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE users (\n    id BIGINT PRIMARY KEY AUTO_INCREMENT,\n    nickname VARCHAR(30) NOT NULL\n);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc11c <code>id<\/code>\ub294 \uac01 \uc720\uc800\ub97c \uc2dd\ubcc4\ud558\ub294 \uae30\ubcf8\ud0a4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\ubcf8\ud0a4\ub294 \uc911\ubcf5\ub420 \uc218 \uc5c6\uc73c\uba70 NULL \uac12\uc744 \ud5c8\uc6a9\ud558\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc73c\ub85c \ub2e4\uc74c \ub450 \uac00\uc9c0 \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc790\uc5f0\ud0a4(Natural Key):<\/strong> \uc774\uba54\uc77c, \uc0ac\uc5c5\uc790 \ub4f1\ub85d\ubc88\ud638 \ub4f1 \uc2e4\uc81c \uc5c5\ubb34\uc5d0\uc11c \uc758\ubbf8\uac00 \uc788\ub294 \uac12<\/li>\n\n\n\n<li><strong>\ub300\ub9ac\ud0a4(Surrogate Key):<\/strong> \ubcc4\ub3c4\uc758 ID\ub97c \uc0dd\uc131\ud574 \uc2dd\ubcc4\uc790\ub85c \uc0ac\uc6a9\ud558\ub294 \ubc29\uc2dd<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uba54\uc77c\uc744 \uae30\ubcf8\ud0a4\ub85c \uc0ac\uc6a9\ud558\uba74 \uc774\uba54\uc77c \ubcc0\uacbd \uc2dc \uad00\uacc4\ub97c \uc218\uc815\ud574\uc57c \ud560 \uc218 \uc788\ub2e4. \ub530\ub77c\uc11c \ubcc0\uacbd \uac00\ub2a5\uc131\uc774 \uc788\ub294 \uac12\ubcf4\ub2e4\ub294 \ubcc4\ub3c4\uc758 ID\ub97c \uae30\ubcf8\ud0a4\ub85c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc678\ub798\ud0a4(Foreign Key)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc678\ub798\ud0a4\ub294 \ub2e4\ub978 \ud14c\uc774\ube14\uc758 \uae30\ubcf8\ud0a4 \ub610\ub294 \uc720\ub2c8\ud06c \ud0a4\ub97c \ucc38\uc870\ud558\uc5ec \ud14c\uc774\ube14 \uac04 \uad00\uacc4\uc758 \ubb34\uacb0\uc131\uc744 \ubcf4\uc7a5\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE orders (\n    id BIGINT PRIMARY KEY AUTO_INCREMENT,\n    user_id BIGINT NOT NULL,\n    total_price BIGINT NOT NULL,\n\n    FOREIGN KEY (user_id)\n        REFERENCES users(id)\n);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uad6c\uc870\uc5d0\uc11c\ub294 \uc874\uc7ac\ud558\uc9c0 \uc54a\ub294 \uc720\uc800 ID\ub97c \uc8fc\ubb38\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc678\ub798\ud0a4\ub294 \uc798\ubabb\ub41c \ucc38\uc870 \uad00\uacc4\uac00 \uc800\uc7a5\ub418\ub294 \uac83\uc744 \ubc29\uc9c0\ud55c\ub2e4. \ub2e4\ub9cc \uc678\ub798\ud0a4\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294 \uc2dc\uc2a4\ud15c\uc5d0\uc11c\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ub3d9\uc77c\ud55c \ubb34\uacb0\uc131\uc744 \ubcf4\uc7a5\ud558\ub3c4\ub85d \ubcc4\ub3c4 \uac80\uc99d\uc744 \uad6c\ud604\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc0ad\uc81c \uc815\ucc45<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc38\uc870 \ub300\uc0c1\uc774 \uc0ad\uc81c\ub420 \ub54c\uc758 \ub3d9\uc791\ub3c4 \uc124\uacc4\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FOREIGN KEY (user_id)\n    REFERENCES users(id)\n    ON DELETE CASCADE<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc8fc\uc694 \uc635\uc158\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>CASCADE<\/code>: \ucc38\uc870 \ub300\uc0c1\uc774 \uc0ad\uc81c\ub418\uba74 \uad00\ub828 \ud589\ub3c4 \uc0ad\uc81c\ud55c\ub2e4.<\/li>\n\n\n\n<li><code>RESTRICT<\/code> \ub610\ub294 <code>NO ACTION<\/code>: \ucc38\uc870 \uad00\uacc4 \ub54c\ubb38\uc5d0 \uc0ad\uc81c\ub97c \uc81c\ud55c\ud55c\ub2e4. \uc138\ubd80 \ub3d9\uc791\uc740 DBMS\uc5d0 \ub530\ub77c \ub2e4\ub97c \uc218 \uc788\ub2e4.<\/li>\n\n\n\n<li><code>SET NULL<\/code>: \ucc38\uc870 \uceec\ub7fc\uc744 NULL\ub85c \ubcc0\uacbd\ud55c\ub2e4. \ud574\ub2f9 \uceec\ub7fc\uc774 NULL\uc744 \ud5c8\uc6a9\ud574\uc57c \ud55c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uac8c\uc784 \uc11c\ubc84\uc758 \uacb0\uc81c \ubc0f \uac70\ub798 \ub370\uc774\ud130\uc5d0 \ubb34\uc870\uac74 <code>CASCADE<\/code>\ub97c \uc801\uc6a9\ud558\uba74 \uc774\ub825\uc774 \ud568\uaed8 \uc0ad\uc81c\ub420 \uc704\ud5d8\uc774 \uc788\ub2e4. \uc911\uc694\ud55c \ub370\uc774\ud130\ub294 \uc0ad\uc81c \ub300\uc2e0 \uc0c1\ud0dc \ubcc0\uacbd\uc774\ub098 \ubcc4\ub3c4 \ubcf4\uc874 \uc815\ucc45\uc744 \uc0ac\uc6a9\ud558\ub294 \ud3b8\uc774 \uc801\uc808\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc720\ub2c8\ud06c \uc81c\uc57d \uc870\uac74(UNIQUE Constraint)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc720\ub2c8\ud06c \uc81c\uc57d \uc870\uac74\uc740 \ud2b9\uc815 \uceec\ub7fc \ub610\ub294 \uceec\ub7fc \uc870\ud569\uc758 \uac12\uc774 \uc911\ubcf5\ub418\uc9c0 \uc54a\ub3c4\ub85d \uc81c\ud55c\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc774\uba54\uc77c\uacfc \ub2c9\ub124\uc784\uc744 \uc911\ubcf5 \uc5c6\uc774 \uad00\ub9ac\ud558\ub824\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uc815\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE users (\n    id BIGINT PRIMARY KEY AUTO_INCREMENT,\n    email VARCHAR(255) NOT NULL,\n    nickname VARCHAR(30) NOT NULL,\n\n    UNIQUE (email),\n    UNIQUE (nickname)\n);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \ud558\uba74 \ub450 \uc694\uccad\uc774 \ub3d9\uc2dc\uc5d0 \ub3d9\uc77c\ud55c \ub2c9\ub124\uc784\uc744 \ub4f1\ub85d\ud558\ub824\uace0 \ud574\ub3c4 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc911\ubcf5 \uc800\uc7a5\uc744 \ucc28\ub2e8\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uba3c\uc800 \uc911\ubcf5\uc744 \uc870\ud68c\ud558\ub294 \uac83\ub9cc\uc73c\ub85c\ub294 \ucda9\ubd84\ud558\uc9c0 \uc54a\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT id\nFROM users\nWHERE nickname = 'PlayerA';<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub450 \uc694\uccad\uc774 \ub3d9\uc2dc\uc5d0 \uc2e4\ud589\ub418\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \uc0c1\ud669\uc774 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc694\uccad A: \ub2c9\ub124\uc784\uc774 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc74c\uc744 \ud655\uc778<\/li>\n\n\n\n<li>\uc694\uccad B: \ub2c9\ub124\uc784\uc774 \uc874\uc7ac\ud558\uc9c0 \uc54a\uc74c\uc744 \ud655\uc778<\/li>\n\n\n\n<li>\uc694\uccad A: \ub2c9\ub124\uc784 \ub4f1\ub85d<\/li>\n\n\n\n<li>\uc694\uccad B: \ub3d9\uc77c\ud55c \ub2c9\ub124\uc784 \ub4f1\ub85d \uc2dc\ub3c4<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub97c \uacbd\uc7c1 \uc870\uac74(Race Condition)\uc774\ub77c\uace0 \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc0ac\uc804 \uc870\ud68c\ub97c \uc218\ud589\ud558\ub354\ub77c\ub3c4 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc720\ub2c8\ud06c \uc81c\uc57d \uc870\uac74\uc744 \uc124\uc815\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc720\ub2c8\ud06c \uc81c\uc57d \uc704\ubc18\uc774 \ubc1c\uc0dd\ud558\uba74 \ud574\ub2f9 \uc624\ub958\ub97c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc2dd\ubcc4\ud558\uc5ec \uc801\uc808\ud55c \uc751\ub2f5\uc73c\ub85c \ubcc0\ud658\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub2c9\ub124\uc784 \uc911\ubcf5\uc740 HTTP <code>409 Conflict<\/code>\ub85c \ubc18\ud658\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc38\uace0\ub85c NULL \ucc98\ub9ac \ubc29\uc2dd\uacfc \ub300\uc18c\ubb38\uc790 \ube44\uad50 \uaddc\uce59\uc740 DBMS \ubc0f \uceec\ub7fc\uc758 Collation \uc124\uc815\uc5d0 \ub530\ub77c \ub2e4\ub97c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc778\ub371\uc2a4(Index)\uc640 \uc2e4\ud589 \uacc4\ud68d(Execution Plan)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\uc778\ub371\uc2a4\ub780?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc778\ub371\uc2a4\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \ud2b9\uc815 \ub370\uc774\ud130\ub97c \ub354 \ube60\ub974\uac8c \ucc3e\ub3c4\ub85d \uc9c0\uc6d0\ud558\ub294 \uc790\ub8cc\uad6c\uc870\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc45\uc758 \uc0c9\uc778\uacfc \ube44\uc2b7\ud558\ub2e4. \uc0c9\uc778\uc774 \uc5c6\ub2e4\uba74 \uc6d0\ud558\ub294 \ub0b4\uc6a9\uc744 \ucc3e\uae30 \uc704\ud574 \ucc45 \uc804\uccb4\ub97c \ud655\uc778\ud574\uc57c \ud558\uc9c0\ub9cc, \uc0c9\uc778\uc774 \uc788\ub2e4\uba74 \ud574\ub2f9 \ub0b4\uc6a9\uc774 \uc788\ub294 \uc704\uce58\ub97c \ube60\ub974\uac8c \ucc3e\uc744 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL\uc758 InnoDB\uc5d0\uc11c\ub294 \uc77c\ubc18\uc801\uc778 \ubcf4\uc870 \uc778\ub371\uc2a4\uc5d0 B+Tree \uacc4\uc5f4\uc758 \uc790\ub8cc\uad6c\uc870\uac00 \uc0ac\uc6a9\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub2e4\uc74c \ucffc\ub9ac\ub97c \uc2e4\ud589\ud55c\ub2e4\uace0 \uac00\uc815\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT *\nFROM users\nWHERE email = 'player@example.com';<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uba54\uc77c \uc778\ub371\uc2a4\uac00 \uc5c6\ub2e4\uba74 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub294 \ub9ce\uc740 \ud589\uc744 \uac80\uc0ac\ud574\uc57c \ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uacfc \uac19\uc774 \uc778\ub371\uc2a4\ub97c \uc0dd\uc131\ud558\uba74 \uc774\uba54\uc77c\uc744 \uae30\uc900\uc73c\ub85c \uac80\uc0c9\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE INDEX idx_users_email\nON users(email);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8, \uc774\ubbf8 <code>UNIQUE(email)<\/code>\uc744 \uc120\uc5b8\ud588\ub2e4\uba74 \ud574\ub2f9 \uc720\ub2c8\ud06c \uc81c\uc57d\uc744 \uad6c\ud604\ud558\uae30 \uc704\ud55c \uc778\ub371\uc2a4\uac00 \uc0dd\uc131\ub418\ubbc0\ub85c \uac19\uc740 \ubaa9\uc801\uc73c\ub85c \ubcc4\ub3c4 \uc778\ub371\uc2a4\ub97c \ucd94\uac00\ud560 \ud544\uc694\ub294 \uc5c6\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc778\ub371\uc2a4\uc758 \ube44\uc6a9<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc778\ub371\uc2a4\ub294 \uc870\ud68c \uc131\ub2a5\uc744 \uac1c\uc120\ud558\uc9c0\ub9cc \uacf5\uc9dc\uac00 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ucd94\uac00 \uc800\uc7a5 \uacf5\uac04\uc774 \ud544\uc694\ud558\ub2e4.<\/li>\n\n\n\n<li>INSERT, UPDATE, DELETE \uc2dc \uc778\ub371\uc2a4\ub3c4 \uad00\ub9ac\ud574\uc57c \ud55c\ub2e4.<\/li>\n\n\n\n<li>\uc778\ub371\uc2a4\uac00 \uc9c0\ub098\uce58\uac8c \ub9ce\uc73c\uba74 \uc4f0\uae30 \uc131\ub2a5\uc774 \uc800\ud558\ub420 \uc218 \uc788\ub2e4.<\/li>\n\n\n\n<li>\uc120\ud0dd\ub3c4\uac00 \ub0ae\uc740 \uceec\ub7fc\uc740 \ub2e8\ub3c5 \uc778\ub371\uc2a4\uc758 \ud6a8\uc728\uc774 \ub0ae\uc744 \uc218 \uc788\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \ubaa8\ub4e0 \uceec\ub7fc\uc5d0 \uc778\ub371\uc2a4\ub97c \uc0dd\uc131\ud558\uae30\ubcf4\ub2e4\ub294 \uc2e4\uc81c \ucffc\ub9ac\uc758 \uac80\uc0c9 \uc870\uac74, \uc815\ub82c \uc870\uac74, JOIN \uc870\uac74\uc744 \uae30\uc900\uc73c\ub85c \uc124\uacc4\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ubcf5\ud569 \uc778\ub371\uc2a4<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\ub7ec \uceec\ub7fc\uc744 \uc870\ud569\ud55c \uc778\ub371\uc2a4\ub97c \ubcf5\ud569 \uc778\ub371\uc2a4(Composite Index)\ub77c\uace0 \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE INDEX idx_users_status_created\nON users(status, created_at);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c \ucffc\ub9ac\ub294 \ud574\ub2f9 \uc778\ub371\uc2a4\ub97c \ud65c\uc6a9\ud560 \uac00\ub2a5\uc131\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT id, created_at\nFROM users\nWHERE status = 'ACTIVE'\nORDER BY created_at DESC;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ubcf5\ud569 \uc778\ub371\uc2a4\ub294 \uceec\ub7fc\uc758 \uc21c\uc11c\uac00 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc73c\ub85c <code>(status, created_at)<\/code> \uc778\ub371\uc2a4\ub294 <code>status<\/code> \uc870\uac74\uc774 \uc788\ub294 \uc870\ud68c\uc5d0 \uc720\ub9ac\ud558\ub2e4. \ubc18\uba74 <code>created_at<\/code>\ub9cc\uc73c\ub85c \uc870\ud68c\ud560 \ub54c\ub294 \uc778\ub371\uc2a4\ub97c \ud6a8\uc728\uc801\uc73c\ub85c \ud65c\uc6a9\ud558\uc9c0 \ubabb\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \uc2e4\uc81c \ud65c\uc6a9 \uc5ec\ubd80\ub294 \ub370\uc774\ud130 \ubd84\ud3ec, \ucffc\ub9ac \ud615\ud0dc, \uc635\ud2f0\ub9c8\uc774\uc800 \ud310\ub2e8\uc5d0 \ub530\ub77c \ub2ec\ub77c\uc9c4\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc2e4\ud589 \uacc4\ud68d \ud655\uc778\ud558\uae30<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\ud589 \uacc4\ud68d\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \ucffc\ub9ac\ub97c \uc5b4\ub5bb\uac8c \uc2e4\ud589\ud560\uc9c0 \ubcf4\uc5ec\uc8fc\ub294 \uc815\ubcf4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL\uc5d0\uc11c\ub294 <code>EXPLAIN<\/code>\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EXPLAIN\nSELECT id, nickname\nFROM users\nWHERE email = 'player@example.com';<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc8fc\uc694 \ud655\uc778 \ud56d\ubaa9\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>\ud56d\ubaa9<\/th><th>\uc758\ubbf8<\/th><\/tr><tr><td><code>type<\/code><\/td><td>\ud14c\uc774\ube14 \uc811\uadfc \ubc29\uc2dd<\/td><\/tr><tr><td><code>possible_keys<\/code><\/td><td>\uc0ac\uc6a9 \ud6c4\ubcf4\uac00 \ub420 \uc218 \uc788\ub294 \uc778\ub371\uc2a4<\/td><\/tr><tr><td><code>key<\/code><\/td><td>\uc2e4\uc81c \uc120\ud0dd\ub41c \uc778\ub371\uc2a4<\/td><\/tr><tr><td><code>rows<\/code><\/td><td>\uac80\uc0ac\ud560 \uac83\uc73c\ub85c \uc608\uc0c1\ub418\ub294 \ud589 \uc218<\/td><\/tr><tr><td><code>filtered<\/code><\/td><td>\uc870\uac74 \uc801\uc6a9 \ud6c4 \ub0a8\uc744 \uac83\uc73c\ub85c \uc608\uc0c1\ub418\ub294 \ube44\uc728<\/td><\/tr><tr><td><code>Extra<\/code><\/td><td>\ucd94\uac00 \uc2e4\ud589 \uc815\ubcf4<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><code>type<\/code>\uc774 <code>ALL<\/code>\uc774\uba74 \uc77c\ubc18\uc801\uc73c\ub85c \uc804\uccb4 \ud14c\uc774\ube14 \uc2a4\uce94\uc744 \uc758\ubbf8\ud55c\ub2e4. \ud558\uc9c0\ub9cc \ud14c\uc774\ube14\uc774 \uc791\uac70\ub098 \uc870\ud68c \ub300\uc0c1\uc774 \ub300\ubd80\ubd84\uc758 \ud589\uc774\ub77c\uba74 \uc804\uccb4 \uc2a4\uce94\uc774 \ub354 \ud6a8\uc728\uc801\uc77c \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\ub300\ub85c \uc778\ub371\uc2a4\ub97c \uc0ac\uc6a9\ud55c\ub2e4\uace0 \ubb34\uc870\uac74 \ube60\ub978 \uac83\ub3c4 \uc544\ub2c8\ub2e4. \uc778\ub371\uc2a4\ub97c \ud1b5\ud574 \ub9ce\uc740 \ud589\uc744 \uc77d\uace0 \ub2e4\uc2dc \ud14c\uc774\ube14\uc5d0 \uc811\uadfc\ud55c\ub2e4\uba74 \ube44\ud6a8\uc728\uc801\uc77c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL\uc5d0\uc11c\ub294 <code>EXPLAIN ANALYZE<\/code>\ub97c \ud1b5\ud574 \uc9c0\uc6d0\ub418\ub294 \ucffc\ub9ac\uc758 \uc2e4\uc81c \uc2e4\ud589 \ud1b5\uacc4\ub97c \ud655\uc778\ud560 \uc218\ub3c4 \uc788\ub2e4. \uc774 \uba85\ub839\uc740 \ucffc\ub9ac\ub97c \uc2e4\uc81c\ub85c \uc2e4\ud589\ud558\ubbc0\ub85c \uc6b4\uc601 \ud658\uacbd\uc5d0\uc11c\ub294 \ubd80\ud558\uc640 \uc2e4\ud589 \uacb0\uacfc\ub97c \uace0\ub824\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ucffc\ub9ac \ucd5c\uc801\ud654(Query Optimization)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ucffc\ub9ac \ucd5c\uc801\ud654\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \ud544\uc694\ud55c \ub370\uc774\ud130\ub97c \uc801\uc740 \ube44\uc6a9\uc73c\ub85c \uc870\ud68c\ud558\uace0 \ubcc0\uacbd\ud558\ub3c4\ub85d SQL\uacfc \ub370\uc774\ud130 \uad6c\uc870\ub97c \uac1c\uc120\ud558\ub294 \uacfc\uc815\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud575\uc2ec\uc740 SQL \ubb38\ubc95\uc744 \uc9e7\uac8c \ub9cc\ub4dc\ub294 \uac83\uc774 \uc544\ub2c8\ub77c, \ubd88\ud544\uc694\ud55c \ub370\uc774\ud130 \uc811\uadfc\uacfc \uc791\uc5c5\uc744 \uc904\uc774\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud544\uc694\ud55c \uceec\ub7fc\ub9cc \uc870\ud68c\ud558\uae30<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c \ucffc\ub9ac\ub294 \ubaa8\ub4e0 \uceec\ub7fc\uc744 \uc870\ud68c\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT *\nFROM users\nWHERE id = 1;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uc0ac\uc6a9\uc5d0 \ud544\uc694\ud55c \uceec\ub7fc\ub9cc \uc870\ud68c\ud558\ub294 \ud3b8\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT id, nickname\nFROM users\nWHERE id = 1;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud544\uc694\ud55c \uceec\ub7fc\ub9cc \uc870\ud68c\ud558\uba74 \ub124\ud2b8\uc6cc\ud06c \uc804\uc1a1\ub7c9\uacfc \ub370\uc774\ud130 \ucc98\ub9ac \ube44\uc6a9\uc744 \uc904\uc77c \uc218 \uc788\ub2e4. \uc801\uc808\ud55c \uc778\ub371\uc2a4\uac00 \uc788\ub2e4\uba74 \ud14c\uc774\ube14\uc5d0 \ucd94\uac00 \uc811\uadfc\ud558\uc9c0 \uc54a\uace0 \uacb0\uacfc\ub97c \ubc18\ud658\ud558\ub294 \ucee4\ubc84\ub9c1 \uc778\ub371\uc2a4(Covering Index)\ub97c \ud65c\uc6a9\ud560 \uac00\ub2a5\uc131\ub3c4 \uc0dd\uae34\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc778\ub371\uc2a4\ub97c \ud65c\uc6a9\ud560 \uc218 \uc788\ub294 \uc870\uac74 \uc791\uc131\ud558\uae30<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c \ucffc\ub9ac\ub294 \uceec\ub7fc\uc5d0 \ud568\uc218\ub97c \uc801\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT *\nFROM users\nWHERE DATE(created_at) = '2026-10-24';<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 \uc870\uac74\uc740 \uc77c\ubc18\uc801\uc778 <code>created_at<\/code> \uc778\ub371\uc2a4\ub97c \ud6a8\uc728\uc801\uc73c\ub85c \ud65c\uc6a9\ud558\uae30 \uc5b4\ub835\uac8c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\uc2e0 \ubc94\uc704 \uc870\uac74\uc73c\ub85c \ubcc0\uacbd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT *\nFROM users\nWHERE created_at &gt;= '2026-10-24 00:00:00'\n  AND created_at &lt;  '2026-10-25 00:00:00';<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ubc29\uc2dd\uc740 \ud574\ub2f9 \ub0a0\uc9dc\uc758 \uc2dc\uc791 \uc2dc\uac01 \uc774\uc0c1, \ub2e4\uc74c \ub0a0 \uc2dc\uc791 \uc2dc\uac01 \ubbf8\ub9cc\uc778 \ub370\uc774\ud130\ub97c \uc870\ud68c\ud55c\ub2e4. \uc77c\ubc18\uc801\uc778 \uc778\ub371\uc2a4 \ubc94\uc704 \uac80\uc0c9\uc5d0 \uc801\ud569\ud55c \ud615\ud0dc\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">N+1 \ucffc\ub9ac \ubb38\uc81c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">N+1 \ubb38\uc81c\ub294 \ud55c \ubc88\uc758 \ubaa9\ub85d \uc870\ud68c \ud6c4 \uac01 \ud56d\ubaa9\uc744 \ucc98\ub9ac\ud558\uae30 \uc704\ud574 \ucd94\uac00 \ucffc\ub9ac\ub97c \ubc18\ubcf5 \uc2e4\ud589\ud558\ub294 \ubb38\uc81c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const users = await getUsers();\n\nfor (const user of users) {\n  user.items = await getItemsByUserId(user.id);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc720\uc800\ub97c \ud55c \ubc88 \uc870\ud68c\ud55c \ub4a4 \uc720\uc800 \uc218\ub9cc\ud07c \uc778\ubca4\ud1a0\ub9ac\ub97c \uc870\ud68c\ud558\ubbc0\ub85c, \uc720\uc800\uac00 100\uba85\uc774\uba74 \ucd5c\uc18c 101\ud68c\uc758 \uc870\ud68c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00\ub2a5\ud558\ub2e4\uba74 \uc77c\uad04 \uc870\ud68c\ub85c \uac1c\uc120\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n    u.id,\n    u.nickname,\n    i.item_id,\n    i.quantity\nFROM users AS u\nLEFT JOIN inventory AS i\n    ON i.user_id = u.id\nWHERE u.id IN (1, 2, 3, 4, 5);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c\ub294 \ubc18\ud658\ub41c \ud589\uc744 \uc720\uc800\ubcc4\ub85c \uadf8\ub8f9\ud654\ud558\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc JOIN\uc740 \uacb0\uacfc \ud589 \uc218\ub97c \ub298\ub9b4 \uc218 \uc788\uc73c\ubbc0\ub85c \uc5ec\ub7ec \uac1c\uc758 \uc77c\ub300\ub2e4 \uad00\uacc4\ub97c \ub3d9\uc2dc\uc5d0 JOIN\ud560 \ub54c\ub294 \uc911\ubcf5 \ud589\uacfc \ub370\uc774\ud130 \uc804\uc1a1\ub7c9\uc744 \uc8fc\uc758\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud398\uc774\uc9c0\ub124\uc774\uc158 \ucd5c\uc801\ud654<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9ce\uc740 \ub370\uc774\ud130\ub97c \uc870\ud68c\ud560 \ub54c <code>LIMIT<\/code>\uacfc <code>OFFSET<\/code>\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT id, nickname\nFROM users\nORDER BY id\nLIMIT 20 OFFSET 10000;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">OFFSET\uc774 \ucee4\uc9c0\uba74 \uc55e\ucabd \ud589\uc744 \uac74\ub108\ub6f0\ub294 \ube44\uc6a9\uc774 \ucee4\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub370\uc774\ud130\uac00 \ub9ce\uace0 \ub2e4\uc74c \ud398\uc774\uc9c0\ub97c \uc21c\ucc28\uc801\uc73c\ub85c \uc870\ud68c\ud558\ub294 \uacbd\uc6b0\uc5d0\ub294 \ucee4\uc11c \uae30\ubc18 \ud398\uc774\uc9c0\ub124\uc774\uc158\uc744 \uace0\ub824\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT id, nickname\nFROM users\nWHERE id &gt; 10000\nORDER BY id\nLIMIT 20;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ubc29\uc2dd\uc740 <code>id<\/code>\uac00 \uc801\uc808\ud55c \uc778\ub371\uc2a4\ub97c \uac00\uc9c0\uace0 \uc788\uc744 \ub54c \ud6a8\uc728\uc801\uc774\ub2e4. \uc2e4\uc81c\ub85c\ub294 \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc870\ud68c\ud55c ID\ub97c \ucee4\uc11c\ub85c \uc804\ub2ec\ud558\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ucd5c\uc801\ud654 \uc791\uc5c5 \uc21c\uc11c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ucffc\ub9ac \uc131\ub2a5\uc744 \uac1c\uc120\ud560 \ub54c\ub294 \ub2e4\uc74c \uc21c\uc11c\ub85c \uc811\uadfc\ud55c\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uc2e4\uc81c\ub85c \ub290\ub9b0 \ucffc\ub9ac\ub97c \uc2dd\ubcc4\ud55c\ub2e4.<\/li>\n\n\n\n<li>\uc2e4\ud589 \uacc4\ud68d\uacfc \uc2e4\uc81c \uc2e4\ud589 \uc2dc\uac04\uc744 \ud655\uc778\ud55c\ub2e4.<\/li>\n\n\n\n<li>\uac80\uc0ac\ud558\ub294 \ud589 \uc218\uc640 \ubc18\ud658\ud558\ub294 \ud589 \uc218\ub97c \ube44\uad50\ud55c\ub2e4.<\/li>\n\n\n\n<li>\uc778\ub371\uc2a4, JOIN, \uc815\ub82c, \ud398\uc774\uc9c0\ub124\uc774\uc158\uc744 \uac80\ud1a0\ud55c\ub2e4.<\/li>\n\n\n\n<li>\ubcc0\uacbd \uc804\ud6c4\uc758 \uc131\ub2a5\uc744 \ub3d9\uc77c\ud55c \uc870\uac74\uc5d0\uc11c \uce21\uc815\ud55c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uadfc\uac70 \uc5c6\uc774 \uc778\ub371\uc2a4\ub97c \ucd94\uac00\ud558\uac70\ub098 SQL\uc744 \ubcf5\uc7a1\ud558\uac8c \ubcc0\uacbd\ud558\ub294 \uac83\uc740 \ucd5c\uc801\ud654\uac00 \uc544\ub2c8\ub2e4. \uce21\uc815 \uacb0\uacfc\ub85c \uac1c\uc120 \ud6a8\uacfc\ub97c \uac80\uc99d\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Connection Pool<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Connection Pool\uc774\ub780?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Connection Pool\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5f0\uacb0\uc744 \ubbf8\ub9ac \uc0dd\uc131\ud558\uace0 \uc7ac\uc0ac\uc6a9\ud558\ub294 \uad6c\uc870\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ucffc\ub9ac\ub97c \uc2e4\ud589\ud560 \ub54c\ub9c8\ub2e4 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5f0\uacb0\uc744 \uc0c8\ub85c \uc0dd\uc131\ud558\uba74 \uc5f0\uacb0 \uc124\uc815\uacfc \ud574\uc81c\uc5d0 \ube44\uc6a9\uc774 \ubc1c\uc0dd\ud55c\ub2e4. \ub3d9\uc2dc \uc694\uccad\uc774 \ub9ce\uc740 \uc11c\ubc84\uc5d0\uc11c\ub294 \uc774\ub7ec\ud55c \ube44\uc6a9\uc774 \ub204\uc801\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Connection Pool\uc740 \uc5f0\uacb0\uc744 \uc77c\uc815 \uac1c\uc218 \uc720\uc9c0\ud558\uace0, \uc694\uccad\uc774 \uc5f0\uacb0\uc744 \ube4c\ub824 \uc0ac\uc6a9\ud55c \ub4a4 \ubc18\ud658\ud558\ub3c4\ub85d \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client Request\n      |\n      v\nApplication Server\n      |\n      v\nConnection Pool\n      |\n      +---- Connection 1\n      +---- Connection 2\n      +---- Connection 3\n      |\n      v\nDatabase<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Node.js\uc640 MySQL \uc608\uc81c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>mysql2\/promise<\/code>\ub97c \uc0ac\uc6a9\ud558\ub294 \uc608\uc81c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import mysql from \"mysql2\/promise\";\n\nconst pool = mysql.createPool({\n  host: process.env.DB_HOST,\n  user: process.env.DB_USER,\n  password: process.env.DB_PASSWORD,\n  database: process.env.DB_NAME,\n\n  waitForConnections: true,\n  connectionLimit: 10,\n  queueLimit: 100\n});\n\nexport async function getUserById(id: number) {\n  const &#91;rows] = await pool.execute(\n    `\n    SELECT id, nickname\n    FROM users\n    WHERE id = ?\n    `,\n    &#91;id]\n  );\n\n  return rows;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>createPool()<\/code>\uc740 \uc5f0\uacb0 \ud480\uc744 \uc0dd\uc131\ud55c\ub2e4. <code>connectionLimit<\/code>\uc740 \uc774 \ud480\uc5d0\uc11c \uc720\uc9c0\ud560 \uc218 \uc788\ub294 \ucd5c\ub300 \uc5f0\uacb0 \uc218\ub97c \uc124\uc815\ud558\uba70, <code>execute()<\/code>\uc758 \ub9e4\uac1c\ubcc0\uc218 \ubc14\uc778\ub529\uc740 \uc0ac\uc6a9\uc790 \uc785\ub825\uc744 SQL \ucf54\ub4dc\uc640 \ubd84\ub9ac\ud574 SQL Injection \uc704\ud5d8\uc744 \uc904\uc774\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc778 \ub2e8\uc77c \ucffc\ub9ac\uc5d0\ub294 \uc704\uc640 \uac19\uc740 \ud480 \uae30\ubc18 \uc2e4\ud589\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4. \uc5ec\ub7ec \ucffc\ub9ac\ub97c \ud558\ub098\uc758 \ud2b8\ub79c\uc7ad\uc158\uc73c\ub85c \ubb36\uc744 \ub54c\ub294 \ub3d9\uc77c\ud55c \uc5f0\uacb0\uc744 \ud655\ubcf4\ud558\uace0 \ubaa8\ub4e0 \uc791\uc5c5\uc744 \ud574\ub2f9 \uc5f0\uacb0\uc5d0\uc11c \uc2e4\ud589\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Connection Pool \uc124\uc815 \uc2dc \uace0\ub824 \uc0ac\ud56d<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc5f0\uacb0 \uc218<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5f0\uacb0 \uc218\uac00 \ub108\ubb34 \uc801\uc73c\uba74 \uc694\uccad\uc774 \ub300\uae30\ud560 \uc218 \uc788\ub2e4. \ub108\ubb34 \ub9ce\uc73c\uba74 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uba54\ubaa8\ub9ac\uc640 \ucc98\ub9ac \uc790\uc6d0\uc744 \uacfc\ub3c4\ud558\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c \uc11c\ubc84 \ud504\ub85c\uc138\uc2a4\uac00 \uc5ec\ub7ec \uac1c\ub77c\uba74 \uc5f0\uacb0 \uc218\uac00 \ud504\ub85c\uc138\uc2a4\ub9c8\ub2e4 \ubcc4\ub3c4\ub85c \uacc4\uc0b0\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ud504\ub85c\uc138\uc2a4\uac00 4\uac1c\uc774\uace0 \uac01 \ud480\uc758 \uc5f0\uacb0 \ud55c\ub3c4\uac00 10\uc774\ub77c\uba74, \ucd5c\ub300 40\uac1c\uc758 \uc5f0\uacb0\uc744 \ub9cc\ub4e4 \uc218 \uc788\ub2e4. \ub2e4\ub978 \uc11c\ube44\uc2a4\uc758 \uc5f0\uacb0\uae4c\uc9c0 \uace0\ub824\ud558\uc5ec \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uc5f0\uacb0 \ud55c\ub3c4\ub97c \uc124\uacc4\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ub300\uae30\uc5f4<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubaa8\ub4e0 \uc5f0\uacb0\uc774 \uc0ac\uc6a9 \uc911\uc774\uba74 \uc0c8 \uc694\uccad\uc740 \ub300\uae30\ud55c\ub2e4. \ub300\uae30 \uc2dc\uac04\uc774 \uc9c0\ub098\uce58\uac8c \uae38\uc5b4\uc9c0\uba74 API \uc751\ub2f5 \uc9c0\uc5f0\uacfc \ud0c0\uc784\uc544\uc6c3\uc73c\ub85c \uc774\uc5b4\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc5f0\uacb0 \ud574\uc81c<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84\ub97c \uc885\ub8cc\ud560 \ub54c\ub294 \ud480\uc744 \uc815\uc0c1\uc801\uc73c\ub85c \uc885\ub8cc\ud558\uc5ec \uc5f0\uacb0\uacfc \uad00\ub828 \uc790\uc6d0\uc744 \uc815\ub9ac\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>await pool.end();<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uc11c\ubc84\uc5d0\uc11c\ub294 \uc9c4\ud589 \uc911\uc778 \uc694\uccad\uc744 \uc815\ub9ac\ud55c \ub4a4 \ud480\uc744 \uc885\ub8cc\ud558\ub3c4\ub85d Graceful Shutdown \uc808\ucc28\uc640 \uc5f0\uacb0\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud2b8\ub79c\uc7ad\uc158<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b8\ub79c\uc7ad\uc158 \ub3c4\uc911 \uc11c\ub85c \ub2e4\ub978 \uc5f0\uacb0\uc744 \uc0ac\uc6a9\ud558\uba74 \ud558\ub098\uc758 \uc6d0\uc790\uc801\uc778 \uc791\uc5c5\uc73c\ub85c \ucc98\ub9ac\ub418\uc9c0 \uc54a\ub294\ub2e4. \ub530\ub77c\uc11c \ud2b8\ub79c\uc7ad\uc158 \uc804\uccb4\ub97c \ub3d9\uc77c\ud55c \uc5f0\uacb0\uc5d0\uc11c \uc2e4\ud589\ud558\uace0, \uc131\uacf5 \uc2dc \ucee4\ubc0b\ud558\uace0 \uc2e4\ud328 \uc2dc \ub864\ubc31\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub9c8\uc774\uadf8\ub808\uc774\uc158(Database Migration)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ub9c8\uc774\uadf8\ub808\uc774\uc158\uc774\ub780?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub9c8\uc774\uadf8\ub808\uc774\uc158\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \uc2a4\ud0a4\ub9c8\ub098 \ub370\uc774\ud130\ub97c \ubc84\uc804\ubcc4 \ubcc0\uacbd \uc0ac\ud56d\uc5d0 \ub530\ub77c \uad00\ub9ac\ud558\ub294 \ubc29\ubc95\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac1c\ubc1c\uc774 \uc9c4\ud589\ub418\uba74 \uc0c8\ub85c\uc6b4 \uceec\ub7fc\uc744 \ucd94\uac00\ud558\uac70\ub098, \ud14c\uc774\ube14\uc744 \ubd84\ub9ac\ud558\uac70\ub098, \uc778\ub371\uc2a4\ub97c \uc0dd\uc131\ud558\ub294 \ub4f1\uc758 \ubcc0\uacbd\uc774 \ubc1c\uc0dd\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub54c \uac1c\ubc1c\uc790\uac00 \uac01 \ud658\uacbd\uc5d0\uc11c SQL\uc744 \uc9c1\uc811 \uc2e4\ud589\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uac1c\ubc1c \ud658\uacbd\uacfc \uc6b4\uc601 \ud658\uacbd\uc758 \uc2a4\ud0a4\ub9c8\uac00 \ub2ec\ub77c\uc9c4\ub2e4.<\/li>\n\n\n\n<li>\uc5b4\ub5a4 \ubcc0\uacbd\uc774 \uc801\uc6a9\ub418\uc5c8\ub294\uc9c0 \ucd94\uc801\ud558\uae30 \uc5b4\ub835\ub2e4.<\/li>\n\n\n\n<li>\ubc30\ud3ec \uacfc\uc815\uc5d0\uc11c SQL \uc2e4\ud589\uc744 \ub204\ub77d\ud560 \uc218 \uc788\ub2e4.<\/li>\n\n\n\n<li>\ubcc0\uacbd \uc21c\uc11c\uac00 \ub2ec\ub77c\uc838 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc624\ub958\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9c8\uc774\uadf8\ub808\uc774\uc158 \ub3c4\uad6c\ub294 \uc774\ub7ec\ud55c \ubcc0\uacbd\uc744 \ubc84\uc804\uc73c\ub85c \uad00\ub9ac\ud558\uace0, \uc801\uc6a9 \uc5ec\ubd80\ub97c \ucd94\uc801\ud558\ub3c4\ub85d \ub3d5\ub294\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 \ub3c4\uad6c\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prisma Migrate<\/li>\n\n\n\n<li>TypeORM Migrations<\/li>\n\n\n\n<li>Knex Migrations<\/li>\n\n\n\n<li>Sequelize Migrations<\/li>\n\n\n\n<li>Flyway<\/li>\n\n\n\n<li>Liquibase<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ub9c8\uc774\uadf8\ub808\uc774\uc158 \uc608\uc81c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\uc874 <code>users<\/code> \ud14c\uc774\ube14\uc5d0 <code>last_login_at<\/code> \uceec\ub7fc\uc744 \ucd94\uac00\ud55c\ub2e4\uace0 \uac00\uc815\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ALTER TABLE users\nADD COLUMN last_login_at TIMESTAMP NULL;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 SQL\uc744 \ub9c8\uc774\uadf8\ub808\uc774\uc158 \ud30c\uc77c\ub85c \uad00\ub9ac\ud558\uba74 \ubcc0\uacbd \ub0b4\uc6a9\uc744 \ucf54\ub4dc\uc640 \ud568\uaed8 \ubc84\uc804 \uad00\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub3c4\uad6c\uc5d0 \ub530\ub77c \ub9c8\uc774\uadf8\ub808\uc774\uc158\uc740 <code>up<\/code>\uacfc <code>down<\/code> \ud615\ud0dc\ub85c \uad6c\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export async function up(queryRunner: QueryRunner) {\n  await queryRunner.query(`\n    ALTER TABLE users\n    ADD COLUMN last_login_at TIMESTAMP NULL\n  `);\n}\n\nexport async function down(queryRunner: QueryRunner) {\n  await queryRunner.query(`\n    ALTER TABLE users\n    DROP COLUMN last_login_at\n  `);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704 \ucf54\ub4dc\ub294 TypeORM\uacfc \uc720\uc0ac\ud55c \ub9c8\uc774\uadf8\ub808\uc774\uc158 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub294 \uc608\uc2dc\ub2e4. \uc2e4\uc81c \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c\ub294 \ud574\ub2f9 ORM\uc758 \ubc84\uc804\uacfc \uc124\uc815\uc5d0 \ub9de\ucdb0 <code>QueryRunner<\/code> \ub4f1\uc744 \uac00\uc838\uc640\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>up<\/code>\uc740 \ubcc0\uacbd\uc744 \uc801\uc6a9\ud558\uace0, <code>down<\/code>\uc740 \ubcc0\uacbd\uc744 \ub418\ub3cc\ub9ac\ub294 \uc5ed\ud560\uc744 \ud55c\ub2e4. \uadf8\ub7ec\ub098 \ubaa8\ub4e0 \ubcc0\uacbd\uc774 \uc548\uc804\ud558\uac8c \ub418\ub3cc\ub9b4 \uc218 \uc788\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4. \uceec\ub7fc \uc0ad\uc81c\ub098 \ub370\uc774\ud130 \ubcc0\ud658\uc73c\ub85c \uc815\ubcf4\uac00 \uc0ac\ub77c\uc84c\ub2e4\uba74 \ub2e8\uc21c\ud788 \ubc18\ub300 SQL\uc744 \uc2e4\ud589\ud558\ub294 \uac83\ub9cc\uc73c\ub85c \uc6d0\uc0c1 \ubcf5\uad6c\ud560 \uc218 \uc5c6\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc548\uc804\ud55c \ubc30\ud3ec \uc804\ub7b5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc6b4\uc601 \ud658\uacbd\uc5d0\uc11c\ub294 \uc2a4\ud0a4\ub9c8 \ubcc0\uacbd\uacfc \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc30\ud3ec\uc758 \uc21c\uc11c\uac00 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc0c8\ub85c\uc6b4 \ud544\uc218 \uceec\ub7fc\uc744 \ucd94\uac00\ud55c\ub2e4\uace0 \uac00\uc815\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\uc874 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ud574\ub2f9 \uceec\ub7fc\uc744 \ubaa8\ub974\ub294 \uc0c1\ud0dc\uc5d0\uc11c \uc989\uc2dc \ud544\uc218 \uceec\ub7fc\uc744 \ucd94\uac00\ud558\uba74 \uae30\uc874 INSERT \ucffc\ub9ac\uac00 \uc2e4\ud328\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ubb38\uc81c\ub97c \uc904\uc774\uae30 \uc704\ud574 \ud655\uc7a5-\uc804\ud658-\ucd95\uc18c(Expand-Migrate-Contract) \uc804\ub7b5\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud655\uc7a5(Expand)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\uc874 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uacfc \ud638\ud658\ub418\ub294 \ud615\ud0dc\ub85c \uceec\ub7fc\uc774\ub098 \ud14c\uc774\ube14\uc744 \ucd94\uac00\ud55c\ub2e4. \ud544\uc694\ud55c \uacbd\uc6b0 nullable \uceec\ub7fc\uc774\ub098 \uae30\ubcf8\uac12\uc744 \uace0\ub824\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc804\ud658(Migrate)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc0c8 \uc2a4\ud0a4\ub9c8\uc640 \ud638\ud658\ub418\ub3c4\ub85d \ubc30\ud3ec\ud558\uace0, \uae30\uc874 \ub370\uc774\ud130\uac00 \uc788\ub2e4\uba74 \ubc31\ud544(Backfill) \uc791\uc5c5\uc744 \uc218\ud589\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ucd95\uc18c(Contract)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\uc874 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ub354 \uc774\uc0c1 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\ub294 \uceec\ub7fc\uc774\ub098 \uad6c\uc870\ub97c \uc81c\uac70\ud55c\ub2e4. \uc774\uc804 \ubc84\uc804\uc758 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc2e4\ud589 \uc911\uc774\uc9c0 \uc54a\uc740\uc9c0 \ud655\uc778\ud55c \ub4a4 \uc9c4\ud589\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ubc29\uc2dd\uc740 \ubb34\uc911\ub2e8 \ubc30\ud3ec\uac00 \ud544\uc694\ud55c \uc11c\ube44\uc2a4\uc5d0\uc11c \ud2b9\ud788 \uc720\uc6a9\ud558\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ub9c8\uc774\uadf8\ub808\uc774\uc158 \uc6b4\uc601 \uc2dc \uc8fc\uc758 \uc0ac\ud56d<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\ubc30\ud3ec \uc804\uc5d0 \ub9c8\uc774\uadf8\ub808\uc774\uc158\uc744 \uac80\uc99d\ud55c\ub2e4.<\/li>\n\n\n\n<li>\ub300\uc6a9\ub7c9 \ud14c\uc774\ube14\uc758 \uc778\ub371\uc2a4 \uc0dd\uc131\uacfc \uceec\ub7fc \ubcc0\uacbd\uc5d0 \ub530\ub978 \uc7a0\uae08 \ubc0f \ubd80\ud558\ub97c \ud655\uc778\ud55c\ub2e4.<\/li>\n\n\n\n<li>\ub9c8\uc774\uadf8\ub808\uc774\uc158 \uc2e4\ud589 \uad8c\ud55c\uacfc \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc77c\ubc18 DB \uad8c\ud55c\uc744 \ubd84\ub9ac\ud558\ub294 \ubc29\uc548\uc744 \uace0\ub824\ud55c\ub2e4.<\/li>\n\n\n\n<li>\uc911\uc694\ud55c \ub370\uc774\ud130 \ubcc0\uacbd\uc740 \ubc31\uc5c5\uacfc \ubcf5\uad6c \uc808\ucc28\ub97c \uc900\ube44\ud55c\ub2e4.<\/li>\n\n\n\n<li>\uc5ec\ub7ec \uc11c\ubc84\uac00 \ub3d9\uc2dc\uc5d0 \ub9c8\uc774\uadf8\ub808\uc774\uc158\uc744 \uc2e4\ud589\ud558\uc9c0 \uc54a\ub3c4\ub85d \uc2e4\ud589 \uc8fc\uccb4\ub97c \ud1b5\uc81c\ud55c\ub2e4.<\/li>\n\n\n\n<li>\ub370\uc774\ud130 \uc190\uc2e4 \uac00\ub2a5\uc131\uc774 \uc788\ub294 \ubcc0\uacbd\uc740 \ub864\ubc31 SQL\ub9cc \ubbff\uc9c0 \ub9d0\uace0 \ubcf5\uad6c \uacc4\ud68d\uc744 \ub9c8\ub828\ud55c\ub2e4.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9c8\uc774\uadf8\ub808\uc774\uc158\uc740 \ub2e8\uc21c\ud788 SQL\uc744 \ubc84\uc804 \uad00\ub9ac\ud558\ub294 \uc791\uc5c5\uc774 \uc544\ub2c8\ub2e4. \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubc84\uc804, \ub370\uc774\ud130 \uc0c1\ud0dc, \ubc30\ud3ec \uc21c\uc11c\uae4c\uc9c0 \ud568\uaed8 \uad00\ub9ac\ud558\ub294 \uc6b4\uc601 \uc808\ucc28\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ubc31\uc5d4\ub4dc \uc11c\ubc84\uc5d0\uc11c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub294 \ub2e8\uc21c\ud788 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\ub294 \uacf5\uac04\uc774 \uc544\ub2c8\ub2e4. \ub370\uc774\ud130\uc758 \ubb34\uacb0\uc131\uc744 \ubcf4\uc7a5\ud558\uace0, \uc5ec\ub7ec \uc694\uccad\uc774 \ub3d9\uc2dc\uc5d0 \ubc1c\uc0dd\ud558\ub294 \uc0c1\ud669\uc744 \uc81c\uc5b4\ud558\uba70, \ud544\uc694\ud55c \ub370\uc774\ud130\ub97c \ud6a8\uc728\uc801\uc73c\ub85c \uc870\ud68c\ud558\ub294 \ud575\uc2ec \uc2dc\uc2a4\ud15c\uc774\ub2e4. \ud2b9\ud788 \uac8c\uc784 \uc11c\ubc84\uc5d0\uc11c\ub294 \uc720\uc800 \uc815\ubcf4, \uc778\ubca4\ud1a0\ub9ac, \uc7ac\ud654, \uacb0\uc81c \ub0b4\uc5ed, \uac8c\uc784 \uc9c4\ud589 \uae30\ub85d \ub4f1 \ub2e4\uc591\ud55c \ub370\uc774\ud130\ub97c \uad00\ub9ac\ud55c\ub2e4. \ub370\uc774\ud130\uc758 \ud2b9\uc131\uacfc \uc911\uc694\ub3c4\uc5d0 \ub530\ub77c \uc801\uc808\ud55c \uc800\uc7a5 \uad6c\uc870\ub97c \uc124\uacc4\ud574\uc57c \ud558\uba70, \uc798\ubabb\ub41c \uc124\uacc4\ub294 \ub370\uc774\ud130 \ubd88\uc77c\uce58, \uc131\ub2a5 \uc800\ud558, \ub3d9\uc2dc\uc131 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2669","post","type-post","status-publish","format-standard","hentry","category-dev-logs"],"_links":{"self":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/2669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2669"}],"version-history":[{"count":1,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/2669\/revisions"}],"predecessor-version":[{"id":2670,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/2669\/revisions\/2670"}],"wp:attachment":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2669"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2669"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}