Today 공부
- SQL
- NoSQL
- SQL 기반의 데이터베이스와 NoSQL 데이터베이스의 차이점
- ACID
- DROP 과 TRUNCATE 차이점
SQL (Structured Query Language)
구조화된 쿼리언어 ----> DB용 프로그래밍 언어
관계형 데이터베이스에서 사용된다
SQL을 사용하기 위해서는 데이터가 구조가 고정되어 있어야 한다
NoSQL
데이터의 구조가 고정되어 있지 않은 데이터베이스
- 구성
- Key-Value 타입
- 문서형(Document) 데이터베이스
- Wide-Column 데이터베이스
- 그래프(Graph) 데이터베이스
SQL 기반의 데이터베이스와 NoSQL 데이터베이스의 차이점
- 데이터 저장(Storage)
- 스키마(Schema)
- 쿼리(Querying)
- 확장성(Scalability)
데이터베이스를 사용하는 케이스
SQL기반 관계형 | NoSQL 기반의 비관계형 |
---|
1. 데이터베이스의 ACID 성질을 준수해야 하는 경우 | 1. 데이터의 구조가 거의 또는 전혀 없는 대용량의 데이터를 저장하는 경우 |
2. 소프트웨어에 사용되는 데이터가 구조적이고 일관적인 경우 | 2. 클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우 |
| 3. 빠르게 서비스를 구축하는 과정에서 데이터 구조를 자주 업데이트 하는 경우 |
SQL(구조화 쿼리 언어) vs. NoSQL(비구조화 쿼리 언어)
| 관계형 DB | 비관계형 DB |
---|
| SQL기반 | NoSQL로 데이터 다룸 |
특징 | 스미카가 뚜렷하게 보인다 | 데이터고정X, 스키마에따라 데이터를 읽어옴( 'schema on read') |
대표적 | MySQL, Oracle | MongDB |
ACID
ACID
ACID는 데이터베이스 내에서 일어나는 하나의 트랜잭션(transaction)의 안전성을 보장하기 위해 필요한 성질입니다.
- Atomicity(원자성)
하나의 트랙잭션 내에서는 모든 연산이 성공하거나 모두 실패해야 한다
- Consistency(일관성)
하나의 트랜잭션 전후에 DB의 일관 된 상태가 유지되야한다
- Isolation(격리성,고립성)
모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 한다
- Durability(지속성)
성공된 트랜잭션은 해당 로그가 기록되고 영구적이어야 한다
트랜잭션
- 여러 개의 작업을 하나로 묶은 실행 유닛
- 모든 작업들을 다 완료해야 정상적으로 종료
- 하나의 작업이라도 실패하면 모든 작업 실패
DROP 과 TRUNCATE 차이점
예시
- Delete
- 데이터 지워짐, 테이블 용량 그대로 (삭제 후 되돌리기 가능)
- TRUNCATE Table
- 테이블삭제 X 인덱스,데이터 삭제, 공간반납 (삭제 후 되돌릴 수 없음)
- DROP Table
- 테이블 자체 삭제, 인덱스도 삭제 (삭제 후 되돌릴 수 없음)
마치며,
과제로 w3schools에서 SQL에 관한 퀴즈를 풀면서, 같은 일을 하는 명령어들도
제각기 다른일을 한다는걸 알 수 있었다.
단어가 친숙하여 얼핏보면 쉬워보이지만,
세트로 이루어진 형식에 (ex: UPDATE ___ SET) 조건같은걸 추가 할수도 있어서
헷갈리지 않게 공부해야겠다.