일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- staging_area
- 재귀적사고
- 동전교환알고리즘
- 코딩테스트
- 99클럽
- 루트사용자
- 성장형마인드셋
- 자바
- openapi
- 스레드동기화
- Spring
- ChatGPT
- 스프링
- 파일사용권한
- SQ3R
- API
- SQL
- 프로젝트
- 날씨API
- 제너릭메서드
- Java
- API명세서
- 네이티브애플리케이션
- 참조변수타입변환
- 프로그래머스
- 4A피드백
- 향상된for문
- 배열탐색
- string메서드
- 백준
- Today
- Total
개발 공부용
DB, SQL, NoSQL, 트랜잭션, 분산 시스템 본문
DB
DB는 여러 사용자가 공유하여 사용할 목적으로 통합하여 관리하는 데이터의 집합이다.
사용자는 Query Language*를 이용하여 DBMS(Database Mangement System)에게 요청을 보내고, DBMS가 DB에 요청을 전달하여 데이터를 받는다.
받은 데이터를 사용자에게 전달하는 것도 DBMS의 역할이다.
*Query Language는 DBMS(Database Mangement System)에서 DB를 다루기 위해 사용하는 언어이다.
비절차적 언어로, 원하는 결과에 대한 내용만 명세하고, 결과를 얻는 방식에 대한 내용은 없다.
SQL
SQL(Structured Qeury Language)은 RDBMS에서 사용되는 표준 질의 언어이다.
RDBMS는 DBMS의 한 종류로 관계형 데이터 베이스 관리 시스템(Relational Database Mangement System)을 말한다.
RDBMS의 특징
- 정해진 스키마(schema)*에 따라 테이블이 구성된다.
- 테이블 간의 관계가 존재한다.
- 트랜잭션을 사용한다.
*스미카는 데이터 베이스에서 사용되는 데이터 구조를 정의하는 것이다.
개체와 개체간의 관계, 제약 조건을 설정할 수 있다.
트랜잭션
트랜잭션은 데이터베이스의 상태를 변화시키기 위해서 수행하는 논리적 작업 단위이다.
트랜잭션의 특징
- Atomicity(원자성) : 트랜잭션 내의 모든 작업은 모두 수행되거나 모두 수행되지 않아야 한다. 따라서 하나의 작업이 실패하면 전체를 롤백한다.
- Consistency(일관성) : 트랜잭션 일어난 이후에도 데이터베이스의 전체적인 데이터들이 제약이나 규칙을 만족해야 한다.
- Isolation(격리성) : 트랜잭션 수행 중에 다른 트랜잭션의 작업이 끼어들 수 없다. 트랜잭션은 서로 독립적이다.
- Durability(영속성) : 트랜잭션이 성공하면 적용된 결과는 유지된다.
- 다중작업 : Isolation Level을 통해 다중 작업을 지원한다.
- 데이터 백업 : 데이터의 복사본을 생성하여 데이터 손실을 보호한다.
- 데이터 복구 : 시스템 장애 발생 시 데이터를 이전 상태로 복원하여 보호한다.
- 인덱스
Isolation Level
- Read Uncommitted : 트랜잭션이 커밋되지 않은 다른 트랜잭션의 변경 내용도 읽을 수 있다.
- Read Committed : 커밋된 데이터만 읽을 수 있다.
- Repeatable Read : 트랜잭션이 시작된 후 다른 트랜잭션이 해당 데이터를 변경하는 것을 막기 위해 읽은 데이터를 잠그고, 수정할 수 없게 만든다.
- Serializable : 모든 데이터를 잠그고 다른 트랜잭션이 데이터에 접근하는 것을 막는다. 동시성이 떨어진다.
NoSQL
NoSQL(Not only SQL)은 서버 확장이 어려운 RDBMS의 한계를 극복하기 위한 데이터베이스 시스템으로,
대규모의 데이터를 유연하게 처리할 수 있는 비관계형 데이터베이스 관리 시스템이다.
NoSQL의 특징
- 데이터 모델을 유연하게 수정할 수 있다.
- 어플리케이션 단에서 데이터를 구조에 맞게 매핑할 필요가 없다.
- Column, Graph, Key-Value, Document의 다양한 데이터 모델을 선택할 수 있다.
- 분산 시스템을 사용하여 수평적 확장이 용이하다.
분산 시스템
분산 시스템은 데이터를 여러 대의 컴퓨터 노드에 분산하여 저장하고 처리하는 시스템이다.
분산 시스템의 특징
- 확장이 필요할 때 새로운 노드를 추가하면 되므로 수평적 확장이 용이하다.
- 각 노드가 자신이 가진 데이터를 처리하여 병렬 처리가 가능하여 속도가 빠르다.
- 노드 중 하나가 다운되어도 시스템 전체가 중단되지 않는다.
분산 시스템의 설계 원칙
- 일관성(Consistency) : 모든 클라이언트가 같은 시간에 같은 데이터를 확인할 수 있어야 한다.
- 가용성(Availability) : 하나 이상의 노드가 데이터 처리를 실패하더라도 정상적으로 요청을 처리할 수 있어야 한다.
- 장애 내성(Partition Tolerance) : 하나의 노드에 장애나 서버 다운 같은 상황이 발생하여도 시스템이 작동해야 한다.
참고한 영상 및 글
- https://www.youtube.com/watch?v=cnPRFqukzek
- http://terms.tta.or.kr/dictionary/dictionaryView.do?subject=데이터베이스+스키마
- http://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=050536-3