본문 바로가기
IT_Developers/NoSQL

ArangoDB | 강의 | 05 - INDEX

by 고코더 2017. 7. 1.



1. 아랑고 INDEX 종류 




1.1 GEO 인덱스
     - 지리적 위치를 담는 인덱스

1.2 Hash 인덱스
     - 변형된 값을 저장하는 인덱스 이므로 == 동등 비교 조건일때 유리
     - inner join 될 컬럼에 사용

1.3 Presistent 인덱스
     - ???

1.4 FUlltext 인덱스
     - LIKE 검색등에서 속도 향상을 위한 글씨 검색에 사용할 인덱스 
     - 정보,내용등에 like 될 활용될 컬럼에 이용

1.5 Skip-List
     - 정렬을 유지하면서 데이터를 삽입, 삭제, 탐색 할수 있는 데이터 구조 





2. INDEX / GUI를 통한 생성방법


     2.1 메뉴 
          - 컬렉션에서 Indexes라는 메뉴를 클릭한다.
          - shell 에서 커맨드로 가능하지만 AQL상에서는  index 생성이 안되는듯 하다.



     
     2.2 생성 방법
          - Type은 1번에 기록
          - Field에 인덱스를 선언할 컬럼 이름을 쓴다.
          - Unique 고유에 값을 가진 컬럼인지
          - Sparse Index null값이 위주에 데이터인지  하나 이상의 필드에 Null 값을 가진 데이터가 대부분이고 드물게 어떤 데이터를 값을 가지고 있는 경우에 생성하는데 효율적 검색 대상 필드의 값이 전체 컬렉션에서 차지하는 밀도가 낮은 경우에 생성하면 유리한 인덱스 타입







2. INDEX / PHP를 통한 생성방법


 - Collection()를 통하여 다양한 인덱스를 만들어 낼수 있다. 컬렉션을 생성후에 인덱스를 생성할수 있으며
 -  아직 만들어지지 않는 컬럼을 미리 인덱스를 선언할수 있다. (3만개 이상의 데이터를 가진 상태에서 index를 생성하면 다운되고 있음...)
 -  PHP를 통한 아랑고디비 사용법은 다음 강의에 설명하겠습니다. DB상에서 말고 언어상에서 바로 인덱스를 설정할 수 있구나라고만 눈으로 보시면 됩니다.
$collectionHandler = new ArangoCollectionHandler($connection) // 컨넥션 핸들을 만들어 낸다.
$collectionHandler->createHashIndex($id,array("name"),null,null);           //Hash 인덱스 생성, 컬렉션 생성후에 반환된 ID를 이용해야 한다.
$collectionHandler->createFulltextIndex($id,array("content"),null);         //FulltextIndex 생성
    //createSkipListIndex, createPersistentIndex 도 같은 방법으로 생성 가능하다.
}



3. INDEX 테스트


     3.1 INNER JOIN 테스트  
          - 인덱스를 걸기 전 230.613ms
          - 인덱스 이후 13.035ms 
          - 약 20배 가량의 차이가 난다.




댓글