Database
- 데이터를 저장 및 보존하는 시스템
- Application에서는 데이터가 메모리 상에서 존재한다. 메모리에 존재하는 데이터는 보존이 되지 않는다. 해당 애플리케이션이 종료되면 메모리에 있던 데이터는 다시 읽어들일 수 없다.
1. RDBMS란?
- Relational DataBase Management System
- 관계형 데이터
- 데이터를 서로 상호관련성을 가진 형태로 표현한 데이터
2. TABLE이란? Column과 Row 그리고 Primary Key란?
- 모든 데이터들은 2차원 테이블로 표현 된다.
- 각각의 테이블은 column과 row로 구성된다.
- column은 테이블의 각 항목을 말함. 행
- row는 각 항목들의 실제 값. 열
- 각 로우는 저만의 고유 key가 있다. 이 키를 통해 해당 로우를 찾거나 인용한다.
- 대표적인 관계형 데이터베이스에는 MySQL과 PostgreSQL(줄여서 Postgres)가 있다.
3. 테이블의 관계 , One to One, One to Many, Many to Many는 무엇인가?
각각의 테이블들은 서로 상호관련성을 가지고 서로 연결될 수 있다.
One To One
- 테이블 A의 로우와 테이블 B의 로우가 정확히 일대일 매칭이 되는 관계를 one to one 관계라고 한다.
One To Many
- 테이블 A의 로우가 테이블 B의 여러 로우와 연결이 되는 관계를 one to many 관계라고 함.
Many To Many
- 테이블 A의 여러 로우가 테이블 B의 여러 로우와 연결이 되는 관계를 many to many 라고 함.
4. 왜 관계형 테이블을 쓰는가?
- 왜 정보를 여러 테이블에 나누어서 저장하는가?
- 앞서 본 one to many의 예에 경우 그냥 하나의 테이블에 고객 정보와 구입한 제품 정보 모두를 저장 하면 안되는가?
하나의 테이블에 모든 정보를 다 넣으면 동일한 정보들이 불필요하게 중복되어 저장된다.
더 많은 디스크를 사용하게 되고, 잘못된 데이터가 저장 될 가능성이 높아진다.
- 예를 들어, 고객의 아이디는 동일한데 이름이 틀린 로우들이 있다면 어떻게 해야 하는가? 어떤 이름이 정확한건가?
여러 테이블에 나누어서 저장한 후 필요한 테이블끼리 연결 시키면 위의 2문제가 사라진다. 중복된 데이터를 저장하지 않음으로 디스크를 더 효율적으로 쓰고, 또한 서로 같은 데이터이지만 부분적으로 틀린 데이터가 생기는 문제가 없어진다.
이것을 normalization이라고 한다.
5. 트랜잭션이란? ACID는 무엇인가?
트랜잭션(Transaction)
- ACID를 제공함으로서 트랜잭션(일련의 작업들을 한번에 하나의 unit으로 실행하는것) 기능을 제공
- 트랜잭션은 일련의 작업들이 마치 하나의 작업처럼 취급되어서 모두 다 성공하거나 아니면 모두 다 실패하는걸 이야기 한다.
Commit & rollback
ACID
(Atomicity, Consistency, Isolation, Durability)
원자성, 일관성, 고립성, 지속성
-
원자성(Atomicity)은 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력이다.
-
일관성(Consistency)은 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미한다.
-
고립성(Isolation)은 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다.
-
지속성(Durability)은 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미한다.
6. 관계형 데이터베이스 와 비관계형 데이터베이스의 차이는?
NoSQL 데이터베이스
- 비관계형 타입의 데이터를 저장할때 주로 사용되는 데이터베이스 시스템
- 관계형 데이터베이스와 다르게 비관계형이기 때문에 데이터들을 저장하기 전에 정의 할 필요가 없다.
- 관계형 데이터베이스는 데이터들을 저장하기 전에 어디에 어떻게 저장할것인지를 정의 해야한다.
- MongoDB, Redis, Cassandra 등이 가장 대표적인 NoSQL 데이터 베이스이다.