데이터베이스
- 일정한 체계 속에 저장된, 데이터의 집합 (데이터를 모아둔 공간)
- 데이터는 데이터베이스 안에서, 테이블(표)이라는 단위로 저장됩니다.
- 하나의 데이터베이스 안에는, 여러 개의 테이블이 존재할 수 있습니다.
- 예를들어, 회원 정보는 Member 테이블에, 상품 정보는 Item 테이블에, 주문 정보는 Order 테이블에 저장될 수 있습니다.
- 이렇게 관련 있는 정보를 하나의 테이블에 저장하고, 여러 테이블들을 두게되면, 많은 데이터를 체계적으로 저장할 수 있습니다.
- 참고: DB는 데이터베이스(Database)의 줄임말입니다.
DBMS (데이터베이스 관리 시스템)
- 데이터베이스를 관리하기위해 사용하는 프로그램
- 사용자 -> DBMS를 사용해서 -> 데이터베이스를 관리
- 모든 DBMS는, SQL이라는 데이터베이스 전용 언어로 명령을 내리면, 원하는 데이터베이스 작업을 수행할 수 있습니다.
- 즉, 데이터베이스를 다루기 위해서는, DBMS라는 프로그램을 사용해야하고, DBMS는 결국 SQL이라고 하는 언어로 조작해야 합니다.
- 참고: DBMS는 Database Management System의 줄임말입니다.
SQL
- 규칙이 엄격합니다.
- 역사가 깊어서 안정적입니다.
- SQL은 데이터베이스를 관리하기 위한 목적의 '프로그래밍 언어'입니다.
- 데이터베이스란 데이터를 모아둔 공간을 의미하는데, 프로그래머들은 SQL을 사용해서 데이터베이스를 설계하거나 운영하고 관리합니다.
- 요즘에는 데이터가 워낙 많이 활용되기 때문에, 개발자 뿐 아니라 마케터나 데이터 분석가들이 SQL을 사용하여 서비스의 데이터(매출, 고객 정보 등)를 분석합니다.
- 참고: SQL은 Structured Query Language의 줄임말입니다.
NoSQL
- 유연하고 간편합니다.
- 비교적 최근에 생긴 방식입니다.
- 참고: 현재까지는 SQL을 더 많이 쓰고 있지만, 두 가지를 같이 쓰는 곳도 있습니다.
MySQL 이란?
- MySQL은 DBMS로, 많은 회사들이 활발하게 쓰고 있습니다. (페이스북, 유튜브 등)
- 클라이언트 프로그램을 이용해서 -> 서버 프로그램에 접속한 후 -> 서버 프로그램에서 데이터베이스 관련 작업을 직접 처리합니다.
MySQL 설치 방법
MySQL
- MySQL 사이트에 들어가서 수동으로 설치해야 합니다.
MySQL Workbench
- MySQL 사이트에 들어가서 수동으로 설치해야 합니다.
- GUI로 데이터베이스 다루기
- 주의: 8.0.22 버전을 다운로드 해야합니다. (그 외 버전은 csv 파일을 import 할 때, Error 발생)
클라이언트 객체 란?
- SQL을 데이터베이스 서버에 전달해서, 원하는 작업을 처리하고 그 결과를 받아오는 객체입니다.
- 이때, 데이터베이스의 종류에 맞는 클라이언트 객체를 사용해야 합니다.
- 지금은, MySQL 데이터베이스를 다룰 때 쓰는 클라이언트 객체를 사용해야 하기 때문에, mysql2 라는 패키지에 있는 클라이언트 객체를 사용해야 합니다.
- mysql2는 mysql을 npm으로 설치하는 것이 아닌, sequelize와 연동하기 위해 설치하는 것 입니다.
- 설치 방법: npm i mysql2
클라이언트 객체를 사용하는 방법 (2가지)
- 첫 번째 방법은, 직접 작성한 SQL문을 -> 클라이언트 객체를 통해서 -> DBMS로 전송하는 방법이 있습니다.
- 두 번째 방법은, 자바스크립트로 작성한 데이터베이스 관련 코드를 -> ORM이라는 기술을 통해서, 자동으로 SQL문으로 변환시켜서, 클라이언트 객체를 통해 -> DBMS로 전송하는 방법이 있습니다.
- 단, 2가지 방법 모두 항상 클라이언트 패키지가 필요합니다.
장점
- 개발자의 의도가 명확히 보이는 메서드를 사용합니다.
- 유지보수가 편리하고 가독성이 높습니다. 한 줄의 SQL문으로 작성하는 대신, 동작을 나눠서 코드를 완성할 수 있습니다.
단점
- 서브 쿼리, 조인 등 특정 작업을 할 때, SQL문과 비교해 제공하는 방식이 제한적입니다. (ORM이 정해놓은 명령만 사용할 수 있습니다)
- 프로젝트가 커질수록, SQL문을 사용하는 것이 더 간단하고 직관적일 수 있습니다.