Study cs 7일차(데이터베이스)

데이터베이스 특징 5가지

데이터의 독립성

물리적 독립성 : 데이터의 물리적 구조를 변경하더라도 응용 프로그램이나 데이터베이스의 논리적 구조에는 영향을 미치지 않는다.

논리적 독립성 : 데이터의 논리적 구조를 변경하더라도 응용 프로그램에 영향을 미치지 않는다.

데이터의 무결성

데이터의 정확성과 일관성을 유지하고 보증하는 것.

데이터의 보안성

인가된 사용자들만 자원에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정함으로써 모든 데이터에 보안을 구현할 수 있다.

데이터의 일관성

연관된 정보를 논리적인 구조로 관리함으로써 어떤 하나의 데이터만 변경했을 경우 발생할 수 있는 데이터의 불일치성을 배제할 수 있다. 또한 작업 중 일부 데이터만 변경되어 나머지 데이터와 일치하지 않는 경우의 수를 배제할 수 있다.

데이터 중복 최소화

데이터베이스는 데이터를 통합해서 관리함으로써 파일 시스템의 단점 중 하나인 자료의 중복과 데이터의 중복성 문제를 해결할 수 있다.

DB에서 인덱스를 사용시 장단점

장점

항상 정렬된 상태를 유지하기 때문에 검색 효율 증가

단점

삽입, 삭제, 수정 시 성능 저하

B-Tree Index 알고리즘은 무엇이고 왜 Inedx 생성시 사용하는가?

정의

B+-Tree 인덱스는 칼럼의 값을 변형하지 않고(사실 값의 앞부분만 잘라서 관리한다.), 원래의 값을 이용해 인덱싱하는 알고리즘이다.

Index 생성시 왜 사용하는가

hash table을 사용하게 된다면 = 연산이 아닌 부호 연산에서 문제 발생한다. 따라서 가장 적합한 B-Tree로 인덱스를 사용함.

정규화와 정규형란?

정규화

관계형 데이터베이스에서 중복을 최소화하기 위해서 데이터를 구조화하는 작업

정규형

특정 조건을 만족하는 릴레이션의 스키마의 형태

함수종속성

속성의 의미와 속성들 간의 상호관계로부터 유도되는 제약조건의 일종

정규화 장단점을 설명하시오.

장점

데이터베이스 변경 시 이상 현상 제거

데이터베이스 구조 확장 시 재디자인 최소화

단점

릴레이션 간의 잦은 조인연산으로 응답시간이 느려질 수 있다.

트랜잭션 사용목적과 특징 4가지

목적

작업의 완전성 보장

특징

원자성(Atomicity)

트랜잭션과 관련된 일은 모두 실행되던지 모두 실행되지 않도록 하던지를 보장하는 특성이다.

일관성(Consistency)

트랜잭션이 성공했다면, 데이터베이스는 그 일관성을 유지해야 한다. 일관성은 특정한 조건을 두고, 그 조건을 만족하는지를 확인하는 방식으로 검사할 수 있다.

고립성(Isolation)

각각의 트랜잭션은 서로 간섭없이 독립적으로 수행되어야 한다. 임계영역을 두는 것으로 달성할 수 있다.

지속성(Durability)

성공적으로 트랜잭션이 수행되었다면, 그 결과는 완전히 반영이 되어야 한다. 완전히 반영되면 로그를 남기게 되는데, 후에 이 로그를 이용해서 트랜잭션 수행전 상태로 되돌릴 수 있어야 한다. 때문에 트랜잭션은 로그저장이 완료된 시점에서 종료가 되어야 한다.

반정규화의 목적과 대상이 되는 것 3가지

목적

정규화로 인한 릴레이션 간의 연산(join 연산)이 많아져 성능저하가 발생하는 경우 반정규화를 적용

대상

  1. 자주 사용되는 테이블에 엑세스하는 프로세스의 수가 가장 많고, 항상 일정범위만을 조회하는 경우
  2. 테이블에 대량 데이터가 있고 대량의 범위를 자주 처리하는 경우, 성능 상 이슈가 있을 경우
  3. 테이블에 지나치게 조인을 많이 사용하게 되어 데이터를 조회하는 것이 기술적으로 어려울 경우

갱신 이상 3가지

삽입 이상(insertion anomalies)

원하지 않는 자료가 삽입된다든지, 삽입하는데 자료가 부족해 삽입이 되지 않아 발생하는 문제점을 말한다.

삭제 이상(deletion anomalies)

하나의 자료만 삭제하고 싶지만, 그 자료가 포함된 튜플 전체가 삭제됨으로 원하지 않는 정보 손실이 발생하는 문제점을 말한다.

수정(갱신)이상(modification anomalies)

정확하지 않거나 일부의 튜플만 갱신되어 정보가 모호해지거나 일관성이 없어져 정확한 정보 파악이 되지 않는 문제점을 말한다.

Preparedstatment가 속도면에서 빠른 이유는?

쿼리 수행전 이미 쿼리가 컴파일 되어 있으며, 반복 수행되는 경우에도 컴파일된 쿼리로 수행되기때문이다.

NoSQL이란?

관계형 데이터 모델을 지양 하며 대량의 분산된 데이터를 저장하고 조회하는 데 특화되었으며 스키마 없이 사용 가능하거나 느슨한 스키마를 제공하는 저장소를 말한다.

NoSQL 분산 노드 간의 데이터 동기화를 위해서 두 가지 방법과 특징은?

동기식 방법

데이터의 저장 결과를 클라이언트로 응답하기 전에 모든 노드에 데이터를 저장하는 동기식 방법.

그만큼 느린 응답시간을 보이지만 데이터의 정합성을 보장한다.

비동기식 방법

메모리나 임시 파일에 기록하고 클라이언트에 먼저 응답한 다음, 특정 이벤트 또는 프로세스를 사용하여 노드로 데이터를 동기화하는 비동기식 방법.

빠른 응답시간을 보인다는 장점이 있지만, 쓰기 노드에 장애가 발생하였을 경우 데이터가 손실될 수 있다.

저장 방식에 따른 NoSQL 분류 3가지

Key-Value Model

가장 기본적인 형태의 NoSQL이며 키 하나로 데이터 하나를 저장하고 조회할 수 있는 단일 키-값 구조를 갖는다.

대표 예 : Redis

Document Model

키-값 모델을 개념적으로 확장한 구조로 하나의 키에 하나의 구조화된 문서를 저장하고 조회한다.

대부분의 문서 모델 NoSQL은 B트리 인덱스를 사용하여 2차 인덱스를 생성한다.

대표 예 : MongoDB

Column Model

하나의 키에 여러 개의 컬럼 이름과 컬럽 값의 쌍으로 이루어진 데이터를 저장하고 조회한다. 모든 컬럼은 항상 타임 스탬프 값과 함께 저장된다.

읽기보다 쓰기에 특화됨. 채팅내용 저장, 실시간 분석을 위한 저장소에 사용

대표 예 : 구글 빅테이블

참조사이트