View
Database(데이터베이스)란?
여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합을 말한다. 현대적인 의미의 데이터베이스는 몇개의 자료파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억시켜놓은 자료의 집합체로 데이터를 저장 및 보존하는 시스템이다. 프로그램을 개발하다보면 사용자에 의해 성생된 데이터와 개발자에 의해 프로그램에 넣은 데이터가 쌓이게 된다. 데이터베이스를 사용하지 않으면 이 데이터들은 프로그래을 종료하는 순간 전부 날아가게 된다. 이런 형상을 방지하기 위해 데이터들을 데이터베이스에 넣고 보관하는 방식을 사용한다.
데이터베이스와 반대되는 개념은 메모리가 있다. 영구적으로 저장 및 보관을 하는 데이터베이스와 달리 메모리는 휘발성으로 프로그램을 종료하면 데이터가 날아간다. 메모리는 저장이 영구적이지 않은 대신 속도가 빠르다. 그래서 일반적으로는 데이터는 데이터 베이스에 영구적으로 저장하고 메모리로 빠르게 데이터를 불러온다.
데이터베이스의 종류
관계형 데이터베이스(relational database)
: 모든 데이터는 테이블로 구성되며, 각 데이터는 칼럼(항목,행)과 로우(실제값,열)로 구분된다. 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류로 모든 데이터가 테이블(table)로 이루어져 있으며, 이 데이블은 키(key)와 값(value)의 관계를 나타낸다. 데이터의 종속성을 관계로 표현하는것이 관계형 데이터베이스가 특징이다.
※ ROW(행, 튜플, 레코드, 실제값) / COLUMN(필드, 칼럼, 항목)
관계형 데이터베이스의 특징
1. 데이터의 분류, 정렬, 탐색 속도가 빠르다.
2. 오랫동안 사용된만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성이 보장된다.
3. 기존에 작성된 스키마는 수정하기 어렵다.
4. 데이터베이스의 부하를 분석하는건 어렵다.
관계(relationship)
1. one to one (일대일관계) : 데이블 a의 로우와 데이블 b의 로우가 1대1 매칭관계
2. one to many(일대다관계) : 하나의 데이터 테이블 a가 테이블 b의 여러 로우(상태값)와 연결되는 관계
3. many to many(다대다관계) : 하나의 데이터 테이블 a의 여러 로우가 테이블 b의 여러 로우와 연결되는 관계
왜 테이블들을 연결하는걸까?
중복된 데이터를 저장하지 않음으로 디스크를 더 효율적으로 쓰고, 같은데이터여도 다른부분이 있다면 부분을 수정하여 저장할수있다.
※ 스키마(schema)
스키마는 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다. 테이블을 디자인하기 위한 청사진이다. 스키마는 테이블의 각 열에 대한 항목과 타입뿐만 아니라 기본키와 외래키도 나타낸다.
ACID
ACID
: 데이터의 유효성을 보장하기 위한, 트랜젝션의 특징들의 앞글자를 딴 단어다.
원자성(Atomicity): 관련된 작업들이 부분적으로 실행되다가 실패하면 다시 돌아가는 콜백.
일관성(Consistency): 트랜색션이 실행을 성공적으로 완료하면 언제나 일관성있는 데이터베이서 상태로 유지하는것.
고립성(Isolation): 트랜지션끼리는 서로 간섭할수없음, 트랜잭션을 수행시 다른 트랜잭션이 연산작업에 끼어들지 못하게 하는것.
지속성(Durability): 성공적으로 수행된 트랜잭션은 영원히 반영되어야하는것.
트랜잭션( transaction )
트랜잭션(transaction)
: 질의(query)를 하나의 묶음 처리해서 만약 중간에 실행이 중단됐을 경우, 처음부터 다시 실행하는 Rollback을 수행하고, 오류없이 실행을 마치면 commit을 하는 실행 단위를 의미한다. 한번 질의가 실행되면 질의가 모두 수행되거나 모두 수행되지 않는 작업수행의 논리적 단위이다. 때문에 DBMS의 성능은 초당 트랜잭션의 실행수로 측정한다.
※ 트랜잭션 사용 이유
DB서버에 여러개의 클라이언트가 동시에 엑세스하거나 응용프로그램이 갱신처리하는 과정에서 중단될 수 있는 경우 등 데이터 부정합을 방지할 때 사용한다. 병렬로 처리할 수 밖에 없는 현실적인 상황으로 인해 부정합을 방지하고자 트랜잭션을 사용한다.
NoSQL 데이터베이스
NoSQL 데이터베이스
: 비관계형 타입의 데이터를 저장할때 주로 사용되는 데이터베이스시스템 저장하기전에 정의할 필요가 없다. 비관계형과 달리 관계형은 미리 정의를 해야한다.
SQL(RDBMS) VS NoSQL
SQL(관계형베이스)
장점:데이터를 더 효율적으로, 체계적으로 저장, 관리할수있다. 미리 저장하는 데이터들의 구조(테이블스키마)를 정의함으로 데이터의 완전성이 보장된다.
단점:테이블을 미리 정의해야해서 구조변화등에 덜 유연하다. 확장성이 좋지않다.
NoSQL(비관계형베이스)
장점: 데이터 구조를 미리 저장해야하지않아 유연하다. 확장하기 비교적 쉽다(서버수를 늘리면된다).위 이유때문에 방대한 양의 데이터를 저장하는데 유리하다.
단점: 데이타의 완전성 덜 보장되거나 트랜잭션이 안되거나 불안정하다. 로그데이터 수집에 많이 쓰인다.
참고문서 : https://coding-factory.tistory.com/77
참고문서 : http://tcpschool.com/mysql/mysql_intro_relationalDB
참고문서 : https://medium.com/@chrisjune_13837/db-transaction-%EA%B3%BC-acid%EB%9E%80-45a785403f9e
참고문서 : https://victorydntmd.tistory.com/129
'Review' 카테고리의 다른 글
인증과 인가 (0) | 2020.08.11 |
---|---|
React 복습과 Fetch & Map (0) | 2020.08.10 |
React의 SASS와 Router (0) | 2020.08.05 |
React 기초 공부 -2 (0) | 2020.08.04 |
React 기초 공부 -1 (0) | 2020.08.03 |