라벨이 #Database인 게시물 표시

[Database] OLAP란?

[Database] OLAP란? OLAP(Online Analytical Processing)은 대용량 업무 데이터베이스를 구성하고 BI(Business Intelligence)를 지원하기 위해 사용되는 기술 데이터 웨어하우스나 데이터 마트와 같은 대규모 데이터에 대해 최종 사용자 가 정보에 직접 접근하여 대화식으로 정보를 분석 하고 의사결정에 활용할 수 있는 실시간 분석 처리 OLAP 특징 다차원성 사용자들이 실제적인 차원에서 정보를 분석 직접 접근 최종사용자들이 전산부서와 같은 정보 매개자를 거치지 않고 자신이 원하는 정보에 직접 접근 대화식 분석 시스템과 상호작용을 통해 정보를 분석하고 원하는 정보를 얻을 때까지 계속해서 분석을 수행함(Drilling) 의사 결정용 기업의 전략적 방향설정 및 의사결정에 활용 OLAP 분석 방법 여러 차원들을 따라 측정치들에 대한 빠른 접근과 강력한 계산 기능 필요 Drill Down 큰(요약된) 범위 -> 작은(상세) 범위 광역 -> 시도 -> 구 -> 동 -> 번지 Roll Up 작은(상세) 범위 -> 큰(요약된) 범위 번지 -> 동 -> 구 -> 시도 -> 광역 Pivot/Rotating 보고서의 행, 열, 페이지 차원을 무작위로 바꾸어 볼 수 있는 기능 분석 데이터의 축을 바꾸는 것 Slicing 한 차원의 멤버나 그 이상의 멤버를 가지고 한 값을 선택했을 때 나타나는 그 부분의 집합을 말한다. 큐브 자르기 Dice 특정 항목에 대해 Rotation, Drill Down, Roll Up 등을 이용하여 대화식으로 화면을 디스플레이 해가며 분석하는 프로세스 큐브 잘라서 서브 큐브 만들기 출처 https://goodgid.github.io/What-is-OLAP/

[Database] 트리거(Trigger) & 주장(Assertion)

[Database] 트리거(Trigger) & 주장(Assertion) 트리거(Trigger) 명시된 이벤트가 발생시 DBMS가 자동 수행하는 프로시져 무결성 을 위한 도구 테이블 정의 시 표현할 수 없는 기업 비즈니스 규칙을 시행하는 역할 이벤트-조건-동작(ECA) 규칙이라고도 부름 ex) 책임주부임날짜는 입사년도 이후 주장(Assertion) SQL 표준에 포함되어 있으나, 대부분의 상용 DBMS에서 아직 제공하지 않음 트리거는 제약 조건 위배하는 경우 동작하나, 주장은 제약조건이 위배되는 연산을 수행하지 못하게 함 트리거보다 좀 더 일반적인 무결성 제약 조건 일반적으로 두 개 이상의 테이블에 영향을 미치는 제약조건을 명시하는데 사용함 ex) 책임주부임날짜는 입사년도 이후 출처 https://howtofish.tistory.com/entry/DB-%ED%8A%B8%EB%A6%AC%EA%B1%B0Trigger%EC%99%80-%EC%A3%BC%EC%9E%A5Assertion

[Database] 회복기법

