Nodejs Mysql ๊ณผ Serialize
๋ค์ด๊ฐ๋ฉด์
MySQL์ ์ธ๊ณ์์ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ์คํ ์์ค์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ด๋ค. MariaDB๋ ์คํ ์์ค์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ด๋ค. MySQL๊ณผ ๋์ผํ ์์ค ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, GPL v2 ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฅธ๋ค. ์ค๋ผํด ์์ ์ ํ์ฌ ๋ถํ์คํ MySQL์ ๋ผ์ด์ ์ค ์ํ์ ๋ฐ๋ฐํ์ฌ ๋ง๋ค์ด์ก์ผ๋ฉฐ, ๋ฐฐํฌ์๋ ๋ชฌํฐ ํ๋ก๊ทธ๋จ AB์ ์ ์๊ถ์ ๊ณต์ ํด์ผ ํ๋ค. ๋ง๋ฆฌ์DB๋ MySQL๊ณผ ์์ค์ฝ๋๋ฅผ ๊ฐ์ด ํ๋ฏ๋ก ์ฌ์ฉ๋ฐฉ๋ฒ๊ณผ ๊ตฌ์กฐ๊ฐ MySQL๊ณผ ๋์ผํ๋ค. ๊ทผ๋ณธ์ ์ผ๋ก ์ค๋ผํด์์ ์์ ๋กญ๋ค.
MySQL Setting
mysql> CREATE DATABASE MY_DB;
Query OK, 1 row affected (0.01 sec)
mysql> use my_db;
Database changed
mysql> create table users(
-> id varchar(45) not null,
-> password varchar(45) not null,
-> primary key (id));
Query OK, 0 rows affected (0.01 sec)
mysql> Insert into Users(id, password) values ('song','1234');
Query OK, 1 row affected (0.01 sec)
mysql> select * from users;
+------+----------+
| id | password |
+------+----------+
| song | 1234 |
+------+----------+
1 row in set (0.00 sec)Node JS
Nodejs ๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ํ๋ซํผ. ๋ ธ๋์์ ์ผ์ด๋๋ ๋ชจ๋ ์ผ์ ์ด๋ค ์ด๋ฒคํธ์ ๋ํ ๋ฐ์. ๋ชจ๋ ์ผ๋ จ์ ์ฝ๋ฐฑ์ด๋ค. libuv๋ผ๋ ์ถ์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ฒคํธ ๋ฃจํ ๊ธฐ๋ฅ์ ์ ๊ณต. ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ์ค๋ ๋๋ ๋จ ํ๋, ์ด ์ค๋ ๋๊ฐ ๋ฐ๋ก ์ด๋ฒคํธ ๋ฃจํ๊ฐ ์คํ๋๋ ์ค๋ ๋.
๋ชจ๋ CPU ํ์ฉ
Node.js ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฑ๊ธ ์ค๋ ๋๋ก ์๋ํฉ๋๋ค. ๋ฉํฐ์ฝ์ด ํ๊ฒฝ์์ 1๊ฐ์ Node.js ์ดํ๋ฆฌ์ผ์ด์ ์ ํจ์จ์ ์ผ๋ก ์๋ํ์ง ์์ต๋๋ค. ๋ญ๋น๋๋ CPU๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. Cluster Module์ ์ฌ์ฉํ๋ฉด, CPU ๋ง๋ค child ํ๋ก์ธ์ค๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๊ฐ๊ฐ์ child ํ๋ก์ธ์ค๋ ๊ฐ์ ์์ ๋ง์ ์ด๋ฒคํธ๋ฃจํ๊ฐ ์กด์ฌํ๊ณ master ํ๋ก์ธ์ค๋ ๋ชจ๋ ์์๋ค์๊ฒ ์์ฒญ์ ๋ถ์ฐ์์ผ ์ค๋๋ค.
์ค๋ ๋ ํ ์กฐ์
์์ ์ธ๊ธํ๋ฏ์ด, libuv๋ ์ค๋ ๋ 4๊ฐ๋ก ์ค๋ ๋ ํ์ ์์ฑํฉ๋๋ค. ์ค๋ ๋ ํ์ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ UV_THREADPOOL_SIZE ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํด์ ์์ ํ ์ ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ I/O ์์
์ด ๋ง์ ์ดํ๋ฆฌ์ผ์ด์
์์ ๋์์ด ๋ ์ ์๊ฒ ์ง๋ง, ํฐ ์ค๋ ๋ ํ์ ๋ฉ๋ชจ๋ฆฌ๋ CPU๋ฅผ ๊ณ ๊ฐ์ํฌ ์ ์์์ ๊ธฐ์ตํด์ผ ํฉ๋๋ค.
์์
์ ๋ค๋ฅธ์๋น์ค์ ๋งก๊ธฐ๊ธฐ
๋ง์ฝ Node.js๊ฐ CPU์ฌ์ฉ์ด ๊ณผ๋ํ๊ฒ ํ์ํ ์์ ์์ ์ฌ์ฉ๋๋ค๋ฉด, ์ด ํน์ ์์ ์ ๋ ์๋ง๋ ๋ค๋ฅธ ์ธ์ด๋ฅผ ์ ํํด์ ๊ทธ ์ชฝ์ผ๋ก ์ฒ๋ฆฌ๋ฅผ ์ฎ๊ฒจ ์์ ๋์ ์ค์ด๋ ๊ฒ์ด ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ผ ์ ์์ต๋๋ค.
package.json์ ํ๋ก์ ํธ ์ ๋ณด์ ์์กด์ฑ(dependencies)์ ๊ด๋ฆฌํ๋ ๋ฌธ์
์ด๋ฏธ ์์ฑ๋ package.json ๋ฌธ์๋ ์ด๋ ๊ณณ์์๋ ๋์ผํ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์๊ฒ ํด์ค๋ค.
JSON ํฌ๋งท์ผ๋ก ์์ฑํด์ผ ํ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ์ต์
๋ค์ด ์ถ๊ฐ๋ ์ ์์ต๋๋ค.
package name
version
description
entry point
test command
git repository
keywords
author
license

