<Interview> 7. 데이터베이스 정리
by BFine반응형
0. 정보와 데이터
- 인터넷에서 발생하는 불규칙적이고 많이 발생하는 값들을 데이터라고 한다.
- 이러한 데이터들을 가치있는 형태로 가공하면 의미있는 데이터가 되고 이를 정보라고 한다.
1. 데이터베이스
- 조직내에 여러 사용자들이 공유해서 사용할 수 있게 데이터들을 처리,통합하고 저장한 데이터들의 저장소이다.
- DBMS는 데이터베이스를 운영하는데 필요한 기능들을 사용자와 데이터베이스 사이에서 제공해주는 시스템이다.
- 특징 : 실시간접근, 최신의 데이터유지, 동시공유, 데이터의 내용에 따라 참조(주소값 X)
- 스키마는 데이터베이스의 개채, 속성, 관계와 제약조건에 대한 정보를 의미한다.
2. RDBMS
- 테이블 형태로 데이터를 저장하는 데이터베이스를 말한다.
- 행은 튜플 열은 속성(어트리뷰트)
- 후보키 : 튜플을 유일하게 식별하기 위한 속성집합, 유일성 & 최소성
- 무결성 : 규칙에 어긋난 데이터가 없는 것을 의미한다.
가. 쿼리 실행순서
- From -> Where -> Group by -> Having -> Select -> Order by
2. 인덱스
- 검색을 빠르게 하기위한 기술로 인덱스키와 레코드포인터 테이블을 따로 만들어서 저장하고 이를 검색한다.
- 이테이블은 인덱스를 생성할때 키값으로 정렬 되어 저장 된다.
- where, join에서 좋은 성능을 발휘한다. 대신 insert, update, delete문에서 성능이 떨어진다.(인덱스테이블도 갱신해주어야함)
가. B-Tree
- 이진트리는 균형이 맞지 않으면 비효율적이다.
- Balanced Tree로 균형을 유지하는 트리로 이진트리와 달리 하나의 노드가 여러 데이터를 가질 수 있고 하위 노드는 데이터+1를 가져야한다.
- 상위 노드안에 데이터의 왼쪽 하위노드들의 데이터는 데이터보다 작고 오른쪽 하위노드들의 데이터들은 데이터보다 커야하는 규칙이 있다.
- B-Tree는 삽입, 삭제를 해도 스스로 균형을 유지한다. 입력자료는 중복 될 수없다.
- 한노드의 최대 개수를 M이라고 하면 모든 노드는 적어도 M/2 개의 데이터를 가지고 있어야 한다.
- 리프노드로 가는 경로는 모두 같다.
3. 트랜잭션
- 데이터베이스에서 운영하는 사람이 지정한 하나의 작업단위(query 묶음)를 말한다.
- Rollback이란 트랜잭션에서 문제가 발생한경우 이전까지 처리한 작업을 되돌리는 것을 말한다.
- 트랙잭션의 특성에는 ACID가 있다.(데이터의 무결성을 보장)
가. Atomicity 원자성
- 트랜잭션의 연산작업들은 모두 반영되거나 반영되지 않아야 한다.
나. Coonsistency 일관성
- 트랜잭션과 상관없이 바뀌면 안되는 요소들의 상태는 일관성 있게 유지한다.
다. Isolation 고립성
- 트랜잭션 하는 중에 다른 트랜잭션은 낄수 없다.
라. Duarabity 영속성
- 완료된 트랜잭션의 결과는 영구적으로 반영되야한다.
4. 정규화
- 테이블을 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것이다.
5. InnoDB & MyISAM
- MySQL의 스토리지 엔진, 스토리지 엔진은 데이터를 CRUD 하는 데 사용하는 기본 소프트웨어 컴포넌트
- InnoDB는 한번 커진 데이터 파일 사이즈는 크기가 줄어도 줄지 않지만 MyISAM은 유동적으로 줄어든다.
- InnoDB의 특징은 구조가 복잡, 트랜잭션, 왜래키 지원
- MyISAM의 특징은 구조가 단순, 속도가 빠름, 검색용 스토리지로 적합
6. DDL, DML, DCL, TCL
- 데이터베이스를 구성할때 스키마를 정의하고 DBMS에서 제공하는 연산을 통해 데이터 조회,수정,삭제등을 한다.
- 이 DBMS를 작동하기 위한 언어가 SQL이다.
가. DDL 정의어
- 사용자가 정의한 데이터 스키마에 대한 내용을 시스템 카탈로그(스키마정보들 담는 장소)에 저장
- create, alter
나. DML 조작어 (Manipulation)
- 데이터베이스내에 원하는 데이터 검색,수정,삭제 하는데 사용
다. DCL 제어어
- 데이터베이스의 권한 관리를 담당
- grant, revoke
라. TCL
- 트랜잭션의 처리를 관리함
7. DBCP(Connection Pool)
- DB와 시스템과 연결하는 커넥션을 미리 만들어서 Pool에 두고 사용하는 방법이다.
- 일반적으로는 DB에 접근할때마다 커넥션이 생성되기 때문에 성능에 문제가 발생한다.
- 장점 : 커넥션 관리, 연결시간 단축(미리),
- 단점 : 트래픽이 높을 경우 대기시간이 길어짐, 커넥션 많이 생성하면 메모리 문제
8. 프로시져
- 쿼리를 함수처럼 사용하기 위해 저장된 상태로 사용하는 기능이다.(저장프로시저)
9. 트리거
- 특정 이벤트가 발생할때 반응하여 특정 작업이 자동으로 실행되게 하는 기능을 의미한다.
참고 & 출처
- https://jeong-pro.tistory.com/114
- https://m.blog.naver.com/eng_jisikin/220889188747
- https://www.youtube.com/watch?v=WBqKyrL6u-Q
- https://www.cikorea.net/bbs/view/tip?idx=8348
- https://idchowto.com/?p=20166
- https://blog.naver.com/qbxlvnf11/221143279205
- https://devbox.tistory.com/entry/JSP-커넥션-풀-1
- 데이터베이스 기초와 실습
- 정보처리기사 실기(시나공)
반응형
'공부(2018~2019) - 스킨변경전 > Interview' 카테고리의 다른 글
<Interview> 6. 기타 정리 (0) | 2019.03.25 |
---|---|
<Interview> 5. 운영체제 정리 (0) | 2019.03.06 |
<Interview> 4. 자료구조 정리 (0) | 2019.03.05 |
<Interview> 3. 네트워크 정리 (0) | 2019.03.04 |
<Interview> 2. Spring 정리 (0) | 2019.03.04 |
블로그의 정보
57개월 BackEnd
BFine