목록Computer Engineering (30)
Inor
정규화 정규화란 하나의 테이블이 갖고 있는 엔터티들의 중복을 줄여서 DB를 갱신할때 발생할 수 있는 갱신 이상을 예방하고 저장 공간의 낭비를 줄여주기 위해서 수행하는 작업입니다. 크고 제대로 조직되지 않은 테이블과 테이블의 관계를 작고 잘 조직된 형태로 변형 시키는 것을 정규화라고 합니다. 갱신이상에는 삽입 이상(insert), 삭제 이상(delete), 수정 이상(update)가 있습니다. 삽입 이상 : 원하지 않는 자료가 삽입 되거나 삽입 작업을 수행해야 하는데 자료가 부족해서 삽입하지 못하는 문제점 입니다.삭제 이상 : 하나의 자료를 삭제하고 싶지만 해당 튜플을 삭제할 경우에 원하지 않는 자료의 삭제가 동반되는 문제점 입니다.수정 이상 : 정확하지 않게 갱신 되거나 일부 튜플들만 갱신 되어 정보의 ..
Recovery DBMS는 사용자의 요청이 있거나, 트랜잭션 수행 중에 오류로 인해서 시스템이 트랜잭션을 철회 하거나, 소프트웨어나 하드웨어 문제 때문에 시스템을 재시작 했을 경우에 복구 작업을 수행 합니다. 트랜잭션 복구 시스템이 정상적으로 작동하고 있는 상황에서 트랜잭션을 철회하는 경우에는 어떻게 복구를 진행 하는지 알아보도록 하겠습니다. 먼저 로그 데이터를 역방향으로 탐색 하면서 해당 트랜잭션에서 수행 했던 일을 찾습니다. 그리고 그것을 undo 복구를 통해서 이전의 상태로 돌려 놓습니다. 이 과정에서 undo 복구를 진행했던 과정을 redo 복구를 위해서 따로 CLR(Compensation Log Record) 로그에 저장하는데 그 이유는 undo 복구를 수행하다가 잘못된 연산을 했을때 원래의 상..
Log 대부분의 DMBS는 undo, redo 복구를 위해서 log를 사용 합니다. 로그는 데이터베이스의 복구를 위해서 사용되기 때문에 매우 중요하고 데이터 손실이 있어서는 안되는 데이터 입니다. 그렇기 때문에 몇몇 DBMS에서는 여러개의 로그를 유지하며 안정적으로 사용하기도 합니다. 그러나 대부분의 DBMS에서는 성능상의 이유로 하나의 로그만을 사용 합니다. 로그는 로그 레코드의 연속이며 데이터베이스의 모든 변경 사항을 저장 합니다. 로그 레코드는 이전의 로그 레코드에 덧붙이는 방식으로 저장 됩니다. 로그 레코드는 식별을 위한 식별자를 사용해서 구분 합니다. 아래는 로그 레코드가 기록되는 방식을 보여주는 그림 입니다. 로그 레코드의 오브젝트 물리적 상태 로깅(physical state logging) ..
데이터베이스 시스템 데이터베이스는 데이터를 비휘발성 저장 장치인 디스크에 저장 하며 전체 데이터의 일부분을 메인 메모리에 유지 합니다. 이때, 데이터는 고정된 길이의 페이지로 저장 되며 디스크에 읽거나 쓸 경우에 페이지 단위로 입출력이 이루어 집니다. 메인 메모리의 페이지를 유지하는 부분을 버퍼 관리자 혹은 페이지 버퍼 관리자라고 부르는데 이 부분은 DBMS의 모듈 중에서 매우 중요한 역할을 합니다. 트랜잭션의 버퍼 관리 정책에 따라서 REDO와 UNDO 복구를 요구하거나 요구하지 않기 때문 입니다. UNDO undo 복구란 수정된 페이지를 디스크에 출력 됐을때 이 페이지가 잘못된 페이지일 경우에 이전의 상태로 되돌리는 복구를 뜻 합니다. 수정된 페이지가 디스크에 출력 될 때는 버퍼 관리자의 버퍼 교체 ..
트랜잭션 트랜잭션이란 데이터베이스의 상태를 변경 시키기 위한 작업의 단위를 의미 합니다. 하나의 작업을 수행하는 과정에서 중간에 발생한 에러로 정상적인 수행이 완료되지 않았을 경우에 되돌리는 단위가 되기도 합니다. 데이터베이스에 접근해서 데이터를 변경하는 쿼리문을 사용하다보면 하나의 쿼리문으로는 해결하지 못하는 작업이 있습니다. 예를 들어, A 계좌에서 B 계좌로 돈을 입금하는 과정이 있을 수 있습니다. 위의 과정을 수행하는 도중에 시스템에 문제가 생겨서 중간에 작업이 중단 될 수 있습니다. A에서는 돈이 인출된 것으로 나오는데 B에서는 입금이 안된 상황이 발생할 수 있습니다. 이런 과정에서 트랜잭션을 사용하면 좋은데 은행이나 금융권 개발쪽 말을 들어보면 트랜잭션이라는 단어를 많이 들을 수 있고 실제로 ..
Strategy Pattern Strategy Pattern은 클라이언트가 사용하는 알고리즘들을 분류해서 하나의 알고리즘군으로 캡슐화하는 디자인 패턴 입니다. 이렇게 디자인을 했을 경우에는 알고리즘군으로 분류된 알고리즘들을 클라이언트에서 원하는 알고리즘으로 교환이 가능하고 위임을 통해서 어떤 행동을 할지 결정 합니다. 캡슐화를 했기 때문에 알고리즘에서 수정 사항이나 알고리즘의 추가해야하는 상황이 발생 했을 경우에는 알고리즘만 수정하면 되기 때문에 유지보수에서 유리 합니다. 하지만 이 알고리즘 객체는 메서드로만 구성되는 경우가 많아서 멤버 변수와 메서드를 갖고 있어야하는 객체라는 의미에 문제가 있을 수 있습니다. 아래는 Strategy Pattern을 UML로 표현한 것 입니다. 스타크래프트에는 마린,저글..