250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스코프
- nodeJS
- CORS
- pm2
- django westagram
- on_delete
- bcrypt
- JWT
- node
- typescript
- async/await
- 프로미스
- manytomanyfield
- rebase
- Django
- 자바스크립트
- 호이스팅
- 트랜잭션
- wecode
- TypeError: this.boardRepository.createBoard is not a function
- docker
- westagram
- javascript
- crud2
- 실행 컨텍스트
- status code
- 장고초기세팅
- OSI7계층
- 노드
- Jest
Archives
- Today
- Total
될때까지
((Database)) SQL, NoSQL, RDB, RDBMS 개념정리 본문
728x90
SQL (Structured Query Language)
구조적 질의 언어의 줄임말로, 관계형 데이터 베이스(RDB)에서 데이터를 보다 쉽게 검색,추가,삭제,수정같은 조작을 할 수 있도록 고안된 언어다.
SQL문법은 크게 3가지의 종류로 나뉜다.
- DML(Data Manipulation Language, 데이터 조작 언어)
- DDL(Data Definition Language, 데이터 정의 언어)
- DCL(Data Control Launguage, 데이터 제어 언어)
SQL | 뜻 | 해석 | 예시 |
DML | Data Manipulation Language | 데이터 조작 및 데이터 관리를 위한 언어다. | INSERT, UPDATE, DELETE, SELECT.. |
DDL | Data Definition Language | 데이터베이스의 스키마를 정의하거나 조작하기 위한 언어다. | CREATE, ALTER, DROP.. |
DCL | Data Control Language | 데이터의 보안이나 무결성을 정의하고 접근 권한 설정같이 데이터에 접근하고 관리하기 위한 언어다. | GRANT, REVOKE.. |
RDB (Relational Database)
관계형 데이터 모델에 기초를 둔 데이터베이스다. 관계형 데이터 모델은 모든 데이터를 2차원 테이블 형태로 표현한다. 다른 테이블과 관계를 맺음으로써 외래키를 사용하고, 이를 이용해서 테이블간에 Join을 사용할 수 있다.
- 데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다. (스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없다.)
- 데이터는 관계를 통해 여러 테이블에 분산된다.
- 하나의 테이블에서 중복없이 하나의 데이터만을 관리하기 때문에 다른 테이블에서 부정확한 데이터를 다룰 위험이 없다.
스키마란?
데이터베이스를 구성하는 개체(Entity), 속성(Attribute), 관계(Relation) 및 제약 조건 등에 관해 전반적으로 정의한 것
Entity(개체)
- 단독으로 존재하는 객체를 의미하며, 동일한 객체는 존재하지 않는다.
- 상품 정보가 품명, 이름, 브랜드가 있을 때 3개의 정보가 모두 같은 상품이 딱 한개일 때 이를 개체라고 한다.
- 상품 1개가 개체 = Entity
- 개체들의 집합을 Entity Type이라고 하며 여기서는 Product가 된다.
Attribute(속성)
- 개체가 갖는 속성을 의미한다.
- 상품 정보에서 품명, 이름, 브랜드가 속성이다.
Relation(관계)
- Entity Type간의 관계를 의미한다.
RDBMS (Relational Database Management System)
RDB를 생성하고 수정, 삭제하고 관리할 수 있는 소프트웨어를 말한다.
RDBMS의 종류
Oracle, PostgreSQL, MySQL, SQLite 등
RDBMS의 특징
- 2차원 구조 모델(열:속성, 행:데이터)을 기반으로 테이블 형식으로 데이터를 저장한다.
- 트랜잭션 ACID(원자성, 일관성, 독립성, 지속성)을 보장하는 기능을 가진다.
- SQL이라는 쿼리를 사용해서 데이터를 다룬다.
- 반드시 스키마를 준수해야한다.(유연하지 않다)
NoSQL (Not Only SQL)
- 데이터간의 관계를 정의하지 않기 때문에 테이블간의 join이 불가능하다.
- RDBMS의 복잡도와 용량 한계를 극복하기 위한 목적으로 등장했기 때문에 RDBMS에 비해 훨씬 더 대용량의 데이터를 저장할 수 있다.
- 정해진 스키마가 없어서 자유롭게 데이터를 저장할 수 있다.
- 스키마가 없기 때문에 데이터에 대한 규격화된 결과값을 얻기 어렵다.
- 예시로는 MongoDB, redis등이 있다.
RDBMS VS NoSQL
RDBMS | NoSQL | |
장점 | 정해진 스키마가 있다. | 스키마가 없다. |
명확한 데이터 구조를 보장한다. | 유연하고 자유로운 데이터 구조를 가질 수 있다. |
|
각 데이터를 중복없이 한번만 저장할 수 있다. | 데이터 분산이 용이하다. | |
단점 | 테이블간 관계를 맺고 있어서 시스템이 커지면 join문이 많아져 복잡한 쿼리가 생성된다. | 데이터 중복이 발생할 수 있고 중복된 데이터가 변경될 경우 모든 컬렉션에서 작업해야한다. |
나중에 스키마가 변경될 경우 번거롭고 어렵다. | 명확한 데이터 구조를 보장하지 않으며, 데이터 구조를 결정하기 어려울 수 있다. | |
언제쓰면 좋을까? | - 명확한 스키마 사용이 요구되고, 관계를 맺고 있는 데이터가 자주 변경되는 경우 - 중요한 트랜잭션 처리가 요구되는 경우 |
- 정확한 데이터 구조를 알 수 없을 때 - 데이터 변경이 자주 없고 막대한 양의 데이터를 다뤄야하는 경우 |
728x90
'학습 > 개념정리' 카테고리의 다른 글
((Docker)) 도커가 뭐야? (0) | 2022.09.12 |
---|---|
((git)) git flow (0) | 2022.09.05 |
((HTTP Request & Response)) HTTP Request & Response Message 구조 (1) | 2022.09.02 |
((RESTful API)) REST, path parameter and query parameter, status code (0) | 2022.08.06 |
((Software Testing)) E2E, Integration, Unit test (0) | 2022.08.06 |