ํ
์คํธ ์ฝ๋ ์์ฑ ํ npm test ์คํ
NodeJS์ MySQL ์ฐ๋
createConnection ๋ฉ์๋์ ์ธ์๋ก ์ ๋ฌ๋๋ ๊ฐ์ฒด์ ์์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ณด(์ ์ ๋ช ๊ณผ ํจ์ค์๋ ๋ฑ)์ ์ ๋ ฅํด์ผํ๋ค.
Mysql ์ฐ๋ ํ์ธ
Nodejs ์น์๋ฒ
Express vs Koa
Express ๋ง๋ ํ์ด 2016๋ ์ Koa๋ฅผ ๋ง๋ฌ
Express๋ ๋ผ๋๋ก ์ค์น๋๋ ๋ชจ๋์ด ๋ง๊ณ , ๋ฏธ๋ค์จ์ด๋ฅผ ๋ถ์ผ ๋ ๊ผญ Express ๊ธฐ๋ฐ
Koa๋ ๋ผ๋๋ก ์ค์น๋๋ ๋ชจ๋์ด ์ ๊ณ , ์ปค์คํฐ๋ง์ด์ง์ด ์์ ๋กญ๋ค.
Koa๋ ํ์์ด ES6, Async/Await์ ์ง์
Express๋ community๊ฐ ๊ฐ
Express
Koa
Middleware
Express
Koa
Express
Express๋ ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ผ๋ จ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฐ๊ฒฐํ๊ณ ์ ์ฐํ Node.js ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ.
require๋ nodeJS์์ ๋ค๋ฅธ ํจํค์ง๋ฅผ ๋ถ๋ฌ์ฌ ๋ ์ฌ์ฉ๋๋ ํค์๋. NODE_PATH ํ๊ฒฝ ๋ณ์์ ์ค์ ํ ์์น์์ express๋ผ๋ ๋ชจ๋์ ์ฐพ๋๋ค.
app์ด๋ผ๋ ๋ณ์์ express ํจ์์ ๋ฐํ๊ฐ์ ์ ์ฅ / REST End Point ์์ฑ
Process.env๋ nodejs์์ ํ๊ฒฝ ๋ณ์๋ฅผ ๊ฐ์ ธ์ฌ๋ ์ฌ์ฉ๋จ, ํ์ฌ default๋ 3000
app.get / get ์์ฒญ์ผ๋ก ์ ์ ์๋ํฌ์ธํธ๋ฅผ ์์ฑ
์๋ํฌ์ธํธ ์์ฑ์ ํ๋ผ๋ฏธํฐ๋ ๋๊ฐ์ง๋ฅผ ๋ฐ๋๋ฐ, ์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ URL ์ ์, ๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ ํด๋น url์์ ์ํํ ์์ ๋ฐ ์๋ต์ ์ ์
req(์์ฒญ)/ res(์๋ต)

