no image
[SQLD] 8. 반정규화와 성능
제 3절 반정규화와 성능 1. 반정규화를 통한 성능향상 전략 가. 반정규화의 정의 반정규화(=역정규화, De-Normalization)는 정규화된 엔티티, 속성, 관계에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델리의 기법을 의미한다. 즉, 데이터를 중복하여 성능을 향상시키는 기법이며, 더 넓은 의미의 반정규화는 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정을 포함하게 된다. 데이터 무결성이 깨질 수 있는 위험성이 있는 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나 칼럼을 계산하여 읽을 때 성능이 저하될 것이..
2016.08.04
no image
[SQLD] 7. 정규화와 성능
제 2절 정규화와 성능 1. 정규화를 통한 성능 향상 전략 데이터 모델링을 하면서 정규화를 하는 것은 기본적으로 데이터에 대한 중복성을 제거해주고 데이터가 관심사별로 처리되는 경우가 많기 때문에 성능이 향상되는 특징을 가지고 있다. 물론 조인이 많이 발생하여 성능저하가 나타나는 경우도 있지만 이런 부분은 사례별로 유의하여 반정규화를 해야한다. 정규화를 수행한다는 것은 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반 속성을 의존자로 하여 입력/수정/삭제 이상을 제거하는 것이다. 데이터의 중복속성을 제거하고 결정자에 의해 동일한 의미의 일반속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화 되는 효과가 있다. 따라서 정규화된 테이블은 데이터를 처리할 때 속도가 빨라질 수도 있..
2016.08.04
no image
[SQLD] 6. 성능 데이터 모델링의 개요
제 1절 성능 데이터 모델링의 개요 1. 성능 데이터 모델링의 정의 성능이 저하되는 데이터 모델- 잘못 설계된 데이터 모델 구조- 대용량 데이터를 가진 구조- 인덱스의 특성을 무시한 인덱스 생성 성능 데이터 모델링데이터 베이스 성능 향상을 목적으로 설계 단계의 데이터 모델링 때 부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것 - 정규화를 통해서 수행- 인덱스의 특징을 고려하여 칼럼의 순서를 변형- 대량의 데이터 특성을 고려햐여 정규화 됬다고 하더라도 테이블을 수직 또는 수평분할하여 적용- 논리적인 테이블을 물리적인 테이블로 전환할 때 데이터 처리의 성격에 따라 변환 2. 성능 데이터 모델링 수행시점 성능향상을 위한 비용은 프로젝트 수행 중에 있어서 사전에 할수록 비용이 적게 든다.특..
2016.08.04
no image
[SQLD] 5. 식별자(Identifiers)
제 5절 식별자 1. 식별자(Identifiers) 개념 여러 개의 집합체를 담고 있는 하나의 통에서 각각을 구분할 수 있는 논리적인 이름이 있어야 한다. 이 구분자를 식별자(Identifier)라고 한다. 식별자란 하나의 엔티티에 구성되어 있는 여러 개의 속성 중에서 엔티티를 대표할 수 있는 속성을 의미하며 하나의 엔티티는 반드시 하나의 유일한 식별자가 존재해야 한다. 여기서 식별자와 키를 동일하게 생각하는 경우가 있는데 식별자라는 용어는 업무적으로 구분이 되는 정보로 생각할 수 있으므로 논리 데이터 모델링 단계에서 사용하고, 키는 데이터베이스 테이블에 접근을 위한 매개체로서 물리 데이터 모델링 단계에서 사용한다. 2. 식별자의 특징 - 주식별자에 의해 엔티티 내에 모든 인스턴스들이 유일하게 구분되어야..
2016.08.01
no image
[SQLD] 4. 관계(Relationship)
제 4절 관계(Relationship) 1. 관계의 개념 가. 관계의 정의 사전적 정의 : 상호 연관성이 있는 상태데이터 모델에 의한 정의 : 엔티티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태 나. 관계의 패어링 각각의 엔티티의 인스턴스들은 자신이 관련된 인스턴스들과 관계의 어커런스로 참여하는 형태를 관계 패어링(Relationship Paring)이라 한다. 관계는 엔티티 안에 인스턴스가 개별적으로 관계를 가지는 것(패어링)이고 이것의 집합을 관계로 표현한다는 것이다. 최초의 ERD 모델에서는 관계는 속성을 가질 수 있었으나 요즘의 ERD 에서는 관계를 위해 속성을 도출하지 않는다. 관계의 표현에는 이항관계(Binary Relationship), 삼..
2016.08.01
no image
[SQLD] 3. 속성(Attribute)
제 3절 속성(Attribute) 1. 속성의 개념 사전적인 의미 : 사물의 성질, 특징 또는 본질적인 성질, 그것이 없다면 실체를 생각할 수 없는 것데이터 모델링 관점에서의 의미 : 업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위 - 업무에서 필요로 함 - 의미상 더 이상 분리되지 않음- 엔티티를 설명하고 인스턴스의 구성요소가 됨 2. 엔티티, 인스턴스와 속성, 속성값에 대한 내용과 표기법 가. 엔티티, 인스턴스, 속성, 속성값의 관계엔티티에는 두 개이상의 인스턴스가 존재하고 각각의 엔티티에는 고유의 성격을 표현하는 속성정보를 두 개 이상 갖는다.엔티티 내에 있는 하나의 인스턴스는 각각의 속성들에 대해 한 개의 속성값 만을 가질 수 있다. 예를 들면, ..
2016.08.01
no image
[SQLD] 2. 엔티티(Entity)
제 2절 엔티티(Entity) 1. 엔티티의 개념 Peter Chen (1976) : 변별할 수 있는 사물C.J Data (1986) : 데이터베이스 내에서 변별 가능한 객체James Martin (1989) : 정보를 저장할 수 있는 어떤 것Thomas Bruce (1992) : 정보가 저장될 수 있는 사람, 장소, 물건, 사건 그리고 개념 등 위 개념들의 공통점- 엔티티는 사람, 장소, 물건, 사건 개념 등의 명사- 엔티티는 업무상 관리가 필요한 관심사- 엔티티는 저장이 되기 위한 어떤 것(Things) 엔티티란 "업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것(Thing)"이다. 이 엔티티는 업무 활동상 지속적인 관심을 가지고 있어야 하는 대상으로서그 대상들 간에 동질성을 지닌 인..
2016.08.01
no image
[SQLD] 1. 데이터 모델의 이해
SQLD를 공부하기에 앞서서 SQL-D 폴더에 업데이트 하는 내용의 출처는 모두 http://www.dbguide.net 이곳에서 가져왔다. 제 1절 데이터 모델의 이해 1. 모델링의 이해 가. 모델링의 정의 1) Webster 사전에 의한 정의가설적 또는 일정 약식에 맞춘 표현 또는 어떤 것에 대한 예비 표현으로 그로부터 최종대상이 구축되도록 하는 계획으로서 기여하는 것2) 복잡한 현실세계를 단순화 시켜 표현하는 것3) 모델이란 사물 또는 사건에 관한 양상이나 관점을 연관된 사람이나 그룹을 위하여 명확하게 하는 것4) 모델이란 현실세계의 추상화된 반영 나. 모델링의 특징1) 추상화 : 현실세계를 일정한 형식에 맞추어 표현을 함, 즉, 다양한 현상을 일정한 양식인 표기법에 의해 표현2) 단순화 : 복잡한..
2016.08.01
no image
[인공지능] LIBSVM 사용법 / visual studio 2013 / c++
svm 개념 참고 ( http://eehoeskrap.tistory.com/45 ) Training Data & Lable인공지능에서 기계학습의 개념을 말해보자면 기계에게 학습을 시킬 데이터를 즉, Training Data라고 지칭한다.'사람' 이라는 데이터가 있다고 했을 때, 키, 몸무게, 입고있는 옷, 머리카락 길이 등의 정보는 '사람'이라는 데이터의 Feature 가 된다.이러한 각각의 Feature들을 지닌 100명의 사람이 있다고 가정하자100명의 사람들을 분류하고 싶을 때 분류할 수 있는 기준은 여러가지가 존재하게 된다.이 기준을 정하고 분류 했을 때 가지는 값이 바로 Label 이 된다.기준을 성별로 한다고 치자, 그러면 A는 여자다. A의 Label 값은 '여자'가 될 것이다. Class ..
2016.07.18
no image
[인공지능] SVM (Support Vector Machine, 서포트 벡터 머신)
SVM (Support Vector Machine) 서포트 벡터 머신은 인공지능의 기계학습 분야 중 하나로, 패턴인식, 자료분석을 위한 지도학습 모델이다.즉, 2개의 범주를 분류하는 이진 분류기이다. 주로 분류와 회귀 분석을 위해 사용되며, SVM 알고리즘은 주어진 데이터 집합을 바탕으로 하여 새로운 데이터가 어느 카테고리에 속할 것인지 판단하는 비확률적 이진 선형 분류 모델을 만들게 된다. SVM의 기본적인 원리는 위와 같은 사진에서 살펴 봤을 때, 흰색 바둑알과 검은색 바둑알이 학습용 데이터로 주어졌다고 하자 두 그룹에서 각각의 데이터 간 거리를 측정하여 두 개의 데이터 사이의 중심을 구한 후에 그 가운데에서 최적의 초평면(Optimal Hyper Plane)을 구함으로써 흰색과 검은색 그룹을 나누는..
2016.07.18
no image
Kruskal Algorithm and Prim Algorithm (크루스칼, 프림 알고리즘)
Kruskal Algorithm과 Prim Algorithm은 Greedy Algorithm를 적용하는 알고리즘 중의 하나이다. 최소신장트리를 구성할 때, 최적의 해를 구하려면 가중치를 낮은 간선을 선택하는 것이 좋다. 그래서 고안된게 바로 크루스칼 알고리즘이다. 크루스칼 알고리즘은 각 단계에서 가중치가 작은 간선부터 선택한다.선택하는 과정에서 사이클이 만들어질 경우 그 간선은 선택하지 않는다.그리고, 신장트리는 n개의 정점을 가질 때, 반드시 n-1개의 간선을 가지게 되어있으므로 간선이 n-1개가 되면 종료하면 된다. 크루스칼 알고리즘은 다음과 같은 사항을 고려해야한다. 1. 가중치가 작은 간선을 선택하는 데는 많은 시간이 소요되므로 모든 간선을 오름차순으로 정렬2. 깊이우선탐색(DFS), 너비우선탐색..
2016.04.11
Greedy Algorithm (탐욕 알고리즘, 그리디 알고리즘)
Greedy Algorithm은 해답에 포함될 원소들을 차례로 선택하는 과정을 거치게 되는데, 각 단계에서는 전체적인 상황을 종합적으로 판단하고, 고려하여 결정하는 것이아니라 현 시점의 정보를 바탕으로 가장 이익이 되는 원소들을 선택하는 방법이라고 할 수 있다. 복잡한 과정을 거치지 않고, 상황을 종합적으로 판단하는게 아니기 때문에 매우 빠른 알고리즘이라고 할 수 있다. 이러한 Greedy Algorithm은 '최적화 문제(optimization problem)'를 해결하기 위한 방법의 일환으로서, 예를들어 최소비용신장트리를 구하는 문제를 예로 들 수 있다. 주어진 문제에 대해 최적해를 구하는데 있어서, 문제가 부문제들로 쪼개지고, 그러한 각 부문제들의 최적해로부터 효율적으로 최적해를 구하게 될 때 Gr..
2016.04.11