Rick docs의 2i를 의역해 봤습니다.
3809 단어 riak
대강대강 의 의역, 이해하기 어려운 곳 을 영문 과 함께 전재 하다
http://docs.basho.com/riak/1.3.2/tutorials/querying/Secondary-Indexes/
Introduction
Rik의 SecondaryIndexing(이하 2i)을 사용하면 개발자가 Rick에 저장된 Object에 검색 가능한value를 하나 이상 표시할 수 있습니다.
KV 데이터가 2i에 대해 완전히 모호하기 때문에 사용자는 2i에 인덱스의 속성과 이 인덱스의value가 무엇인지 엄격히 전달해야 합니다.이는 Rik Search와 달리 데이터를 지우고 패턴 기반 인덱스를 구축하는 것입니다.Rik의 2i에는 LeveldB 백엔드 스토리지가 필요합니다.
Features
두 가지 색인 속성(Interges 및 Binary)을 사용할 수 있습니다.검색을 하나의 인덱스로 범위 검색이나 유일한 검색을 할 수 있습니다.질의 결과는 MapReduce를 입력하는 데 사용할 수 있습니다.
When to Use Secondary Indexes
2i는 Object의 bucket/key 쌍 이외의 조건에서 데이터를 검색하려면 유효합니다.이 인덱스는 Rik의 Object에 metadata를 추가하여 만듭니다.
binary 파일처럼 애매한 BLOG의value가 저장되어 있을 때 2i는 유효합니다.색인을 사용하여 추가 속성을 추가할 수 있습니다.
간편하게 사용할 검색 기능을 원할 때 2i가 유효합니다.2i는 Riak Search와 같은 검색 모드가 필요하지 않으며 기본적인 쿼리 인터페이스를 갖추고 있습니다.
2i는 Anti Entropy(모든 데이터의 복사본을 비교하고 모든 복사본을 최신 버전으로 바꾸려는 경우)에 유효합니다.2i는 Object의 metadata이며 인덱스가 동일한 노드에 속합니다.2i piggybacks off of read-repair.
When Not to Use Secondary Indexes
Ring 크기가 512 개 파티션을 초과하면 2i 에 적합하지 않습니다.2i가 대규모 Cluster에서 공연의 문제가 된 이유.
2i가 지원하는 범위를 초과하는 검색이나 유일한 검색의 용도는 2i가 적합하지 않습니다.
각종 요소로 구성된 조회를 사용하려면 2i에 적합하지 않습니다.예를 들어 "last name = zezeski AND state = MD"와 같은 쿼리는 두 개의 쿼리로 나누어 결과를 병합해야 합니다.
페이지를 추가할 필요가 있으면 2i에 적합하지 않습니다.2i는 페이지 첨부를 지원하지 않습니다.항상 모든 결과를 되돌려줍니다.이것은 MapReduce를 사용하면 어느 정도 실현할 수 있지만 복잡해진다.
전체 범위를 정렬해야 하는 결과는 2i에 적합하지 않습니다.2i의 결과 부분 정렬.전체 범위를 정렬하려면 클라이언트 또는 MapReduce를 사용해야 합니다.
How It Works
2i는 문서 기반 파티션을 사용합니다.색인은 모든 문서에 속합니다. 예를 들어 로컬 색인입니다.2i는 HTTP 헤드와 비슷한 키/value 목록입니다.쓰기 작업을 수행하면 key/value의 metadata로 구성된 색인 항목에 Object가 표시됩니다.이 메타데이터는 일치하는 키를 검색할 수 있습니다.
인덱스가 여러 서버에 존재합니다.따라서 여러 가상 노드에서 조회를 실행하고 결과를 통합해야 한다.Object 인덱스는 Object와 같은 파티션에 저장되므로 성능 문제가 발생할 수 있습니다.질의를 실행하면 질의를 덮어쓰는 존에서 읽습니다.시스템은 저장된 데이터의 사본이 얼마나 되는지 확인한다.또한 모든 누락된 노드를 고려하여 검색 결과의 전체 집합을 위해 반드시 조사해야 할 최소 구역 수를 결정한다.
응용 프로그램은 Object를 로드하고, 색인 엔트리를 추가 또는 삭제하고, Object에 쓰기를 통해 색인을 수정할 수 있습니다.Object가 삭제되면 모든 인덱스에서 Object가 자동으로 삭제됩니다.Object의 value와 색인은 단위로 간주되어야 합니다.Object의value에서 Object의 인덱스를 독립적으로 변경할 수 없습니다.거꾸로 할 수도 없고.색인은 Object에 기록되는 동시에 업데이트되는 원자입니다.This means that an object will be present in future index queries as soon as the write operation completes.
Query Interfaces and Examples
이 예에서 사용자 데이터를 저장하는 bucket/key 쌍을'users/john smith'라고 부른다.사용자 데이터의 트위터 name 속성과 이메일 address 속성에 2i를 설정합니다.
Inserting the object with Secondary Indexes:
Object는 users/johnsmith에 저장됩니다.Object에는'트위터 bin'이라는 2i가 있는데'jsmit123'의value를 가지고 있습니다.Object에는 "[email protected]"의value가 있는데 "email bin"이라는 2i가 있습니다.
curl -X POST \
-H 'x-riak-index-twitter_bin: jsmith123' \
-H 'x-riak-index-email_bin: [email protected]' \
-d '...user data...' \
http://localhost:8098/buckets/users/keys/john_smith
Querying the object with Secondary Indexes:트위터 name에서 검색한 검색은 다음과 같다.
curl localhost:8098/buckets/users/index/twitter_bin/jsmith123
그것에 대한 호응은 아래와 같다.{"keys":["john_smith"]}
End이해가 잘 안 되는 부분이 있지만 분위기를 잡을 수 있다.Rick이 사전에 구역의 수를 결정하는 것도 확장하기 어렵지만 2i를 사용하면 확장하기 어려운 제한이 있다.본격 투입된 서비스는 어떻게 하는 겁니까?
Reference
이 문제에 관하여(Rick docs의 2i를 의역해 봤습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/na_ga/items/2cc047c621da286aca44텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)