DBMS는 데이터를 저장하고 관리하는 시스템으로 개발자의 기본 소양중 하나이다.
##Database 기초 이해 및 설치
- 데이터를 저장 및 보존하는 시스템
- Application에서는 데이터가 메모리 상에서 존재한다. 그리고 메모리에 존재하는 데이터는 보존이 되지 않는다. 그럼으로 데이터를 장기 기간동안 저장 및 보존 하기 위해서 데이터베이스를 사용한다.
- 일반적으로 database에는 크게 관계형 데이터베이스(RDBMS)와 "NoSQL"로 명칭되는 비관계형(Non-relational) database가 있다.
##관계형 데이터베이스(RDBMS, Relational DataBase Management System)
- 이름 그대로, 관계형 데이터 모델에 기초를 둔 데이터베이스 시스템을 말함
- 관꼐형 데이터란 데이터를 서로 상호관련성을 가진 형태로 표현한 데이터를 말한다.
-- 모든 데이터들은 2차원 테이블(table)들로 표현 된다.
-- 각각의 테이블은 컬럼(column,행)과 로우(row, 열)로 구성된다.
-- 각 로우는 저만의 고유 키(Primary Key)가 있다.
- 각각의 테이블은 서로 상호관련성을 가지고 서로 연결 될 수 있다.
테이블 연결에는 크게 3가지 종류가 있다.
####일대일(One To One):
일대일 매칭, 다른테이블의 row가 하나씩만 연결된 것
####일대다(One To Many):
테이블1의 로우가 테이블2의 여러 로우와 연결이 되는 관계
####다대다(Many To Many):
테이블1의 여러 로우가 테이블2의 여러 로우와 연결이 되는 관계
정보를 나누어서 저장하는 것이 효율적이다. 디스크 사용을 최소화하고 불러올 때에 효율적으로 불러와야 된다. 이러한 과정을 정규화(Normalization)이라 한다.
##ACID(Atomicity, Consistency, Isolation, Durability)
원자성 - 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력
일관성 - 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것
고립성 - 트랜잭션 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것
지속성 - 성공적으로 수행된 트랜잭션은 영원히 반영되어야 한다는 것
##트랜잭션(Transaction)
ACID를 제공함으로 따라서 트랜잭션(일련의 작업들을 한번에 하나의 Unit으로 실행하는것) 기능을 제공한다.
##NoSQL 데이터베이스
- 비관계형 타입의 데이터를 저장할 때 주로 사용되는 데이터베이스 시스템
- 관계형 데이터베이스와 다르게 비관계형 이기 때문에 데이터들을 저장하기 전에 정의 할 필요가 없다.
-- 관계형 데이터베이스는 데이터들을 저장하기 전에 어디에 어떻게 저장할 것인지 정의해야한다.
--- 즉 테이블을 정의해야함( 테이블이름, 테이블과 다른 테이블의 관계, 각 컬럼의 타입)
- MongoDB, Redis, Cassandra 등이 가장 대표적인 NoSQL 데이터베이스이다.
###SQL(RDBMS) VS NoSQL
#####SQL의 장점
- 관계형 데이터베이스는 데이터를 더 효율적으로 그리고 체계적으로 저장할 수 있고 관리할 수 있다.
- 미리 저장하는 데이터들의 구조(테이블 스키마)를 정의 함으로 데이터의 완전성이 보장된다.
#####SQL의 단점
- 테이블을 미리 정의해야 함으로 테이블 구조 변화 등에 덜 유연하다.
- 확장성이 쉽지 않다.
-- 역시 테이블 구조가 미리 정의 되어 있다보니 단순히 서버를 늘리는 것 만으로 확장하기가 쉽지 않고 서버의 성능 자체도 높여야한다.
-- 서버를 늘려서 분산 저장 하는 것도 쉽지 않다.
-- Scale up(서버의 성능을 높이는 것)으로 확장성이 됨.
- 정형화된 데이터들 그리고 데이터의 완전성이 중요한 데이터들을 저장하는데 유리하다.
예) 전자상거래 정보, 은행 계좌 정보, 거래 정보 등
#####NoSQL의 장점
- 데이터 구조를 미리 정의하지 않아도 됨으로 저장하는 데이터의 구조 변화에 유연하다.
- 확장하기가 비교적 쉽다.
- 방대한 데이터를 저장하는데 유리
######NoSQL의 단점
- 데이터의 완전성이 덜 보장된다.
- 트랜잭션이 안되거나 비교적 불안정하다.
- 비정형화 데이터 그리고 완전성이 상대적으로 덜 유리한 데이터를 저장하는데 유리하다.
예) 로그 데이터
##SQL 기초
- SQL(Structured Query Language)
- MySQL같은 관계형 데이터베이스에서 데이터를 읽거나 생성 및 수정하기 위해 사용되는 언어.
- CRUD : Create, Read, Update, Delete
####Select
데이터를 읽어 들일 때 사용
where 구문을 사용해 검색도 가능
Insert
데이터를 생성할 때 사용
####Update
데이터를 수정할 때 사용
Delete
데이터를 삭제할 때 사용
####Exist, Not exist
어떠한 조건이 존재하는지 하지 않는지 확인할 때 사용하는 SQL 문.
####Join
Foreign key(외부키)로 걸려있는 2개의 table들을 join( 연결)해서 양쪽 table에서 모두 row를 읽어 들이고 싶을 때는 join문을 사용해야 함.
즉 join 은 교집합이라고 생각하면 된다.
####Create table
테이블을 생성할 때 사용
'Database > SQL Server' 카테고리의 다른 글
MS SQL-사용자 지정 함수(스칼라, 인라인 테이블, 다중 테이블) (0) | 2020.12.04 |
---|---|
MS SQL Query 내장 함수(문자열, 숫자, 시간 관련 ) (0) | 2020.12.04 |
SQL Server-트리거 생성, ID 확인(Identity), 유니크 키 만들기, 조인 Join, having 과 where , stored procedure 프로시저 , 암호화(Encryption) (0) | 2020.12.03 |
MS SQL Server - 데이터베이스 생성/변경/삭제 , 테이블 생성/변경/삭제, 제약조건 생성 (0) | 2020.12.01 |
MySQL - Problem solving , Data analysis (0) | 2020.10.01 |