오늘자 CS 공부한 것을 기록해 둔다
DBMS의 기능과 종류
1.DBMS 용어
튜플(Tuple)
1.테이블에서 행을 의미한다.
2.같은 말로는 레코드(Record)혹은 로우(Row)라고도 부른다
3.튜플은 릴레이션에서 중복되는 값을 가질 수 없다. 튜플의 수는 카디날리티 라고 한다.
어트리뷰트(Atrribute)
1.테이블에서 열을 의미한다.
2.같은 말로 칼럼(Column)이라고도 부른다
3.어트리뷰트의 수를 의미하는 단어는 디그리(Degree)라고 한다.
릴레이션(Relation = Table)
1.관계형 DB에서 정보를 구분하여 저장하는 기본 단위
2.ex. 유저 정보-> 유저 테이블, 게시글정보->게시글 테이블
키(Key)
1.테이블에서 행의 식별자로 이용되는 테이블의 열을 의미한다.(ex.유저ID, 게시글 ID)
2.식별자(Identifier)
-여러 개의 집합(인스턴스)체를 담고 있는 하나의 테이블에서 각각을 구분할 수 있는 논리적인 이름, 개념이며 이 구분자를 식별자(Identifier)라고 한다.
3.키는 주키와 외래키로 나뉘며 하나의 테이블에서 주키는 1개 또는 1쌍으로만 구성되고, 외래키는 여러개로 구성될 수 있다.
-주키(PK) : 현재 테이블에서 행을 식별하는 식별자
-외래키(FK) : 현재 테이블과 연관되어있는 외부 테이블과 연관된 행을 식별하는 식별자(조인키 라고도 한다)
도메인(Domain)
1.도메인은 하나의 어트리뷰트가 취할 수 있는 같은 타입의 원자값들의 집합이며 예를 들어 성별 어트리뷰트의 도메인은
남과 여의 데이터의 값만 가능하다면 나이 어트리뷰트의 도메인은 숫자의 값만을 입력할 수 있다. 그 외의 값은 입력될 수없다.
2.DBMS 기능
2-1.DBMS 요구사항
DMBS는 DB를 효율적이고 직관적이고 안전하게 사용할 수 있게 해주는 기능을 가지고 있다.
-효율적으로
-동일한 데이터가 저장되는 것을 방지하는 중복 제어 기능
-무결성 제약 조건을 정의/검사하는 기능
-직관적으로
-서로 다른 데이터 간의 관계를 표현해주는 관계 표현
-편리한 인터페이스 제공
-안전하게
-접근하는 사용자마다 다른 권한을 주는 접근통제 가능
-데이터가 잘못 수정/삭제 되었을 때 백업하는 기능
2-2. Transaction(트랜잭션)
트랜잭션이란
-DBMS의 요구사항을 충족시킬 핵심 기능
-DB의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
-ex.회원가입 절차 = 가입 트랜잭션, 결제 절차 = 결제 트랜잭션
-트랜잭션은 DB 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용된다.
-ex.회원가입, 결재는 작업 단위로 병행 처리된다.
-회원가입 처리중 잘못된 항목이 존재하여 가입불가시 가입취소(회복)이 된다.
-결재 처리중 잔액부족 등으로 결재가 불가능할경우 결재취소 (회복)이 된다.
-사용자가 시스템에 대한 요구 시 시스템이 응답하기 위한 상태 변환과정의 작업 단위로 사용된다.
-ex.회원가입 요구시 가입완료 응답을 하기까지의 작업단위 = 가입 트랜잭션
-ex.결재 요구시 결재완료 응답을 하기까지의 작업단위 = 결재 트랜잭션
트랜잭션의 특성
-데이터의 무결성을 보장하기 위하여 DBMS의 트랜잭션이 가져야 할 특성
-원자성 : 트랜잭션의 연산은 DB에 모두 반영되도록 완료되든지 아니면 전혀 반영되지 않도록 복구되어야 한다.
또한 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 한다. 완벽히 수행되지 않고 하나라도 오류가 발생하면 전부 취소되어야 한다.
-일관성 : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 DB 상태로 변환한다. 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 한다.
-독립성 : 둘 이상의 트랜잭션이 동시에 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다.
-영속성,지속성 : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장이 나더라도 영구적으로 반영되어야 한다.
DBMS는 데이터 관리의 원칙 중 안전, 공유, 일관성, 손상방지 등의 원칙을 트랜잭션 단위로 해결한다.
3.RDB(관계형DB) = SQL DB
3-1 개요
-현재 가장 많이 사용되고 있는 DB의 한 종류
-테이블로 이루어져 있으며, 테이블은 키와 값으로 나타낸다
-데이터 종속성을 관계로 표현하는 것이 큰 특징이다
3-2 특징
-데이터의 분류, 정렬, 탐색 속도가 빠르다
-신뢰성이 높고, 어떠한 상황에서도 데이터의 무결성을 보장
-SQL이라는 표준 언어로 관리가 가능하기에 개발 언어, DB 종류 등에 변화가 있어도 기존에 사용하던 애플리케이션은 그대로 사용이 가능
-기존에 작성된 스키마를 수정하기가 어렵다
-DB의 부하를 분석하는 것이 어려움
3-2-1. 연관관계 (1:1 1:N N:N)
1. 1 : 1관계( 1:1 = 나 : 내 핸드폰 = 유저 : 프로필)
이렇게 하나의 테이블과 다른 하나의 테이블만 연결된 것을 일대일 이라고 한다.
2. 1: N 관계 (나 : 담임 선생님 = 유저 : 게시글)
각 반에는 한 명의 담임선생님과 여러 명의 학생이 존재하게 되는데, 이 한 명의 담임선생님께 속한 학생들은 일대다라고 할 수 있다.
3. N:N 관계 (나 : 동아리 , 게시글 : 해시태그)
여러 동아리는 각자 여러 명의 회원을 가지고 있을 것이고, 같은 사람이 여러 개의 동아리에 가입할 수 있다.
이런 동아리와 여러 회원들의 관계를 테이블로 표현한다면 다대다로 표현된다.
3-2-2. SQL
-SQL은 관계형 DB에서 사용되는 언어로, SQL 또는 시퀄 로 읽으며 관계형 DBMS 중 MySQL을 배우려면 SQL을 필수적으로 익혀야 한다
SQL이 데이터베이스를 조작하는 언어이긴 하지만 일반적인 프로그래밍 언어와는 조금 다른 특성을 갖는다
-SQL은 특정 회사에서 만드는 것이 아니라 국제표준화기구에서 SQL에 대한 표준을 정해서 발표하고 있는데 이를 표준 SQL이라 한다.
그런데 문제는 SQL을 사용하는 DBMS를 만드는 회사가 여러 곳이기 때문에 표준 SQL이 각 회사 제품의 특성을 모두 포용하지 못하기에
DBMS를 만드는 회사에서는 되도록 표준 SQL을 준수하되, 각 제품의 특성을 반영한 SQL을 사용하고있다.
-SQL 이라는 표준 언어로 관리가 가능하기에 개발 언어, DB 종류 등에 변화가 있어도 기존에 사용하던 애플리케이션은 그대로 사용이 가능
-위 같은 내용을 고려하여 서비스를 위한 데이터는 DB(DBMS)를 사용한다
-이런 내용을 모두 애플리케이션마다 구현하고 예외를 처리하려면 엄청난 리소스가 들지만, DBMS에서는 이를 제공해주기 때문
SQL 언어의 종류
-DDL : 데이터 정의어, 관계형 DB의 구조를 정의하는 언어이며 CREATE, ALTER, DROP, RENAME 문이 있다.
-DML : 데이터 조작어, 테이블에서 데이터를 입력, 수정, 삭제, 조회 한다 INSERT, UPDATE, DELETE, SELECT 문이 있다.
-DCL : 데이터 제어어, DB 사용자에게 권한을 부여하거나 회수한다. GRANT,REVOKE,TRUNCATE 문이 있다.
-TCL : 트랜잭션을 제어하는 명령어이며 COMMIT, ROLLBACK, SAVEPOINT 문이 있다.
3-3 종류
(1)Oracle
-미국 오라클(Oracle) 사의 관계형 DB 관리 시스템
-오픈 소스 DBMS 보다 안정성과 유지보수를 보장받을 수 있다는 장점 때문에 비 IT업종 기업에서 많이 사용한다
특징) 기업용으로 주로 사용, 대량의 정보관리를 할 때 타 DBMS에 비해 좋은 성능을 보임, 오라클 자체 SQL 쿼리를 사용해 표준 형식과 약간 다름
(2)MySql
-관계형 DB 관리 시스템
-오픈 소수이며, 다중 사용자와 다중 스레드 지원
특징)오픈 소스이기 때문에 기술 지원의 한계가 있다
(3)PostrgreSQL
-오픈 소스 객체-관계형 DB 시스템
-macOS 서버의 경우 기본 DB로 사용된다.
-북미나 일본에서 많이 사용
특징) 초기 개발 단계부터 완벽한 ACID와 MVCC를 지원하는 아키텍처로 설계
다양한 DB 객체를 사용자가 임의로 만들 수 있는 기능을 SQL 차원에서 제공
테이블 상속 기능을 이용해 하위 테이블 생성 가능
오픈 소스임에도 상용 RDBMS급의 기능을 제공해준다
기본적인 CRUD 성능이 경쟁 DB에 비해 좋지 않다
(4)MariaDB
-오픈 소스의 관계형 DB 관리 시스템
-MySQL과 동일한 소스 코드를 기반, GPL v2 라이선스를 따른다
-MySQL의 개발진들이 오라클의 정책이 추구하는 바와 맞지 않아 나와서 개발한 DB
특징) 위의 말한 관계로 인해 MySQL과 거의 100% 호환성을 가지고 있다
MySQL에 비해 애플리케이션 부분 속도가 약 4~5천 배 빠르고, 성능면에선 70% 향상을 보인다고 말한다
좀 더 자유로운 MySQL 정도로 이해하면 될 것
(5)SQLite
-독립형 파일 기반의 오픈소스 RDBMS
-구글 안드로이드 운영 체제에 기본 탑재된 DB
-ACID 준수
특징)이름과 같이 매우 가볍다, 사용하는 공간은 시스템에 따라 다르지만 600kb 미만의 공간을 차지
완전히 독립형이라 SQLite가 작동하기 위해 시스템에 설치해야 하는 외부 종속성이 없다
이식성이 뛰어나다
동시성의 제한, 사용자 관리 존재의 부재, 서버리스 DB이기에 보안이 약하다
'내일배움캠프 TIL' 카테고리의 다른 글
| 내일 배움 캠프 23_09_01 TIL (0) | 2023.09.01 |
|---|---|
| 내일 배움 캠프 23_08_30 TIL (0) | 2023.08.30 |
| 내일 배움 캠프 23_08_29 TIL (0) | 2023.08.29 |
| 내일 배움 캠프 23_08_28 TIL (0) | 2023.08.28 |
| 내일 배움 캠프 23_08_25 TIL (0) | 2023.08.25 |