[Database] 회복기법 UNDO & REDO UNDO(원 상태로 돌리다) 복구 방법 사용자가 했던 작업을 반대로 진행합니다. 만약 해당 트랜잭션이 어떤 이유든 정상적으로 종료될 수 없게 되면, 즉, 데이터베이스의 내용 자체는 손상되지 않았지만 변경 중이거나 변경된 내용에 대한 신뢰성을 잃어버린 경우에 트랜잭션이 변경한 페이지들은 원상 복구되어야 합니다. 이러한 복구를 UNDO라고 하며 로그를 이용하여 모든 변경을 취소시키는 방법입니다. 이를 통해 트랜잭션의 원자성 을 제공합니다. UNDO 데이터의 기록 INSERT 시, insert된 로우의 rowid 기록 UPDATE 시, 바뀐 컬럼의 바뀌기 전 값 기록 DELETE 시, 지워진 모든 데이터 기록 REDO(다시 하다) 복구의 역할 서버에서 어떤 역할을 하든지 모두 REDO에 기록이 됨니다.(UNDO포함) 복구 방법 사용자가 했던 작업을 그대로 다시 함 데이터베이스 내용 자체가 손상이 된 경우에 가장 최근에 복제본을 적재시킨 뒤 복제혼 이후에 일어난 변경만을 로그를 이용하여 재실행함으로써 데이터베이스를 복원하는 것 이를 통해 트랜잭션의 영속성 을 제공합니다. 복구는 UNDO 를 통해서 복구를 하게 됩니다. 즉 ROLLBACK 을 한다는 말입니다. 시스템 장애가 발생하게 되면 UNDO 데이터도 모두 날아갑니다. 결국 시스템 장애시 REDO 데이터를 이용해서 마지막 CHECK POINT 부터 장애까지의 DB BUFFER CACHE 를 복구하게 됩니다. 이게 완료가 되면 UNDO 를 이용하여 COMMIT 되지 않은 데이터를 모두 ROLLABCK 함으로써 복구를 완료하게 됩니다. 결국 REDO가 UNDO를 복구하고 최종적으로 UNDO가 복구를 하게 됩니다. 지연갱신 회복 기법 & 즉시갱신 회복 기법 지연갱신 회복 기법 트랜잭션이 부분 완료 상태에 이르기까지 발생한 모든 변경내용을 로그 파일 에만 저장하고 데이터베이...

[Database] 관계대수, 관계해석

이미지
[Database] 관계대수, 관계해석 관계대수(Relation Algebra) 관계형 DB에서 원하는 정보를 검색하기 위해서 어떻게 유도할지를 기술한 절차적 언어 로 연산자와 연산 규칙을 제공한다. 질의에 대한 해를 구하기 위해 수행해야할 연산의 순서를 명시한다.(= 절차적 성격) 순수 관계 연산자 Select  Project  Join  Division 일반 집합 연산자 UNION(합집합)  INTERSECTION(교집합)  DIFFERENCE(차집합) CARTESIANPRODUCT(교차곱) 관계해석(Relation Algebra) 코드(E.F.Codd)박사가 제안한 것으로 수학의 술어해석에 기반을 두고 있다. 수학의 Predicate Calculus에 기반을 두고 있다. 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특징 을 가진다. 무엇인지만을 명시하고 질의를 어떻게 수행할 것인가는 명시하지 않는 것을 의미 SQL문과 같은 질의어를 사용하여 튜플 관계해석과 도메인 해석으로 구성된다. 비교 관계대수로 표현한 식은 관계해석으로도 표현 가능하다. 관계해석과 관계대수는 관계형 DB를 처리하는 기능과 능력면에서는 동등하다. 출처 https://gomcine.tistory.com/entry/%EA%B4%80%EA%B3%84%EB%8C%80%EC%88%98-%EA%B4%80%EA%B3%84%ED%95%B4%EC%84%9D

[Database] 시스템 카탈로그란?

[Database] 시스템 카탈로그란? 시스템 카탈로그 시스템 카탈로그는 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스 이다 시스템 카탈로그 내의 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블이다. 데이터 정의어(DDL)의 결과 로 구성되는 기본 테이블, 뷰, 인덱스, 패키지, 접근 권한 등의 데이터베이스 구조 및 통계 정보를 저장한다. 카탈로그들이 생성되면 자료사전에 저장되기 때문에 좁은 의미로는 카탈로그를 자료 사전이라고도 한다. 카탈로그에 저장된 정보를 메타 데이터라고 한다. 카탈로그의 특징 카탈로그 자체도 시스템 테이블로 구성되어 있어 일반 이용자도 SQL을 이용하여 내용을 검색 해 볼 수 있다. 어떠한 사용자도 INSERT, DELETE, UPDATE문으로 시스템 카탈로그를 직접 갱신하는 것은 허용되지 않는다. 데이터 정의어(DDL)을 통해서만 시스템 카탈로그를 갱신할 수 있다. ALTER TABLE EMPLOYEE DROP COLUMN MANAGER; 데이터베이스 시스템에 따라 상이한 구조를 갖는다. 시스템 카탈로그는 DBMS가 스스로 생성하고 유지한다. 카탈로그의 갱신   사용자가 SQL문을 실행시켜 기본 테이블, 뷰, 인덱스 등에 변화를 주면 시스템이 자동으로 갱신된다. 분산 시스템에서의 카탈로그  보통의 릴레이션, 인덱스, 사용자 등에 정보를 포함할 뿐 아니라 위치 투명성 및 중복 투명성을 제공하기 위해 필요한 모든 제어 정보를 가져야 한다. 시스템 카탈로그의 종류 SYSTABLES : 기본 테이블 및 뷰 테이블의 정보를 저장하는 테이블 SYSCOLUMNS : 모든 테이블에 대한 정보를 열(속성) 중심으로 저장하는 테이블 SYSVIEW : 뷰에 대한 정보를 저장하는 테이블 SYSTABAUTH : 테이블에 설정된 ...

