본문 바로가기

CS/데이터베이스

(8)
(1) 데이터베이스에 관해서 TRANSCATION에 대해서 설명해주세요. 데이터베이스의 논리적 연산 단위입니다. 또한 분할할 수 없는 최소의 단위입니다. TRANSACTION의 특성에 대해서 설명해주세요.(ACID) 원자성입니다. 트랜잭션에 정의된 연산들은 모두 성공적으로 실행되던지, 아니면 전혀 실행되지 않은 상태로 남아 있어야 합니다. 일관성입니다. 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안됩니다. 고립성입니다. 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안됩니다. 지속성입니다. 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장됩니다. DB에서 rollback과 commit에 대해서 설명해주세요. COMMIT은 트랜잭션을 실행, ..
정규화(Normalization) 정규화란 무엇인가요? 함수 종속성을 이용하여 릴레이션을 연관성이있는 속성들로만 구성되도록 분해해서, 이상 현상이 발생하지 않는 올바른 릴레이션으로 만들어 나가는 과정을 정규화(Normalization)이라고 합니다. 정규화의 기본 목표 관련이 없는 함수 종속성은 별개의 릴레이션으로 표현하는 것 기본정규형 제1정규형 1NF 릴레이션에 속한 모든 속성의 도메인이 원자값으로만 구성되어 있으면 제 1 정규형에 속한다. 제1정규형에 속하려면 릴레이션에 속한 모든 속성이 더는 분해되지 않는 원자 값만 가져야 한다. 최소 제1정규형을 만족해야 관계 데이터베이스의 릴레이션이 될 자격이 있다. 제1정규형에 속하지만, 불필요한 데이터 중복으로 인해 이상 현상이 발생하는 릴레이션이 있을 수 있다. 이상현상 삽입 이상 새 데..
트랜잭션(Transaction)의 격리수준(Isolation)에 대해서 알아봅시다 트랜잭션의 격리 수준(Isolation level)이란? 트랜잭션에서 일관성 없는 데이터를 허용하도록 하는 수준 격리수준 == Isolation level Isolation level의 필요성 데이터베이스는 ACID 특징과 같이 트랜잭션이 독립적인 수행을 하도록 한다. 따라서 Locking을 통해, 트랜잭션이 DB를 다루는 동안 다른 트랜잭션이 관여하지 못하도록 막는 것이 필요하다. 하지만 무조건 Locking으로 동시에 수행되는 수많은 트랜잭션들을 순서대로 처리하는 방식으로 구현하게 되면 데이터베이스의 성능은 떨어지게 될 것이다. 그렇다고 해서, 성능을 높이기 위해 Locking의 범위를 줄인다면, 잘못된 값이 처리될 문제가 발생하게 된다. 따라서 최대한 효율적인 Locking 방법이 필요함! 최대한 ..
트랜잭션(Transaction)이란?? 트랜잭션(Transaction)?? 데이터베이스의 상태를 변화시키기 위한 하나의 논리적인 작업 단위를 구성하는 연산들의 집합 작업단위란 많은 SQL 명령문들을 사람이 정한는 기준에 따라 정하는 것 예를 들어 게시판에서 사용자가 글을 작성하고 올리기 버튼을 누른 후 게시판에 다시 돌아오면 게시판에 업데이트 된 글 을 볼 수 있는 것이며, 이렇게 하나의 트랜잭션 설계를 잘 만드는 것이 데이터를 다룰 때 이점이 많다. 트랜잭션의 필요성 현금 인출기를 작동하는 도중에 기계오류나 정전 등과 같은 예기치 않은 상황이 발생하여 카드가 나오지 않거나 기계가 멈추는 경우 각각 다른 지점의 은행에서 동시에 인출할 때, 하나의 지점이 다른 지점에서 저장한 잔액을 덮어 쓰는 경우 위와 같은 상황이 발생되지 않도록 방지하기 위..
인덱스(index)? 데이터 베이스에 데이터가 많으면 많을 수록 검색 성능을 향상시키는데 도움을 주는 기술이며,인덱스의 목적은 기초데이터 관리 시스템(RDMS row data mangement system)의 검색 속도를 높이는 데 있습니다. SELECT 쿼리의 WHERE 절이나 JOIN 예약어를 사용했을 때 인덱스를 사용하여 쿼리의 검색 속도를 빠르게 하지만 insert, update, delete의 DML의 성능은 다소 떨어집니다. 인덱스의 동작 방식 인덱스가 동작하기 전 특정 컬럼명 인덱스를 설정했다고 가정합니다. 설정한 컬럼 명은 A라고 하고, 인덱스를 설정하면 A 컬럼에 대한 인덱스 테이블이 생성됩니다. 컬럼 A가 포함된 where절 쿼리를 요청하면 인덱스 테이블에서 값을 찾게 됩니다. 이 상황에서 동작은 다음과 같..
이상(Anomaly) 이상의 현상과 종류 1. 삽입이상 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제 2. 갱신이상 중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제 3. 삭제 이상 투플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제
SQL? No SQL? 둘의 차이? SQL(Structed Query Language)이란? 구조적 질의 언어의 줄임말로, 관계형 데이터베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어이다. SQL을 사용시, RDBMS에서 데이터를 저장, 수정, 삭제 및 검색할 수 있다. 관계형 데이터베이스(RDBMS)의 특징 데이터는 정해진 데이터 스키마에 따라 테이블에 저장 데이터는 관계를 통해 여러 테이블에 분산 데이터는 테이블 레코드에 저장이 되는데, 각 테이블마다 명확하게 정의된 구조가 있다. 따라서 스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없다. 즉 스키마를 수정하지 않는 이상은 정해진 구조에 맞는 레코드만 추가가 가능한 것이 RDBMS의 특징이다. 중복을 피하기 위해 관계(Relation)을 사용한다. 하나의..
여러가지 KEY 들 Key 검색이나 정렬시 튜플(Tuple)을 구분할 수 있는 기준이 되는 속성(Attribute)이다. Candidate Key(후보키) 기본키가 될 수 있는 키들!! 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성들의 부분 집합 기본키로 사용할 수 있는 속성들을 후보키라고 한다. 모든 릴레이션은 반드시 하나 이상의 후보 키를 가져야 한다. 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 한다. 유일성 : Key로 하나의 Tuple을 유일하게 식별할 수 있음 최소성 : 꼭 필요한 속성으로만 구성 Primary Key(기본키) 후보키들 중 하나! 후보 키 중 선택한 main key 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성(Attribute) Null ..