[SQL] MySQL (SQL, NoSQL, ORM)

MINEW·2022년 12월 12일
0

SQL vs NoSQL

  1. 데이터베이스
    - 일정한 체계 속에 저장된, 데이터의 집합 (데이터를 모아둔 공간)
    - 데이터는 데이터베이스 안에서, 테이블(표)이라는 단위로 저장됩니다.
    - 하나의 데이터베이스 안에는, 여러 개의 테이블이 존재할 수 있습니다.
    - 예를들어, 회원 정보는 Member 테이블에, 상품 정보는 Item 테이블에, 주문 정보는 Order 테이블에 저장될 수 있습니다.
    - 이렇게 관련 있는 정보를 하나의 테이블에 저장하고, 여러 테이블들을 두게되면, 많은 데이터를 체계적으로 저장할 수 있습니다.
    - 참고: DB는 데이터베이스(Database)의 줄임말입니다.

  2. DBMS (데이터베이스 관리 시스템)
    - 데이터베이스를 관리하기위해 사용하는 프로그램
    - 사용자 -> DBMS를 사용해서 -> 데이터베이스를 관리
    - 모든 DBMS는, SQL이라는 데이터베이스 전용 언어로 명령을 내리면, 원하는 데이터베이스 작업을 수행할 수 있습니다.
    - 즉, 데이터베이스를 다루기 위해서는, DBMS라는 프로그램을 사용해야하고, DBMS는 결국 SQL이라고 하는 언어로 조작해야 합니다.
    - 참고: DBMS는 Database Management System의 줄임말입니다.

  3. SQL
    - 규칙이 엄격합니다.
    - 역사가 깊어서 안정적입니다.
    - SQL은 데이터베이스를 관리하기 위한 목적의 '프로그래밍 언어'입니다.
    - 데이터베이스란 데이터를 모아둔 공간을 의미하는데, 프로그래머들은 SQL을 사용해서 데이터베이스를 설계하거나 운영하고 관리합니다.
    - 요즘에는 데이터가 워낙 많이 활용되기 때문에, 개발자 뿐 아니라 마케터나 데이터 분석가들이 SQL을 사용하여 서비스의 데이터(매출, 고객 정보 등)를 분석합니다.
    - 참고: SQL은 Structured Query Language의 줄임말입니다.

  4. NoSQL
    - 유연하고 간편합니다.
    - 비교적 최근에 생긴 방식입니다.
    - 참고: 현재까지는 SQL을 더 많이 쓰고 있지만, 두 가지를 같이 쓰는 곳도 있습니다.

MySQL

  1. MySQL 이란?
    - MySQL은 DBMS로, 많은 회사들이 활발하게 쓰고 있습니다. (페이스북, 유튜브 등)
    - 클라이언트 프로그램을 이용해서 -> 서버 프로그램에 접속한 후 -> 서버 프로그램에서 데이터베이스 관련 작업을 직접 처리합니다.

  2. MySQL 설치 방법

  • MySQL
    - MySQL 사이트에 들어가서 수동으로 설치해야 합니다.

  • MySQL Workbench
    - MySQL 사이트에 들어가서 수동으로 설치해야 합니다.
    - GUI로 데이터베이스 다루기
    - 주의: 8.0.22 버전을 다운로드 해야합니다. (그 외 버전은 csv 파일을 import 할 때, Error 발생)

  1. 클라이언트 객체
  • 클라이언트 객체 란?
    - SQL을 데이터베이스 서버에 전달해서, 원하는 작업을 처리하고 그 결과를 받아오는 객체입니다.
    - 이때, 데이터베이스의 종류에 맞는 클라이언트 객체를 사용해야 합니다.
    - 지금은, MySQL 데이터베이스를 다룰 때 쓰는 클라이언트 객체를 사용해야 하기 때문에, mysql2 라는 패키지에 있는 클라이언트 객체를 사용해야 합니다.
    - mysql2는 mysql을 npm으로 설치하는 것이 아닌, sequelize와 연동하기 위해 설치하는 것 입니다.
    - 설치 방법: npm i mysql2

  • 클라이언트 객체를 사용하는 방법 (2가지)
    - 첫 번째 방법은, 직접 작성한 SQL문을 -> 클라이언트 객체를 통해서 -> DBMS로 전송하는 방법이 있습니다.
    - 두 번째 방법은, 자바스크립트로 작성한 데이터베이스 관련 코드를 -> ORM이라는 기술을 통해서, 자동으로 SQL문으로 변환시켜서, 클라이언트 객체를 통해 -> DBMS로 전송하는 방법이 있습니다.
    - 단, 2가지 방법 모두 항상 클라이언트 패키지가 필요합니다.

ORM 패키지 (sequelize)

  1. ORM 이란?
    - 데이터베이스와 데이터베이스 테이블을 프로그래밍 할 때와 같이 객체처럼 사용할 수 있게 해주는 방식입니다.
    - 직접 SQL문을 날리지 않아도, 객체 형태로 데이터베이스에 접근해 객체를 추가, 수정, 삭제 등을 가능하게 해줍니다.
    - SQL을 사용하는 대신, 자바스크립트 코드로 데이터베이스를 사용할 수 있게 만들어줍니다.
    - 물론, raw SQL문을 삽입해서 사용할 수도 있습니다.
    - Node.js에서 사용할 수 있는 ORM 패키지는 여러 종류가 있습니다. (그 중 하나가 sequelize 입니다)
    - 설치 방법: npm i mysql2 sequelize sequelize-cli
  1. 장점
    - 개발자의 의도가 명확히 보이는 메서드를 사용합니다.
    - 유지보수가 편리하고 가독성이 높습니다. 한 줄의 SQL문으로 작성하는 대신, 동작을 나눠서 코드를 완성할 수 있습니다.

  2. 단점
    - 서브 쿼리, 조인 등 특정 작업을 할 때, SQL문과 비교해 제공하는 방식이 제한적입니다. (ORM이 정해놓은 명령만 사용할 수 있습니다)
    - 프로젝트가 커질수록, SQL문을 사용하는 것이 더 간단하고 직관적일 수 있습니다.

profile
JS, TS, React, Vue, Node.js, Express, SQL 공부한 내용을 기록하는 장소입니다

0개의 댓글