위 책을 읽으면서 머리속에 정리한 글
(이론 서적의 경우엔 제 개인적 주관이 다분이 포함해서 작성합니다.)
1. 테이블과 인덱스 분리형
1) 의미 : 테이블 에 저장한 자료를 찾을때 인덱스 라는 정리된 자료를
뒤진뒤 그 인덱스가 지정하는 주소로 가서 해당 자료를 가져오는 방식
2) 특징 :
(1) 대부분 채용중인 방식임
(2) 용량이 크면 클수록 느려질수 있음
(3) 용량이 작더라도 느릴 수 있는 여지가 있음
(100개 찾는데 디스크 100개의 주소가 각각 좀 떨어져서 한방에
엑세스 안된다면 디스크를 좀더 돌려서 해당 위치까지 가서 가져와야함)
※ 클러스터링 팩터(Clustering Factor) :
한방에 엑세스 되는 정도가 얼마나 되는가?
혹은 한 테이블 정보의 인덱스 정보 순서와 물리적으로 저장된 테이블
정보가 혹은 위치가 얼마나 비슷한 + 응집력 있게 저장되어 있는가?
(응집력이 크다면 새 자료를 추가하기 힘드나 꺼내기 좋고
응집력이 작다면 새 자료 추가가 쉬우나 꺼내기 힘들수 있다(이론적으로))
3) 단점 보완방법
(1) 테이블을 주기적으로 새로 생성한다
(이는 또한 ClusteringFactor 향상 조치로도 쓰인다.)
테이블 응집도가 이론적으로 높아진다.
인덱스가 재정의 되며 이전보다 덜 복잡한 형태를 띈다.
(2) 파티션, 병렬처리, 각종 인덱스 기법 등을 적용한다. (차후 설명 예정)
3. 테이블과 인덱스 일체형
1) 의미 : 테이블 인덱스 뒤에 바로 내용이 나온다.
인덱스 찾음 == 내용찾음 이라는 형식이 성립된다.
2) 특징 :
(1) 현실적이지 않음 (너무 하드하잖아 컬럼 하나 추가하면 테이블이 뒤집혀?)
(2) 읽기 쉬움, 저장이 힘들지 않을까 하는 생각이 듬
(변화를 수용하는 시점에서 저장이 들어온다면 해당 위치를 적절하게
잡은 후 그 뒤 자료들은 물리적 주소를 한칸씩 밀어서 다시 적어야됨)
(3) 변화에 민감하고 적응하기 힘든 구조임
(4) 변화가 없다면 이만한게 없을듯
3) 단점 보완방법
(1) 논리적 RowID를 부여하여 해당 위치를 ID처럼 인덱스화 한다.
(무결성 보장을 못한 심지어는 무결성이 반도 안될수도 있음)
(2) 오버플로우 영역(OverFlow Area) 을 두어서 자주 쓰지 않는 내용은
거기에 몰아 넣는다.
(막상 뒤질때는 함흥차사겠지만 자주 안들른다면 전체적인 크기가
줄어들게 되므로 좋지 않은가)
3. 테이블과 클러스터링 테이블
1) 의미 :
. 테이블 1개 또는 여러개를 클러스터링 이라고 불리우는
어느정도 물리적인 Object 를 두어 해당 장소에 보관하는 방법
(....어렵다)
. 테이블의 상위개념
. 물리적인 공간에 클러스터링을 선언하고 그 안에서만 테이블을
만들겠다. (파티션인가?)
. 인덱스 < 테이블 < 클러스터링
※ 인덱스는 테이블 안에 있고 테입르은 클러스터 안에 있다.
2) 종류
(1) 목적상 분류
1> 특정 몇개 테이블의 Join 관계를 위해 물리적인 공간 제약을
주고 밀어넣는 방법 (다중 테이블 클러스터링 Multi-Table clustering)
같은 클러스터 안에 있는 테이블의 join 속도는 향상된다.
그러나 그 밖에서 join 할 경우엔 뭐뭐...도움이 안된다.
2> 한 테이블 정보는 일정 물리적 공간 안에 몰아넣겠다
(단일 테이블 클러스터링 Single Table clustering : 테이블이 하나 뿐이니
엑세스가 더 빠르지 않을까 라는 기대감이 든다.)
(2) 구현 방식 분류
1> 인덱스를 경유하는 방법 : 인덱스 클러스터(일반적인 경우)
2> 해쉬 함수를 이용하는 방법 : 해쉬 클러스터 (특이한 경우)
3) 장단점(인덱스 클러스터)
(1) 대용량 엑세스를 위해서 물리적으로 저장공간을 제약시키는건
강한 장점이라고 할 수 있다. 엑세스를 위해서 멀리까지 가지 않아도 되.
(2) 유연성이 훼손된다. (key 변경시 데이터 위치가 이동된다)
(3) 엑세스에는 도움되나 특히 대량의 저장, 삭제(drop을 쳐도 delete된다)
에서는 대량일수록 느리게 된다.
4) 장단점(해쉬 클러스터)
(1) 함수를 거쳐서 일정 데이터를 저장하려면 지정된 위치에 저장된다.
(2) 조회시에는 지정된 위치를 찾아가는 방식이 인덱스랑 같다
(3) size가 결정되야되고, =만 엑세스 해야되며, 지정된 공간보다 많은
자료가 들어오면 OverFlow Area 로 보내버린다는점은
해쉬 클러스터가 유연하지 못하여 특정 부분에서만 사용된다는 점을
알려준다.
(4) 만약에 각종 코드를 관리하틑 테이블의 경우 (etc가 없는 과목코드, 과목명
이나 사회보장번호와 연락처 등 고정 자료 보관시)에는 쓸만하다
~1장끝
댓글 없음:
댓글 쓰기