You will be fine

<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. 트리거

  • 특정 이벤트가 발생할때 반응하여 특정 작업이 자동으로 실행되게 하는 기능을 의미한다.

참고 & 출처

반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기