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 |
댓글