POST Insert ๊ตฌ๋ฌธ ์ถ๊ฐ

Sequelize
ORM์ด๋ ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ๋งคํ(์ฐ๊ฒฐ)ํด์ฃผ๋ ๊ฒ์ ๋งํ๋ค. ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ณ , ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ ์ด๋ธ์ ์ฌ์ฉํ๋ค. ์ฆ ์ฌ๊ธฐ์ Sequelize๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฆด๋ ์ด์ ์ ๋งคํํด์ฃผ๋ ์ ์ฉํ ๋๊ตฌ๋ผ๋ ์๋ฏธ์ด๋ค! ์๋ฐ์คํฌ๋ฆฝํธ ๊ตฌ๋ฌธ์ ์์์ SQL๋ฌธ์ผ๋ก ๋ณ๊ฒฝํด์ค๋ค.
config/config.json
DB ์ฐ๊ฒฐ ๊ด๋ จ config ์ ๋ณด๋ ๋ชจ๋ config.json์์ ๊ด๋ฆฌํ๋ค.
Sequelize DB Create
Sequelize-cli๋ฅผ ์ด์ฉํด์ DB๋ฅผ ์์ฑํ๊ณ ์กฐ์ํ ์ ์์
Table ์์ฑ
Sequelize๋ฅผ ์ด์ฉํ์ฌ DDL์ ์๋์ ๊ฐ์ด ์์ฑํ ์ ์๋ค. (์ฃผ์ํด์ผํ ์ ์, --attribute๋ค์ ์ปฌ๋ผ์ ์ฝค๋ง๋ก ๊ตฌ๋ถํ๋ค.๋์ด์ฐ๊ธฐ์์ด)
model ํ์ผ๊ณผ, migration ํ์ผ์ด ์์ฑ
์์ฑํ Models์ /models ํด๋ ์์ ์ ์ฅ๋๊ณ , migrations๋ /migrations ํด๋ ์์ ์ ์ฅ๋๋ค. Migrationsํ์ผ ์์ ๋ถ์ ์ซ์๋ ์๊ฐ์ ๋ํ ์ ๋ณด๋ก sequelize๋ ์ด๋ฅผ ์ธ์ํด ์ด๋ค ๋ง์ด๊ทธ๋ ์
์ด ๋จผ์ ์ด๊ณ , ์ด๋ค ์์๋ก ์์ฑ๋์ด์ผ ํ ์ง์ ๋ํด ํ๋จํ๋ค. (์ง๊ธ์ ๋ณ๋ก ์ค์ํ์ง ์์ง๋ง, ๋์ฃผ์ฅ columns๊ณผ tables๋ฅผ ์ถ๊ฐํ ๋ ์ค์)
Last updated
Was this helpful?