[Database] DB정규화

이미지
[Database] DB정규화 데이터베이스 정규화(1NF, 2NF, 3NF, BCNF) 불필요한 데이터(redundancy)를 없앨 수 있고, 삽입/갱신/삭제 시 발생할 수 있는 각종 이상현상(Anamolies)들을 방지할 수 있습니다. 데이터베이스 정규화의 목적 불필요한 데이터(data redundancy)를 제거한다 데이터 저장을 '논리적으로' 한다.(ex: key 중복) 1차 정규화 각 로우마다 컬럼의 값이 1개씩만 있어야 합니다. 이를 컬럼이 원자값(Atomic Value)를 갖는다고 합니다.  예를 들어, 아래와 같은 경우 Adam의 Subject가 Biology와 Maths 두 개 이기 때문에 1차 정규형을 만족하지 못합니다. 위의 정보를 표현하고 싶은 경우 이렇게 한 개의 로우를 더 만들게 됩니다. 결과적으로 1차 정규화를 함으로써 데이터 redundancy는 더 증가하였습니다. 데이터의 논리적 구성을 위해 이 부분을 희생하는 것으로 볼 수 있습니다. 2차 정규화 2차 정규화부터가 본격적인 정규화의 시작이라고 볼 수 있습니다. 2차 정규형은 테이블의 모든 컬럼이 완전 함수적 종속을 만족하것입니다.  즉, 기본키 중에 특정 컬럼에만 종속된 컬럼(부분적 종속)이 없어야 한다는 것입니다 . 위 테이블의 경우 기본키는 (Student, Subject) 두 개로 볼 수 있습니다. 이 두개가 합쳐져야 한 로우를 구분 할 수 있습니다. 근데 Age의 경우 이 기본키중에 Student에만 종속되어 있습니다. 즉, Student 컬럼의 값을 알면 Age의 값을 알 수 있습니다. 따라서 Age가 두 번 들어가는 것은 불 필요한 것으로 볼 수 있습니다. 이를 해결하기 위한 방법은 위처럼 테이블을 쪼개는 것입니다. 그러면 두 테이블 모두 2차 정규형을 만족하게 됩니다. 위 테이블의 경우 삽입/갱신/삭제 이상을 겪지 않게 됩니다. 하지만 조금 더 복잡한 테이블의 경우,...

[Database] 외부 스키마, 개념 스키마, 내부 스키마

이미지
[Database] 외부 스키마, 개념 스키마, 내부 스키마 외부 스키마(External Schema) = 서브 스키마 = 사용자 뷰(View) 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한다. 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브 스키마(subschema)라고도 한다. 하나의 데이터베이스 시스템에는 여러 개의 외부 스키마가 존재할 수 있으며, 하나의 외부 스키마를 여러 개의 응용 프로그램이나 사용자가 공용할 수 있다. 같은 데이터베이스에 대해서도 서로 다른 관점을 정의할 수 있도록 허용한다. 일반 사용자는 질의어(SQL)을 사용하여 DB를 사용한다. 공용의 의미보다는 어느 개인이나 특정 응용에 한정된 논리적 데이터 구조 데이터베이스의 개별 사용자나 응용프로그래머가 접근하는 데이터베이스를 정의 사용자의 관점을 기술 개념 스키마(Conceptual Schema) = 전체적인 뷰(View) 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터 베이스로 하나만 존재한다. 단순히 스키마라고 하면 개념 스키마를 의마한다. 기관이나 조직체의 관점에서 데이터베이스를 정의한 것이다. 범 기관적 입장에서 데이터베이스를 정의한 것 데이터베이스 관리자에 의해서 구성된다. 접근권한, 보안정책, 무결성 규칙 등에 관한 명세를 기술 내부 스키마(Internal Schema) 물리적 저장장치 입장에서 본 데이터베이스 구조, 물리적인 저장장치와 밀접한 계층이다 실제로 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타낸다. 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마이다. 데이터베이스의 물리적인 구조를 정의한다. 출처 https://apphappy.tis...

