🍀정제된 데이터 저장 데이터 전처리 : 데이터베이스에 필요없는 데이터를 빼고 정제해 저장하는 것
🍀동시성 제어 데드락(교착 상태) : 여러개의 트랜잭션들이 실행 하지 못하고 서로 무한정 기다리는 상태
데드락 해결방법
예방 기법⇒ 트랜잭션의 병행성을 보장하지 못하며 몇몇 트랜잭션은 게속해서 처리 못하게 되는 기아 상태가 발생할 수 있음
각 트랜잭션이 실행되기 전에 필요한 데이터를 모두 로킹(다른 트랜잭션이 접근하지 못하도록 잠금)
회피 기법: 자원을 할당할 때 시간 스탬프를 사용하여 교착상태가 일어나지 않도록 회피하는 방법
Wound-Wait 방식 다른 트랜잭션이 데이터를 점유하고 있을 때 기다리거나(Wait) 포기(Die)하는 방식
Wait-Die 방식 다른 트랜잭션이 데이터를 점유하고 있을 때 빼앗거나(Wound) 기다리는(Wait) 방식
🍀빠른 데이터 탐색 데이터를 쉽게 찾기 위해 테이블 구조를 만들고 테이블 간의 관계를 정의
🍀무결성 보장 데이터 처리 과정에서 변형되거나 손실되지 않고 일관되고 정확한 상태를 유지
🍀선택적 공유와 보호 사용자에 따라 공개해도 되는 데이터와 공개하면 안되는 데이터를 구분하여 관리
🍀탐색 최적화 데이터를 더 빠르게 찾도록 환경을 설정하는 것 인덱스 최적화필요한 칼럼에 적절한 인덱스를 추가하고 불필요한 인덱스를 제거쿼리 최적화데이터베이스 쿼리(데이터베이스에 정보를 요청하는 질의문)의 구조를 개선하여 실행 속도를 높이는 방법
🍀백업과 복구 데이터를 쉽게 백업하고 복구 할 수 있는 편의 기능 제공
4. 트랜잭션
트랜잭션 : 하나의 작업 단위
🍀트랜잭션의 성질(ACID) 원자성 :하나의 작업이 시작됐을 대 중간에 중단되면 안 된다는 성질 일관성 :작업 전후의 결과로 데이터가 모순되지 않고 일관된 상태를 유지해야 한다는 성질 고립성 :작업이 진행되는 중에는 아무도 끼어들 수 없어야 한다는 성질 지속성 :한 번 작업한 내용이 계속 반영돼 있어야 한다는 성질
2. 데이터베이스의 언어 : SQL
1. SQL의 개념
SQL : 데이터베이스에서 데이터를 추출하고 조작하는 데 사용하는 프로그래밍 언어
// 저장
INSERT INTO 테이블명(칼럼명1, 칼럼명2) VALUES (값1, 값2);
//조회
SELECT 칼럼명1, 칼럼명2,...
FROM 테이블명
WHERE 조건;
//수정
UPDATE 테이블명
SET 칼럼명=변경할_값
WHERE 조건;
//삭제
DELETE FROM 테이블명
WHERE 조건;
2. SQL 문 맛보기
//모든 데이터 조회하기
SELECT *
FROM 테이블명;
//조건으로 조회하기
SELECT *
FROM 테이블명
WHERE 조건;
//집계해 조회하기
SELECT COUNT(*)
FROM 테이블 명;
SELECT 기준그룹, COUNT(*)
FROM 테이블명
GROUP BY 기준그룹;
//오름차순으로 정렬하기
SELECT *
FROM 테이블명
ORDER BY 기준 ASC;
3. 데이터베이스 관리 시스템 : RDBMS와 NoSQL
데이터베이스 관리 시스템(DBMS) : 여러 사용자가 데이터베이스의 데이터를 접근하고 사용할 수 있게 해주는 프로그램
1. RDBMS
테이블 형태로 데이터를 저장하는 관계형 데이터베이스를 관리하는 시스템 ⇒ SQL 명령을 직접 실행
▶ 테이블 형태로 데이터 저장 후 테이블 간의 관계를 맺는 방식으로 관리
▶ MySQL, PostgreSQL, MariaDB, Oracle 등
🍀기본키와 외래키 기본키 : 한 테이블에서 하나의 행을 식별하기 위한 키 외래키 : 다른 테이블의 기본키를 가리키는 키 ⇒ 외래키를 이용하여 다른 테이블의 기본키와 연결해 두 테이블을 합칠 수 있음
🍀관계의 종류 일대일 관계 일대다 관계 다대다 관계
2. NoSQL
비관계형 데이터베이스 처리에 특화된 데이터베이스 관리 시스템
🍀키-값 쌍 모델 키 : 데이터를 식별하는데 사용 값 : 키에 맞는 값 ▶ 기존에 없던 키를 추가해 데이터를 저장할 수 있음 ▶ Redis : 자주 요청되는 데이터를 저장할 때 유용 ⇒ 정렬된 세트, 해시, 목록 및 문자열과 같은 다양한 데이터 유형 지원
🍀문서 모델 데이터를 문서로 저장 ⇒ 데이터가 구조적으로 저장 ▶MongoDB ⇒ 저장되는 데이터가 복잡하고 자주 변하는 경우에 사용