본문 바로가기

Computer Science/Database16

Query Processing & Cost Measuring Query Processing이란? 데이터베이스에서 데이터를 가져오거나 데이터를 삽입할 때 사용하는 언어를 Query라고 한다. Query Processing이란 우리가 보낸 Query를 데이터베이스가 처리하는 과정을 말한다. Basic Step 기본적으로 query를 처리하는 과정은 다음과 같다. 1. 입력받은 query를 parser와 translator가 relational-algebra 형태로 변환한다. 2. optimizer가 데이터의 통계 정보를 바탕으로 query 실행 계획을 세운다. 3. evaluation engine이 세워진 계획을 바탕으로 query를 실행하여 결과를 반환한다. Query Cost Measuring query optimization이란 query를 실행 가능한 계획 중.. 2020. 6. 24.
Hash Index Hash Index란? hash index란 데이터의 위치를 hashing을 통해 index를 저장하는 방식을 말한다. hashing이란 특정한 hash function를 정의하여 이를 통해 key 값을 일정한 범위의 수로 변환하는 작업이다. 따라서 hash function에 key 값을 통과시키면 바로 index의 위치를 얻을 수 있기 때문에 별도의 공간이 필요하지 않다. index entry들은 일정한 크기의 bucket이라는 단위로 나뉘어 저장되게 되는데, 이 때 hashing을 통해 각각의 index entry들은 어떤 bucket에 들어가게 될 지 결정되게 된다. hashing은 이 bucket을 할당하는 방식에 따라 static hashing(정적 해싱)과 dynamic hashing(동적 해.. 2020. 6. 24.
B+ Tree Index B+ Tree Index란? B+ Tree index란 B+ Tree라는 자료구조를 사용한 database index를 말한다. B+ Tree를 사용하여 index를 구현하면 기존 방식의 index보다 더 좋은 성능의 index를 구현할 수 있다. 기존 indexed-sequential file의 경우 파일이 커질수록 많은 overflow block이 발생하고, 이에 따라 성능이 하락하기 때문에 주기적으로 재구성을 해야 한다. 하지만 B+ Tree의 경우 삽입 삭제 시 자동으로 구조를 유지하기 때문에 주기적으로 재구성할 필요가 없다. 물론 삽입 삭제 시 추가적인 overhead가 발생하나, 재구성에 필요한 시간이 더 크기 때문에 B+ Tree가 유리하다. 이런 장점들 때문에 모든 relational da.. 2020. 6. 23.
Database Indexing Index란? Index란 데이터베이스에서 원하는 데이터에 빠르게 접근하기 위해 별도로 데이터의 위치를 기록한 자료구조이다. Index file(or index entry)은 search-key와 pointer로 구성되어 있으며, 일반적인 파일보다 훨씬 작은 크기를 갖는다. search-key에는 탐색할 파일의 key 값들이 저장되어 있으며, 빠른 탐색을 위해 정렬 혹은 hashing 되어 있다. 이 때, 특정한 순서로 정렬되어 있을 경우 ordered index, hash function을 통해 접근할 경우 hash index라고 한다. pointer에는 해당 key 값을 갖는 데이터의 주소값이 저장된다. index의 구조는 크게 primary index와 secondary index로 나뉘며, 데이터.. 2020. 6. 22.
Database Normalization & Functional Dependency Database Normalization이란? DB를 구성하다보면 잘못된 구조로 인하여 삽입, 삭제, 수정에 anomaly가 발생할 수 있다. 따라서 데이터를 일정한 형태와 규칙에 맞춰 구조화함으로써 이런 anomaly를 줄이게 된다. 이 과정을 Database Normalization(데이터베이스 정규화)이라고 한다. 그리고 이렇게 DB를 정규화하기 위한 형태와 규칙들을 Normal Form으로 정의하여 분류하고 있다. 가장 기본적인 Normal Form으로는 1NF, 2NF, 3NF, BCNF 등이 있다. Functional Dependency Normal Form들을 알아보기 전 먼저 Functional Dependency(함수 종속성)에 대해 알아야 할 필요가 있다. attribute set A와.. 2020. 6. 22.
Entity-Relationship Model & Diagram Entity-Relationship Model이란? Entity-Relationship Model, E-R 모델은 데이터베이스를 표현하기 위한 데이터 모델이다. E-R 모델은 다른 객체와 구별 가능한 객체인 Entity를 기반으로 구성된다. 이 때, 각각의 Entity들을 구성하는 속성들을 Attribute이라고 하며, 같은 종류의 Entity들의 집합을 Entity Set이라고 한다. 그리고 이러한 Entity Set 간의 관계를 Relationship이라고 하며, Relationship의 집합을 Relationship Set이라고 한다. E-R Diagram E-R 모델은 다음과 같이 Diagram 형태로 표현 가능하다. entity set은 사각형으로 표현하며, 상단에는 entity set의 이름,.. 2020. 6. 16.
[SQL] INNER JOIN, OUTER JOIN, NATURAL JOIN Join이란? Join 연산은 서로 다른 2개의 테이블을 결합하는 연산이다. 이 때 결합하는 방식에 따라 Inner Join, Outer Join, Natural Join 등으로 나뉜다. Inner Join SELECT * FROM instructor JOIN teaches SELECT * FROM instructor, teaches SQL에서 기본적으로 JOIN 키워드를 사용하거나 콤마(,)를 통해 연결하면 Inner Join 연산을 수행한다. 이 때, 조건이 설정되지 않은 Inner Join은 Cross Join과 같은 연산을 수행한다. Cross Join은 곱연산으로, 테이블의 각 행끼리의 모든 조합을 나타내준다. 따라서 위와 같이 2행짜리 테이블 2개를 Join을 하면 2×2=4행의 테이블이 만들.. 2020. 6. 16.
[SQL] SOME, ALL, EXISTS, NOT EXISTS, UNIQUE, WITH [SQL] Subquery 사용법 Subquery란? Subquery는 하나의 쿼리 안에 들어가 있는 다른 쿼리를 말한다. 이 때, SELECT 절에서 사용되는 Subquery는 Scalar Subquery, FROM 절에서 사용되는 Subquery는 Inline View, 그리고 WHERE 절에서 사.. ju-hy.tistory.com Subquery를 사용하면 쿼리 안에서 다른 쿼리를 사용하여 불러온 데이터를 활용할 수 있다. 조건문에서의 단순한 비교 연산이나 IN 키워드 외에 더 다양한 Subquery 활용법을 알아보자. SOME, ALL SOME 키워드를 사용하면 조회한 데이터에 하나라도 조건을 만족하는지, ALL 키워드를 사용하면 조회한 모든 데이터가 조건을 만족하는지 검사할 수 있다. SELE.. 2020. 6. 16.
[SQL] Subquery, Scalar Subquery, Inline View Subquery란? Subquery는 하나의 쿼리 안에 들어가 있는 다른 쿼리를 말한다. 이 때, SELECT 절에서 사용되는 Subquery는 Scalar Subquery, FROM 절에서 사용되는 Subquery는 Inline View, 그리고 WHERE 절에서 사용되는 Subquery를 일반적으로 Subquery라고 부른다. 이렇게 Subquery의 위치에 따라 사용 방법이 달라지는데 이를 자세히 알아보자. Scalar Subquery SELECT에서 subquery를 사용하면 새로운 쿼리를 통해 값을 불러와 새로운 속성으로 사용할 수 있다. SELECT id, name, dept_name, (SELECT AVG(salary) FROM instructor) AS avg_salary FROM inst.. 2020. 6. 16.