[Database] 릴레이션의 특징 & 용어

이미지
[Database] 릴레이션의 특징 & 용어 릴레이션의 특징 릴레이션에 포함된 튜플들은 모두 다르다. 릴레이션에 포함된 튜플 사이에는 순서가 없다. 튜플들의 삽입, 삭제등의 작업으로 인해 릴레이션은 시간에 따라 변한다. 릴레이션 스키마를 구성하는 애티르뷰트들 간의 순서는 중요하지 않다. 애트리뷰트의 유일한 식별을 위해 애트리뷰트의 명칭은 유일해야 하지만, 애트리뷰트를 구성하는 값은 동일한 값이 나올 수 있다. 릴레이션을 구성하는 튜플은 유일하게 식별하기 위해 애트리뷰트들의 부분집합을 키로 설정한다 애트리뷰트는 더 이상 쪼갤 수 없는 원자 값만들 저장한다. 릴레이션의 용어 튜플 릴레이션을 구성하는 각각의 행 카디날리티 = 튜플의 수 튜플은 릴레이션을 구성하는 각각의 행을 말한다. 튜플은 속성의 모임으로 구성된다. 파일 구조에서 레코드와 같은 의미이다. 튜플의 수를 카디널리티 또는 기수, 대응수라고 한다. 애트리뷰트 데이터베이스를 구성하는 가장 작은 논리적 단위 차수 = 애트리뷰트의 수 속성(애트리뷰트)은 데이터베이스를 구성하는 가장 작은 논리적 단위이다. 파일 고주상의 데이터 항목 또는 데이터 필드에 해당된다. 속성은 개체의 특성을 기술한다. 속성의 수를 디그리 또는 차수라고 한다. 도메인 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자값들의 집합 도메인은 한나의 애트리뷰트가 취할 수 있는 같은 타입의 원자값들의 집합이다. 도메인은 실제 애트리뷰트 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데 이용된다. 릴레이션 인스턴스 데이터 개체를 구성하고 있는 속성들에 데이터 타입이 정의되어 구체적인 데이터 값을 갖고 있는 것을 말한다. 출처   http://bj.afreecatv.com/afstar1/posts/63273068

[Database] 분산 데이터베이스의 목표와 장단점

[Database] 분산 데이터베이스의 목표와 장단점 분산 데이터 베이스 네트워크를 통해 여러 개의 컴퓨터에 분산한 데이터 베이스를 하나의 논리적 시스템을 구성하는 데어터베이스 분산 데이터베이스의 목표 투명성  : 실제로는 DB가 여러개가 연결되어 있지만, 사용자 입장에서는 마치 하나의 데이터베이스에 모인것처럼 보이는것 위치 투명성 (Location Transparency) 액세스하려는 데이터베이스의 실제 위치를 알 필요없이 단지 데이터베이스의 논리적인 명칭만으로 엑세스 할 수 있음 (쿼리 명령을 주면 어디서 오는지는 중요하지 않다.) 중복 투명성 (Replication Transparency) 동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 마치 하나의 데이터만 존재하는 것처럼 사용하고, 시스템은 자동으로 여러 자료에 대한 작업을 수행 함 (DB를 여러개로 중복해서 복사해두면, 2명이 동시에 DB에 접근을할 때 병행제어를 할 필요가 없다.) 병행 투명성 (Concurrency Transparency) 분산 데이터베이스와 관련된 다수의 트랜잭션들이 동시에 실현되더라도 그 트랜잭션의 결과는 영향을 받지 않음 (DB가 여러개기 있기 때문에, 하나의 DB에 여러 사람이 들어가서 작업해도 이상 무) 장애 투명성 (Failure Transparency) 트랜잭션, DBMS, 네트워크, 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리 함 (하나가 망가지면 다른 쪽으로 옮겨서 사용 할 수 있도록 함) 장점 분산되어 있는 데이터를 효과적으로 이용 및 처리할 수 있으므로 공용성과 가용성이 뛰어남 추가와 폐쇄가 용이하므로 점증적으로 시스템 확장이 용이하고 적응성과 확장성이 뛰어남 다원적으로 변경이 용이하므로 신뢰성을 증진할 수 있다. 각 지역의 특색에 맞는 자원을 활용하여 하드웨어나 소프트웨어를 구축 할 수 있다. 단점 필요로 하는 장비가 많으므로 구축이 복잡하며 구축 비용이 많...

