본문 바로가기
noSql

CouchBase > Primary Index 와 Secondary Index

by 즐겁게살자 2022. 12. 27.
728x90

Couchbase 공식 가이드 참조

 

카우치 베이스에는 Index에 두가지 타입이 존재한다.  하나는 Primary Index, 다른 하나는 Secondary Index.

 

 

Primary Index

primary Index라고 하면 RDB 에서의 primary index라고 생각 될 수 있는데, 그것과는 성격이 다르다.

No Sql 특성상 JSON 도큐먼트의 ID (document id) 라고 봐야 한다. Document 키스페이스만 Primary Index가 될 수 있다.

 

예를 들어 아래 같이 쿼리한 결과,

SELECT meta().id, travel
FROM `travel-sample`.inventory.airline travel
LIMIT 1;

데이터가 다음과 같았다면,

[
    {
        "id": "airline_10", 
        "travel": {
            "callsign": "MILE-AIR",
            "country": "United States",
            "iata": "Q5",
            "icao": "MLA",
            "id": 10,
            "name": "40-Mile Air",
            "type": "airline"
        } 
    }
]

 

* document key에 해당하는 'airline_10'이 primery Index에 해당 된다. 

 

하지만, document key가 있다고 해서 무조건 Index가 되는것은 아니고, Primary Index도 create 문을 통해서 생성 해야 만 만들어 진다. 

CREATE PRIMARY INDEX ON `travel-sample`.inventory.airline;

 

Primary Index가 없더라도 NoSql 특성상 document Id를 통해서 데이터 조회가 가능하기 때문에 Primary Index를 꼭 생성 해야 하는 것도 아니다.   다만, SQL Query를 사용하여 데이터를 조회하고자 할때 Primary Index가 없으면 조회될 수 없도록 하고 있다.

따라서 Query를 사용하고자 한다면 필수로 생성해야 하는 Index인데,  'document Id' 만 저장되는 index 로 이해 하면 된다.

 


Secondary Index

DocumentId를 제외한 Document의 모든 key-value에 대한 인덱스이다.  Rdb에서 생각하는 필드 Index라고 보면 된다.

같은 Document type의 데이터를 Query 조회할때 조건절에 해당하는 필드들을 지정 하게 된다.

'noSql' 카테고리의 다른 글

카우치베이스에서 쓰이는 port  (0) 2022.10.03
카우치 베이스 온라인 아카데미  (0) 2022.07.10
CouchBase Essentials - 챕터 설명  (0) 2022.05.10
RedisTemplate Scan  (0) 2021.07.15

댓글