Database/SQL Server

Session-데이터베이스(Database), SQL

청렴결백한 만능 재주꾼 2020. 5. 14. 13:50
반응형

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 은 교집합이라고 생각하면 된다.

 

Join의 유형들 이미지첨부

####Create table

테이블을 생성할 때 사용

테이블 생성 예

 

반응형