[Database] FOREGIN KEY 제약 조건

[Database] FOREGIN KEY 제약 조건 CASCADE 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블에서도 삭제와 수정이 같이 이루어줌 SET SULL 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 NULL로 변경됨 NO ACTION 참조되는 테이블에서 데이터를 삭제하거나 수정해도, 참조하는 테이블의 데이터는 변경되지 않는다. SET DEFAULT 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 필드의 기본값으로 설정됩니다. RESTRICT 참조하는 테이블에 데이터가 남아 있으면, 참조되는 테이블의 데이터를 삭제하거나 수정 할 수 업습니다. 출처 http://tcpschool.com/mysql/mysql_constraint_foreignKey

[Database] MySQL join 정리

이미지
[Database] MySQL join 정리 일반적인 join =inner join left join : 왼쪽 테이블이 기준이 되면서 겹치는 것들 출력 =left outer join right join : 오른쪽 테이블이 기준이 되면서 겹치는 것들 출력 =right outer join 출처 http://rapapa.net/?p=311

[Database] 데이터베이스 설계 순서(개념 & 논리 & 물리적 설계)

이미지
[Database] 데이터베이스 설계 순서(개념 & 논리 & 물리적 설계)데이터 베이스 설계 순서 요구분석 - 개념적 설계 - 논리적 설계 - 물리적 설계 - 구현 순으로 이루어진다. 1. 요구조건 분석 / 명세 데이터베이스의 사용자, 사용목적, 사용범위, 제약조건 등에 대한 내용을 정리하고 명세서를 작성한다. 2. 개념적 설계(E-R모델) 정보를 구조화 하기 위해 추상적 개념으로 표현하는 과정으로 개념 스키마 모델리오가 트랜잭션 모델링을 병행하고, 요구조건 분석을 통해 DBMS 독립적인 E-R 다이어그램을 작성 DBMS 독립적 개념 스키마 설계, 트랜잭션 모델링 3. 논리적 설계(데이터 모델링) 자료를 컴퓨터가 이해할 수 있도록 특정 DBMS의 논리적 자료 구조로 변환하는 과정 관계형 DB인 경우 이 단계에서 테이블을 설계하고 정규화 과정 을 거치게 된다. 목표 DBMS에 맞는 스키마 설계, 트랜잭션 인터페이스 설계 4. 물리적 설계(데이터 구조화) 논리적 구조로 표현된 데이터를 물리적 구조의 데이터로 변화하는 과정 데이터베이스 파일의 저장 구조 및 액세스 경로, 인덱스의 구조 와 저장 레코드의 크기,순서, 접근 경로 등을 결정하며, 반응시간, 공간활용도, 트랜잭션 처리량 을 고려하여 설계를 하여야 함 목표 DBMS에 맞는 물리적 구조 설계, 트랜잭션 세부 설계 5. 데이터베이스 구현 앞선 설계  단계에서 도출된 데이터베이스 스키마를 설제 파일로 생성하는 단계 특정 DBMS에서 데이터베이스 스키마를 생성한 후 데이터를 입력하며, 응요 출처 https://gomcine.tistory.com/entry/Database-6-데이터베이스 -설계-순서

[Database] 데이터 독립성

이미지
[Database] 데이터 독립성 1. 데이터 독립성에 대한 정의 데이터 독립성의 개요 DBMS의 궁극적 목적 하위 단계의 데이터 구조가 변경되더라도 상위 단계에 영향을 미치지 않는 속성 파일시스템의 경우 응용 프로그램과 데이터가 상호 밀접하게 연관되어 있어 데이터의 종속성과 중복성이 발생 데이터 종속성 : 데이터가 변경되면 응용 프로그램이 수정되어야 한다. 데이터 중복성 : 데이터의 일관성 문제 발생 ->이러한 배경으로 DBMS의 탄생 데이터 독립성의 종류 논리적 데이터 독립성 응용 프로그램에 영향을 주지 않고 데이터베이스 논리적 구조를 변경할 수 있는 능력 DBMS가 하나의 논리적 데이터 구조를 가지고 많은 응용 프로그램이 제각각 요구하는 다양한 형태의 논리적 구조로 mapping시킬 수 있는 능력이 있을 때 가능 데이터베이스를 확장(새로운 레코드 타입이나 데이터 항목 추가)히거나 데이터베이스를 축소(기존의 레코드 타입이나 데이터 항목 삭제)하면서 개념 스키마를 변경할 수 있으며, 후자의 경우 남아있는 데이터만 참조하는 외부 스키마들이 영향을 받으면 안됨 즉, 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원 외부스키마에 영향을 미치지 않으면서 개념스카마에 적용되는 제약조건들을 변경가능 물리적 데이터 독립성 응용 프로그램이나 데이터베이스의 논리적 구조에 영향을 미치지 않고 데이터의 물리적 구조를 변경할 수 있는 능력 하나의 논리적 구조로부터 여러 가지의 상이한 물리적 구조를 지원할 수 있는 mapping 능력이 있을 때 가능 내부 스키마가 변경되어도 외부/개념 스키마가 영향을 받지 않도록 지원 데이터 독립성의 기대효과 데이터베이스 관리자는 데이터베이스를 사용하는 응용 프로그램을 수정하지 않고도 데이터의 구성, 표기방법, 저장위치를 변경 가능 데이터를 접근하는 응용프로그램에 영향을 미치지 않고도 데이터를 처리하는 하드웨어나 소...

