GitHub

https://github.com/Backcoder-June

BackCoder 기록 그리고 숙달

Back to the DataBase

DB/RDBMS/NON RDB/ORM/SQL/DDL /DML/DCL/ 기초개념

Backcoder 2022. 6. 10. 20:16

< 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 : 트랜잭션의 작업을 취소, 원래대로 복구