Data Base

안정태·2021년 5월 20일
0

Study

목록 보기
27/33

💾 Data Base

너무 많이 들어본 단어라서 비전공자라도 이 뜻은 알 것이다.

Data Base : Server가 Client에게 제공할 정보를 저장해둔 곳

이렇게만 이해해도 충분하다. 그렇다면 우리는 여기서 무엇을 더 알아야 하는가?

  • SQL을 통해서 데이터베이스를 다룰 수 있다.
  • 데이터베이스의 종류를 이해하고 적합한 데이터베이스를 적용할 줄 안다.
  • 데이터베이스를 가지고 스프린트를 진행해서 어떻게 사용하는지 배운다.

Data Base의 필요성

In - Memory : Javascript에서 변수를 만들어 저장한다고 해도 프로그램 실행이 끝나는 순간 데이터도 같이 사라진다.

File I/O : 파일로 저장해두고 필요할 때 그걸 읽어오는 형태로 관리
But, 파일을 매번 읽어와야하고 크기가 클 수록 작업이 버거워지는 단점이 있다.

위 와 같은 문제점 혹은 단점들을 보완하고 보다 편리하게 데이터를 저장하기 위해서 필요한 것이 DB이다.

Data Base의 특성

트랜젝션(Transaction) : 여러 작업들을 하나의 유닛으로 묶어준 것, 묶여있는 작업들이 모두 성공해야 완료되고 하나라도 실패하면 작업이 실행되지 않는다. 이러한 특징은 다음과 같다.

  • Atomicity(원자성) : 전부 성공하거나 전부 실패해야 한다.
  • Consistency(일관성) : 트랜젝션 이전과 이후 DB 상태는 이전과 같이 유효해야 한다.
  • Isolation(독립성) : 하나의 트랜젝션은 다른 트랜젝션과 독립적이다.
  • Durability(지속성) : 수행되었다면 성공하든 실패하든 그 기록은 영구적이어야 한다.

🛠 SQL

Structured Query Language 즉, 구조화된 쿼리 언어로 줄여서 SQL이다. 주로 관계형 데이터베이스에서 사용 된다.

Query?

직역하면 '질의문' 으로 정보를 필터하기 위한 질문 이다.

기본 명령어

기본 명령어는 크게 3개의 부류로 나눌 수 있다.

  • DDL : Data Define Language - 데이터 정의어
  • DCL : Data Control Language - 데이터 제어어
  • DML : Data Manipulatin Language - 데이터 조작어

대략적인 사용방법만 정의하고 자세한건 실제 사용하면서 익숙해지면 된다. 지금은 이러게 있다 정도만 알면 될 것 같다.

Data Define Language : CREATE , ALTER, DROP

// CREATE 생성
CREATE DATABASE 데이터베이스_이름;
CREATE TABLE 테이블_이름;
...

// ALTER 업데이트
ALTER TABLE 테이블명 ADD 속성명 데이터_타입; // 새로운 속성 추가시 사용
ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값'];// 특정 속성의 기본값 변경시 사용
ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE]; // 특정 속성 삭제시 사용
...

// DROP 삭제
DROP DATABASE 데이터베이스_이름;
DROP TABLE 테이블_이름;
...

Data Control Language : GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT

Data Manipulatin Language : SELECT, INSERT, DELETE, UPDATE

// SELECT : 검색
SELECT [테이블명.]속성명 [AS 별칭]...
FROM 테이블명
[WHERE 조건];

// INSERT : 삽입
INSERT INTO 테이블명([속성명,...])
VALUES (데이터1, 데이터2, ...);

// DELETE : 삭제
DELETE
FROM 테이블명
[WHERE 조건];
// * DELETE문은 테이블의 구조나 테이블 자체는 남겨둔다. DROP은 테이블을 완전히 제거한다.

// UPDATE : 갱신
UPDATE 테이블명
SET 속성명 = 데이터[, 속성명 = 데이터 ...]
[WHERE 조건];

🧨 스키마

학교 DB 수업시간에도 들었고, 컴활 공부하면서도 들었고, 정보처리기사 필기준비하면서도 들은 개념이지만 어째 볼때마다 새롭다.

DB의 구조와 제약 조건에 관한 전반적인 명세를 기술한 것

🔍 NoSQL 구성

NoSQL(비구조화 쿼리 언어)

  • Key-Value 타입 : 데이터를 Key-Value의 쌍을 속성으로 하는 배열 형태로 저장
  • 문서형 데이터베이스 : 테이블형태가 아닌 문서처럼 저장하는 데이터베이스
  • Wide-Column 데이터베이스 : DB의 열(Column)에 대한 데이터 관리를 집중하는 데이터베이스
  • 그래프 데이터베이스 : 그래프와 비슷한 형식으로 데이터 간의 관계를 구성하는 DB

SQL과의 차이점

  • 데이터의 저장 : SQL은 테이블을 이용하는 반면, NoSQL은 상위 4가지 방식으로 구성된다.
  • 스키마 : SQL은 고정된 형식의 스키마 필요, NoSQL은 보다 동적인 스키마를 가진다.
  • 퀴리 : 데이터 그룹 자체를 조회하는 것에 초점, 구조화되지 않은 언어로도 요청 가능
  • 확장성 : NoSQL은 수평적으로 확장한다. 그래서 비교적 비용이 저렴하다.

각 DB의 사용 케이스

SQL

  • 데이터베이스의 ACID 성질을 준수해야 하는 경우
  • 소프트웨어에 사용되는 데이터가 구조적이고 일관적인 경우

NoSQL

  • 데이터의 구조가 거의 또는 전혀 없는 대용량의 데이터를 저장하는 경우
  • 클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우
  • 빠르게 서비스를 구축하고 데이터 구조를 자주 업데이트 하는 경우
profile
코딩하는 펭귄

0개의 댓글