[Database] 병행 제어(Concurrency Control)

이미지
[Database] 병행 제어(Concurrency Control) 1. 병행 제어(Concurrency Control)의 개념 동시에 여러개의 트랜잭션을 병행 수행할 때, 트랜잭션들이 DB의 일관성을 파괴하지 않도록 트랜잭션간의 상호작용을 제어하는 것 병행성 : 트렌잭션들이 동시에 인터리빙(Interleaving)하게 실행되는 것 인터리빙 : 트랜잭션이 번갈아가며 조금씩 처리를 수행하는 것 2. 병행 제어의 목적 DB의 공유도 최대화 시스템 활용도 최대화 응답 시간 최소화 단위 시간당 트랜잭션 처리 건수 최대화 DB의 일관성 유지 3. 병행 제어의 필요성 트랜잭션이 병행제어 없이 DB에 동시에 접근할 경우, 다음과 같은 문제점이 발생 4. 잠금(lock) 하나의 트랜잭션이 사용중인 데이터를 다른 트렌젝션이 접근하지 못하게 하는 것 데이터를 갱신할 때 순서 잠금(lock) -> 실행(Execute) -> 해제(Unlock) 교착 상태 : 데이터를 사용중인 트랜잭션이 잠가놓은 자원을 사용하기 위해 다른 트랜잭션들이 무한정 대기하는 현상 5. 병행 제어 기법의 종류 2단계 잠금 규약 기법 트랜잭션 스케쥴의 직렬성을 보장하는 대표적인 기법 2단계는 다음과 같다 확장 단계 : 잠금만 수행할 수 있음(해제 불가) 축소 단계 : 해제만 수행할 수 있음(잠금 불가) 장점: 직렬성 보장/ 단점 : 교착 상태 예방 불가능 타임 스탬프 기법 동시성 제어를 위한 직렬화 기법으로 트랜잭션 간의 순서를 미리 정함. 시스템에 도착한 순서대로 타임 스탬프를 부여하여, 순서대로 실행하도록 한다. 교착 상태가 발생하지 않는다. 락킹 하나의 트랜잭션이 데이터를 액세스하는 동안 다른 트랜잭션은 그 데이터를 액세스 할 수 없게 하는 방법 트랜잭션은 데이터를 액세스하기 전에 Lock을 요청하고 액세...

[Database] 키의 종류와 기능

