๋ฐ์ดํฐ๋ฒ ์ด์ค (Database; DB)
- ๋ฐ์ดํฐ๋ฅผ ํตํฉํ์ฌ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ฐ์ดํฐ ์งํฉ์ฒด
- ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์กฐํํ์ฌ ๊ด๋ฆฌํจ์ผ๋ก์จ ๋ฐ์ดํฐ ์ค๋ณต์ ๋ง๊ณ , ํจ์จ์ ์ด๊ณ ๋น ๋ฅธ ๋ฐ์ดํฐ ์ฐ์ฐ์ ๊ฐ๋ฅํ๊ฒ ํจ
DBMS (DataBase Management System)
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ฑ, ๊ด๋ฆฌ, ์กฐ์ํ๋ ์ํํธ์จ์ด ์์คํ
- ๊ด๊ณํ DBMS (RDBMS): MySQL, PostgreSQL, Oracle, Microsoft SQL Server ๋ฑ.
- ๋น๊ด๊ณํ DBMS (NoSQL): MongoDB, Cassandra, Redis ๋ฑ.
SQL (Structured Query Language)
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ์ฐ์ ์์ฒญํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ธ์ด
๋ฐ์ดํฐ๋ฅผ ์์ฑ, ์กฐํ, ์์ , ์ญ์ ๋ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ํํ ์ ์๋ค.
INSERT, SELECT, UPDATE, DELETE, ..
Docker ๊ฐ์
Docker: ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋๋ก ํจํค์งํ์ฌ ์คํํ ์ ์๊ฒ ํ๋ ํ๋ซํผ
- Infrastructure: ๋ฌผ๋ฆฌ์ ์๋ฒ๋ ๊ฐ์ ๋จธ์ ๊ณผ ๊ฐ์ ํ๋์จ์ด ์ธํ๋ผ
- Host Operating System: ์ธํ๋ผ ์์ ์ค์น๋ ์ด์ ์ฒด์
- Docker: ์ด ์ด์ ์ฒด์ ์์์ ๋์ํ๋ ์ปจํ ์ด๋ ๊ด๋ฆฌ ๋๊ตฌ๋ก, ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋๋ก ์คํ
- Containerized Applications: Docker๋ฅผ ํตํด ์ปจํ ์ด๋๋ก ์คํ๋๋ ๊ฐ๋ณ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ ๋๋ค. ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋ฆฝ์ ์ธ ํ๊ฒฝ์์ ์คํ๋๋ฉฐ, ์๋ก ๊ฒฉ๋ฆฌ๋์ด ์๋ค.
mariaDB ์ค์น
๋์ปค์์ mariaDB ์ค์น
- docker pull mariadb
- docker run --name mariadb -d -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=root mariadb
- --name mariadb: ์์ฑ๋ ์ปจํ ์ด๋์ ์ด๋ฆ์ mariadb๋ก ์ง์
- -d: ์ปจํ ์ด๋๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ(Detached mode)
- -p 3306:3306: ํธ์คํธ์ ํฌํธ 3306์ ์ปจํ ์ด๋์ ํฌํธ 3306์ ๋งคํ. -> MariaDB์ ์ธ๋ถ์์ ์ ์ํ ์ ์๋๋ก ํ๋ ์ค์
- --restart=always: Docker ๋ฐ๋ชฌ์ด ์์๋ ๋๋ง๋ค ์ด ์ปจํ ์ด๋๊ฐ ์๋์ผ๋ก ์ฌ์์๋๋๋ก ์ค์
- -e MYSQL_ROOT_PASSWORD=root: MariaDB์ root ์ฌ์ฉ์์ ๋น๋ฐ๋ฒํธ๋ฅผ root๋ก ์ค์
- mariadb: ์ฌ์ฉํ๋ ค๋ ์ด๋ฏธ์ง ์ด๋ฆ. ์ด ๊ฒฝ์ฐ ์ด์ ๋จ๊ณ์์ ๋ค์ด๋ก๋ํ mariadb ์ด๋ฏธ์ง
์ ์
- mariadb๊ฐ ์๋ ์ปจํ
์ด๋ ์ ์: docker exec -it mariadb /bin/bash
- docker exec: ์คํ ์ค์ธ ์ปจํ ์ด๋์์ ๋ช ๋ น์ด๋ฅผ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ๋ช ๋ น์ด
- -it: ์ธํฐ๋ํฐ๋ธ ๋ชจ๋๋ก ํฐ๋ฏธ๋์ ์ฐ๊ฒฐํ์ฌ, stdin๊ณผ stdout์ ํ์ฑํ. ์ฆ, ์ฌ์ฉ์์ ์ปจํ ์ด๋ ๊ฐ์ ํฐ๋ฏธ๋ ์ธ์ ์ ์์ฑ
- mariadb: ๋ช ๋ น์ด๋ฅผ ์คํํ ๋์ ์ปจํ ์ด๋์ ์ด๋ฆ
- /bin/bash: ์ปจํ ์ด๋ ๋ด๋ถ์์ ์คํํ ๋ช ๋ น์ด. ์ฌ๊ธฐ์๋ Bash ์ ธ์ ์คํํ์ฌ ์ปจํ ์ด๋์ ๋ช ๋ น์ค์ ์ ๊ทผ
- mariadb ์คํ: mysql -u root -p (mariadb -u root -p)
- mysql: MariaDB ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๋ช ๋ น์ด
- -u root: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ ์ฌ์ฉ์๋ฅผ ์ง์ . ์ฌ๊ธฐ์๋ root ์ฌ์ฉ์ ์ง์
- -p: ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ๋ผ๋ ํ๋กฌํํธ๋ฅผ ํ์. ์ดํ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํด์ผ MariaDB์ ์ ์ํ ์ ์๋ค.
ํ๋ํ๋์ ๋ฐฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๊ณ ๋ถ๋ฅธ๋ค!
SHOW DATABASES;
CREATE DATABASE Tennis;
Use Tennis;
; ์ธ๋ฏธ์ฝ๋ก ์ ๊ผญ ์ฐ์ด์ผ ์ฟผ๋ฆฌ๊ฐ ๋๋ฌ๋ค๋ ๋ป์ด๋ค. ์์ง ๋ง์!
- ํ ์ด๋ธ ๋ฐ์ดํฐ ์กฐํ: SELECT ์ปฌ๋ผ๋ช FROM ํ ์ด๋ธ๋ช ;
- ํ ์ด๋ธ ๋ฐ์ดํฐ ์ฝ์ : INSERT ์ปฌ๋ผ๋ช 1, ์ปฌ๋ผ๋ช 2, ... INTO ํ ์ด๋ธ๋ช VALUES (์ปฌ๋ผ1 ๋ฐ์ดํฐ, ์ปฌ๋ผ2 ๋ฐ์ดํฐ, ...);
id | name | pwd |
solCoding | kim sol | aaaa |
tennisking | park sol | bbbb |
programmer | song sol | cccc |
SELECT id, name, pwd FROM member;
MariaDB [Tennis]> SELECT * FROM member;
ํน์ ๋ฐ์ดํฐ ์กฐํ: SELECT ์ปฌ๋ผ๋ช FROM ํ ์ด๋ธ๋ช WHERE ์กฐ๊ฑด;
ํ ์ด๋ธ ๋ฐ์ดํฐ ์์ : UPDATE ํ ์ด๋ธ๋ช SET ์ปฌ๋ผ๋ช = ์์ ํ ๊ฐ WHERE ์กฐ๊ฑด;
ํ ์ด๋ธ ๋ฐ์ดํฐ ์ญ์ : DELETE FROM ํ ์ด๋ธ๋ช WHERE ์กฐ๊ฑด;
์์ , ์ญ์ ํ ๋ WHERE์ ์ ์ ์ธํ๋ฉด ํ ์ด๋ธ ๋ฐ์ดํฐ ์ ์ฒด์ ์ ์ฉ๋๋ฏ๋ก ์ฃผ์ํ์.
Node.js์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋
ํ๋ก์ ํธ ๋ฃจํธ์ npm install mysql --save
๋ฃจํธ์ database ํด๋ / connect ํด๋ / mariadb.js ์์ฑ
const mariadb = require("mysql");
const conn = mariadb.createConnection({
host: "localhost",
port: 3306,
user: "root",
password: "root",
database: "Tennis",
});
module.exports = conn;
index.js์ mariadb connect ์ถ๊ฐ
let server = require("./server");
let router = require("./router");
let requestHandler = require("./requestHandler");
const mariadb = require("./database/connect/mariadb");
mariadb.connect();
server.start(router.route, requestHandler.handle);
requestHandler.js
const mariadb = require("./database/connect/mariadb");
function main(response) {
console.log("main");
mariadb.query("SELECT * FROM product", function (err, rows) {
console.log(rows);
});
main ์ผ ๋ query ๋ ๋ ค์ ๊ฐ์ ธ์ค๋ฉด
์ด๋ ๊ฒ ๊ฐ์ ธ์ฌ ์ ์๋ค!