< DataBase > - 의미있고 연관된 데이터 모음 집합체
1. Data 영구적 보관 가능
2. 미리 약속된 Data 저장규칙 => 그 룰만 알면 된다.
ex. name - String/3글자까지/null
3. 한번에 여러 프로그램이 동시접근 가능 ( 공유 )
< DB /DBMS >
DB - 데이터 저장 공간 자체
DBMS - 데이터 저장/삭제/크기지정/타입지정 등
=> DB 관리 역할을 해주는 프로그램
(ex. ORACLE/ MySQL 은 DBMS 다. )
< DBMS 종류 >
계층형 구조 DBMS
네트워크형 구조 DBMS
-------------------- Deprecated ------------------
1. RDBMS (관계형 DBMS) (Relational DBMS - RDB 라고도 불린다)
=> 데이터를 행과 열의 테이블 구조로 표현하는 것
SQL(90%) - mysql, postgresql, sqlite - 대부분 사용(회사,정부기관,은행)
- Table / Row Column ( 정돈됨 / 엄격함 )
2. Non-RDB => Non-SQL(10%) ( Not only SQL 의미 )
(1) Document DB - MongoDB
- data를 JSON document 형태로 저장 ( Table (X) )
- 어떤 type, 어떤 종류의 Data 든지 다 저장 가능 ( 자유 ) / 정돈되지 않음
(2) Key-Value DB
[a] Cassandra DB => column wide DB
읽고 쓰기 개빠름
많은양의 data 저장 ->많은 data에서 빠르게 읽어와야할 때 (Apple/netflix/insta 등등 data 저장하는데 씀)
검색엔진에도 적절 (빠르게 읽어옴)
[b] Dynamo DB => Serverless / distributed key-value DB (분산된) / 아마존이 만든 DB
언어학습앱 - 매초 2400개 읽어오기 가능
어떤작업(읽기, 쓰기 등) 할건지, 미리 고려해서 사용해야 함 (제한적) - SQL 사용할 수 없으므로
(3) Graph DB (관계망 DB)
- column 이나 document 같은거 필요 없을 때 사용
- 그러나 각 node 들 사이의 관계를 알아야 할 때 사용
- facebook 등에 사용 - 각각의 entity 저장 -> 관계망으로 연결
=> 대부분(90%) SQL 로 커버가 가능하다.
- 근데 SQL 잘 모르는 이유?
=> ORM ( Object Relational Mapping )
: 파이썬 코드를 자동으로 SQL 코드로 바꿔줌 (장고 ORM)
Node.js <-------------------- (type ORM / Sequelize)
- ORM 문제발생하거나 한계 있을때 직접 SQL 써야함
=> SQL 원리와 개념 익혀두어야 한다!
< SQL 종류 >
DB님과 대화하기 위한 언어 SQL.
SQL은 용도에 따라 종류가 나뉜다.
1. DDL (Data Definition Language) - 데이터베이스를 정의하는 언어 ( 스케일이 크다. 테이블 전체를 가지고 논다. )
DB 데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할
create : 데이터베이스, 테이블등을 생성
drop : 데이터베이스, 테이블을 삭제
alter : 테이블을 수정
truncate : 테이블을 초기화
- 데이터 베이스 관리자(DBA) 나 데이터베이스 설계자가 사용
- ROOT 계정관리자만 가능
- DDL 은 트랜잭션을 발생시키지 않는다.
=> ROLLBACK 이나 COMMIT(완전적용) 이 존재하지 않는다.
=> DDL 문은 실행 즉시적용된다.
" 되돌릴 수 없어! 제대로 두번 세번 확인하고 해! "
2. DML (Data Manipulation Language) - 데이터 조작어 ( 스케일 작다. Table 안에 data 들 가지고 놀기 )
정의된 DB에 입력된 레코드를 조회, 수정, 삭제 등의 역할
select : 데이터 조회
insert : 데이터 삽입
update : 데이터 수정
delete : 데이터 삭제
- DB 데이터를 실질적으로 처리하는데 사용하는 언어
- DML 은 트랙잭션이 발생한다.
테이블 데이터를 변경(insert/update/delete) 할 때
실제 테이블에 완전히 적용하지않고, 임시로 적용시키는 것
=> 만약 실수가 있었을 경우 임시적용 시킨것을 취소시킬 수 있다 => ROLLBACK
( 2.5 DQL (Data Query Language) - 데이터 질의어 ( 물어보기 )
SELECT : 데이터 조회 기능을 따로 DQL 로 분류하기도 한다. )
3. DCL(Data Control Language) - 데이터 제어 언어 ( DB 사용자 권한 / Transaction 저장, 복구 )
DB에 접근, 객체에 권한을 주는등의 역할
- ROOT계정 - 관리자만 사용가능
grant : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 부여
revoke : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 박탈, 회수
commit : 트랜잭션의 작업을 저장
rollback : 트랜잭션의 작업을 취소, 원래대로 복구
'Back to the DataBase' 카테고리의 다른 글
MySQL 데이터타입 => int / decimal / varchar / datetime (0) | 2022.07.14 |
---|---|
MySQL 함수 모음zip (0) | 2022.07.14 |
커맨드로 MySQL 사용하기 (0) | 2022.07.13 |
MySQL 에서 DB 백업 순서 차근차근 (0) | 2022.07.13 |
MySQL , SQL 기본 문법들 (0) | 2022.06.14 |