본문 바로가기

Database7

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.
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.
SQLiteOpenHelper 사용하여 DB 수정하기 SQLiteOpenHelper란? 많은 수의 사용자가 사용하고 있어 저장된 데이터의 양이 많을 때, 테이블을 수정하려면 어떻게 해야 할까? 사용중인 테이블의 column을 수정하거나 테이블을 삭제하는 것은 어려운 작업이다. SQLiteOpenHelper는 이런 상황에서 테이블의 수정, 삭제를 도와준다. 새로운 기능을 앱에 추가하려 테이블 구조와 코드를 수정했는데, 사용자가 앱을 업데이트 하지 않았다면 수정된 테이블과 테이블에 접근하는 코드가 맞지 않아 오류가 발생할 수 있다. 이 때 SQLiteOpenHelper를 통해 버전 관리를 해 코드 상태에 맞춰 db 구조를 변경할 수 있다. 예를 들어 DB와 소스코드를 모두 version1에서 version2로 수정했을 때, SQLiteOpenHelper를 통해.. 2020. 5. 1.
SQLite DB에 데이터 저장하기 Database란? 어플리케이션의 데이터를 저장할 때 서버를 통해 저장할 수도 있지만, 기기에 저장할 수도 있다. 안드로이드에서는 SharedPreference를 사용하여 (key,value) 형태로 데이터를 저장할 수 있는 기능을 제공한다. 하지만 단순한 형태로만 저장할 수 있기 때문에 복잡한 데이터를 저장하기에는 불편함이 따른다. 이 때, Database를 사용하면 더 체계적인 형태로 데이터를 저장할 수 있다. 안드로이드에서는 SQLite라는 임베디드 데이터베이스를 사용한다. SQLite는 관계형 데이터베이스로 Table의 형태로 데이터를 저장하며 SQL문을 통해 기능을 수행한다. 따라서 관계형 데이터베이스에 대한 지식과 SQL 문법에 대한 기본적인 지식이 필요하다. 그 내용은 아래 글을 참고하자. .. 2020. 5. 1.