이미지
[Database] 키의 종류와 기능 DB를 공부하다 보면 테이블과 레코드, 필드 다음으로 많이 접하는 단어는 아마도 기본 키, 왜래 키와 같은 키(key)일것이다. 이러한 종류의 키들은 DB에서 데이터의 무결성 을 유지하기 위한 중요한 수단 DBMS에서 이용하는 키(key)에는 여러 종류가 있으며 다음과 같다. 1. 슈퍼 키(Super Key) 테이블에 존재하는 필드들의 부분집합으로써 즉, 하나 이상의 속성들의 집합으로 이루어진 것 유일성 은 만족하지만 최소성 은 만족하지 않아도 됨 유일성 : 하나의 키로 어떠한 행을 바로 찾아낼 수 있는 능력 후보키 나, 기본키 가 만족하는 것들 최소성 : 꼭 필요한 속성들로만 구성해야 하는 것 슈퍼키를 보면 예를들어서, 학번 + 주민등록번호 이렇게 굳이 합쳐서 사용하므로 공간낭비가 나오므로 최소성은 만족하지 않음 슈퍼키안에 후보키가 있고, 후보키를 보면 기본키와 대체키로 나뉘어짐 2. 후보 키(Candidate key) 기본 키가 될 수 있는 후보 후보키는 테이블에 존재하는 전체 필드의 부분집합 유일성 과 최소성 을 만족해야 함 3. 기본 키(Primary key) 테이블에서 특정 레코드를 구별하기 위해 후보 키중에서 선택된 고유한 식별자 유일성 과 최소성 의 속성을 가져야 하며, NULL값을 가질 수 없다 . 기본키를 설정할 때 아래와 같은 두 가지 사항을 고려하는 것이 좋다 값이 자주 변경되지 않는 것을 선택 기본키의 값이 변경될때 마다 해당 값이 유일한지, NULL값이 아닌지를 검사해야 하므로 자주 변경되지 않는것이 좋음 값이 단순한 것을 선택 짧고 단순한 데이터를 저장하는 필드를 기본키로 설정하는것이 DBMS의 성능에 유리 4. 대체 키(Alternate key) 후보 키 중에서 기본 키로 선택된 것들을 제외한 모든 키 5. 복합 키(Composite key) 한 개 이상의 필드를 포함하는 키를 복...

[Database] 데이터의 무결성

이미지
[Database] 데이터의 무결성 데이터의 무결성 : 데이터의 정확성, 일관성, 유효성 이 유지되는 것 즉, 데이터가 인가되지 않은 방법으로 변경할 수 없도록 보호하는 성질 데이터의무결성을 유지하는 것은 데이터베이스 관리 시스템(DBMS)에서 중요한 기능 주로 데이터에 적용되는 연산에 제한 을 두어 데이터의 무결성을 유지 데이터베이스에서 말하는 무결성에는 다음과 같은 4가지 종류가 있음 1. 개체 무결성(Entity integrity) 모든 테이블은 기본 키(primary key)로 선택된 필드(column)를 가져야 함 기본 키를 구성하는 어떠한 속성 값도 널(Null) 값이나 중복 값을 가질 수 없음을 의미 2. 참조 무결성(Referential integrity) 관계형 데이터베이스 모델에서 참조 무결성은 참조 관계에 있는 두 테이블의 데이터가 항상 일관된 값을 갖도록 유지되는 것 아래의 그림에서 관계형 데이터베이스 모델에서 참조 무결성이 깨지는 경우를 보여 준다. department 테이블을 참조하는 student 테이블을 보여주고 있다. 이러한 참조 관계에서 만약 departmetn테이블에서 id 값이 310인 레코드가 삭제되면 student테이블의 3번째 레코드는 더 이상 존재하지 않는 데이터를 참조함 3. 도메인 무결성(Domain integrity) 도메인 무결성은 테이블에 존재하는 필드의 무결성을 보장하기 위한 것 필드의 타입, NULL값의 허용 등에 대한 사항을 정의하고, 올바른 데이터의 입력이 되는지 확인하는 것 ex) 주민등록 필드에 알파벳이 입력되는 경우는 도메인 무결성이 깨지는 경우 ex) DBMS의 기본값 설정, NOT NULL 옵션 등의 제약 사항으로 도메인 무결성을 보장할 수 있음 4. 키 무결성 규칙(Key integrity) 한 릴레이션(테이블)에는 최소한 하나의 키가 존재해야 하는 제약조건 5. 무결성 규칙...

[용어 정리] Commit이란?

[용어 정리] Commit이란? COMMIT : 저장되지 않은 모든 데이터를 데이터베이스에 저장하고 현재의 트랜잭션을 종료하라는 명령 데이터베이스에서 트랜잭션(Transaction) 이란, 논리적인 일의 단위를 말함. 예를들어서, 생각해보면 사용자가 INSERT 문을 사용해 데이터를 삽입하고, UPDATE문으로 데이터를 갱신하고, DELETE 문으로 데이터를 삭제하였다고 하자 만약 이 모든 과정이 오류없이 수행되었다면 지금까지 실행한 모든 작업을 ' 실제로' 수행하라는 명령 을 내릴 수 있는데 이 때의 명령이 바로 COMMIT 명령 COMMIT 명령을 주기 전까지의 모든 작업은 ROLLBACK 명령으로 원상태로 되돌릴 수 있음 만약, INSERT작업 후 SAVEPOINT A라는 명령을 실행하였다면 나중에 ROLLBACK 라는 명령을 통해 INSERT작업을 한 그 위치로 되돌아 올 수 있음 그러나 COMMIT을 실행하면 불가능 이와 같이 COMMIT 명령으로 하나의 작업이 성공적으로 끝났을 때, 트랜잭션이 끝났다고 볼 수 있음 출처 https://m.blog.naver.com/PostView.nhn?blogId=woghdi8318&logNo=51124164&proxyReferer=https%3A%2F%2Fwww.google.com%2F

