관계형 데이터베이스 (1)

강호수·2022년 10월 6일
0

SQL

데이터베이스 관련 명령어

  • create database 데이터베이스_이름
    -> 데이터베이스 생성

  • use 데이터베이스_이름
    -> 데이터베이스 사용

  • create table user ( ~~~ );
    -> user 테이블 생성

  • describe user
    -> user 테이블 정보 확인

SQL 명령어

  • SELECT
    -> 데이터셋에 포함될 특성을 특정

  • FROM
    -> 결과를 도출해낼 데이터베이스 테이블을 명시
    ex) SELECT ~ FROM ~

  • WHERE
    -> 필터 역할을 하는 쿼리문
    ex) SELECT ~ FROM ~ WHERE a = "특정 값"

  • ORDER BY
    -> 어떤 기준으로 정렬하여 출력할지 결정
    ex) SELECT ~ FROM ~ ORDER BY 특성1 desc

  • LIMIT
    -> 출력할 데이터 갯수 정한다
    ex) ~~~ LIMIT 200

  • DISTINCT
    -> 유니크한 값을 받고 싶을 때에 쓴다
    ex) SELECT DISTINCT ~~ FROM ~~

  • INNER JOIN
    ex) SELECT ~ FROM ~ JOIN ~ ON 테이블1.a = 테이블2.a

ACID

우선 트랜잭션이란 여러개의 작업을 하나로 묶은 실행 유닛이다. 만약 하나의 트랜잭션에 속해있는 여러 작업 중에서 하나라도 실패한다면 이 때 모든 작업을 실패한 것으로 판단한다. 이 때 ACID는 데이터베이스 내에서 일어나는 하나의 트랜잭션의 안정성을 보장하기 위해 필요한 성질이다.

Atomicity (원자성)

특정 쿼리를 실행 하였을 때 부분적으로 실패하게 된다면, 전부 실패하도록 구현되어 있다.

Consistency (일관성)

하나의 트랜잭션 이후에 데이터베이스의 상태는 이전과 같아야한다. 예를 들어 하나의 제약이 있다고 하면 그 제약은 끝까지 지켜져야 하고, 트랜잭션이 끝나더라도 지켜져야한다.

Isolation (고립성)

모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 한다. 예를들어 두개의 계좌가 있다고 하였을 때 각 계좌가 연동되어 있을 수는 없는 것처럼 말이다.

Durability (지속성)

트랜잭션이 성공적으로 수행되었다면, 해당 트랜잭션에 대한 로그는 남아있어야한다. 만약 성공적으로 수행하고 로그가 남지 않은 채 오류가 나서 전송이 안되면 아직 실행이 안되었다 해석되고 다시 같은 작업이 반복될 수도 있다.

SQL vs NoSQL

SQL

관계형 데이터베이스는 SQL을 기반으로 한다. 이는 행,열로 구성된 테이블에 데이터를 저장한다. 특정한 형식을 지키기 때문에 이는 데이터를 정확히 입력했다면 사용할 때에는 매우 수월해진다.
ACID 성질을 준수해야 하는 경우에는 SQL을 많이 쓴다. 예를 들어 금융 서비스같은 곳에서는 무조건적으로 필요하다. 또한 소프트웨어에 사용되는 데이터가 구조적이고 일관적인 경우에는 이것이 더 편하다.

NoSQL

Key-Value타입, 문서형 데이터베이스, Wide-Column 데이터베이스, Graph 데이터베이스 같은 형식을 따른다. 이는 비관계형 데이터베이스이다.
데이터의 구조가 거의 없는 대용량 데이터를 저장하는 경우에 NoSQL이 쓰기 좋다. 그리고 클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우, 잦은 업데이트가 있는 경우 또한 이것이 더 나을 것이다.

0개의 댓글