[Database] SQL 문장의 실행 원리

이미지
[Database] SQL 문장의 실행 원리 SQL문장의 실행 과정 정리 User Process가 서버 위치 정보가 들어있는 tnsnames.ora를 참고해 해당 서버로 찾아감 TNS(Transparent Network substrate) : 오라클에서 사용하는 기술로, Client/Server 또는 Server/Server간에도 Data의 전송을 가능하게 해주는 기술 tnsnames.ora : 오라클 client측에서 오라클 서버로 접속할 때 필요한 프로토콜 및 포트번호, 서버주소, 인스턴스등을 설정해주는 파일로서 client쪽에 위치 서버 쪽 listener.ora 파일 안에 접속하려는 서버 IP가 있으면 리스너는 해당 Server Process를 불러옴 listener.ora : 오라클 서버에서 클라이언트의 요청을 듣고, 클라이언트와의 통신 환경을 설정하는 파일 User Process는 Server Process에게 수행해야할 쿼리 전달 Server Process는 Parse -> Execute -> Fetch 과정을 통해 쿼리 수행 SQL문장을 받은 서버프로세스는 Syntax check, Semantic Check를 한후 권한 검사 실행 계획이 있는 경우 : Execution 단계로 진행 실행 계획이 없는 경우(=공유 X, Soft Parse실패) : 옵티마이저를 찾아가 실행계획을 찾아달라 함(Hard Parse) 작업이 끝나면 Server Process는 결과값은 User Processd에게 전달하고, User Process는 사용자에게 전달 주의할점 오라클과 리스너는 서로 다른 프로그램이기 때문에 server는 켜져 있는데 listener가 죽어있는 경우도 있음 --> 신규 접속 불가능 리스너는 새로 들어오는 client만 관리 이미 들어와 있는 사용자는 리스너를 통하지 않고 바로 server process와 연결함 리스너에 장애가 나면 전에 접속한 사람은 이용가능하지만, 신...

[SQL] PK 2개이상 만들때 나는 오류

[SQL] PK 2개이상 만들때 나는 오류 보통 테이블 만들 때 create tale 테이블명(  컬럼1 BIGINT primary key    컬럼2 BIGINT primary key );    이렇게 하면 기본키 에러가 발생한다. 기본키는 복수가 되는데 왜? 라는 의문이 생긴다 기본키를 구성하는 컬럼은 복수일수 있어도, 기본키는 복수일 수 없다. 그럼 기본키를 구성하는 컬럼을 복수로 하기 위해서 어떻게 하느냐 create tale 테이블명(  컬럼1 BIGINT    컬럼2 BIGINT CONSTRAINT 기본키이름 PRIMARY KEY(컬럼1,컬럼2) ); 이렇게 하면 됨 하지만, 한 테이블에 기본키를 복수로 지정하는것보다 하나만 지정하는것이 더 좋음 출처  http://multifrontgarden.tistory.com/31

[Database] SQL 명령어 정리

[Database] SQL 명령어 정리 SELECT * FROM Customers; SELECT DISTINCT column1, column2 FROM Customers; SELECT * FROM Customers WHERE Country='Mexico'; SELECT column1, cloumn2 FROM Customers WHERE Country='Mexico' AND City='Berlin'; SELECT column1, cloumn2 FROM Customers WHERE Country='Mexico' OR City='Berlin'; SELECT column1, cloumn2 FROM Customers WHERE NOT Country='Mexico'; SELECT column1, cloumn2 FROM Customers ORDER BY Country DESC; INSERT INTO Customers (column1, cloumn2) VALUES ('Tom','Teddy'); SELECT column1, cloumn2 FROM table_name WHERE column_name IS NULL; UPDATE Customer SET ContactName="Tom" WHERE CustomerID =1; 출처 https://www.w3schools.com/sql/default.asp