2013-03-21 2 views
0

키 목록을 제공하는 것과 같이 열 패밀리 템플릿을 사용하여 cassandra 데이터베이스에서 여러 행을 업데이트 할 수있는 방법이 있습니까? 현재 업데이터 columnFamilyTemplate을 사용하여 키 목록을 반복하고 각 행에 대한 업데이트를 수행합니다. multigetSliceQuery와 같은 쿼리를 보았지만 업데이트를 수행 할 때 동등 함을 알지 못합니다.Hector를 사용하여 여러 행을 업데이트하는 방법

답변

0

한 번의 호출로 돌연변이 목록과 함께 키 목록을 전달할 수있는 유틸리티 메서드가 ColumnFamilyTemplate에 없습니다. mutator를 사용하여 직접 구현할 수 있습니다.

Set<String> keys = MY_KEYS; 
Map<String, String> pairsOfNameValues = MY_MUTATION_BY_NAME_AND_VALUE; 

Set<HColumn<String, String>> colums = new HashSet<HColumn<String,String>>(); 
for (Entry<String, String> pair : pairsOfNameValues.entrySet()) { 
    colums.add(HFactory.createStringColumn(pair.getKey(), pair.getValue())); 
} 

Mutator<String> mutator = template.createMutator(); 
String column_family_name = template.getColumnFamily(); 
for (String key : keys) { 
    for (HColumn<String, String> column : colums) { 
     mutator.addInsertion(key, BASIC_COLUMN_FAMILY, column); 
    } 
} 
mutator.execute(); 

잘 그것은 그렇게 보일 것 헥터

에서 작업을 수행하는 방법에 대한 기본 코드입니다.

mutator.incrementCounter 
mutator.deleteCounter 
mutator.insert 
mutator.delete 

으로이 사람이 mutator.execute()을 기다리지 않고 바로 실행하기 때문에

mutator.addInsertion 
mutator.addDeletion 
mutator.addCounter 
mutator.addCounterDeletion 

:이 삽입 예입니다, 배치 돌연변이를 위해 다음과 같은 방법을 사용하십시오 마지막주의 사항 : mutator를 사용하면 한 번에 여러 열 패밀리의 여러 행에 대한 변이를 일괄 처리 할 수 ​​있으므로 ... 일반적으로 CF 템플리트 대신에 사용하는 것이 좋습니다. NoSQL의 "push-on-write"패턴을 사용하는 기능에 대해 비정규 화를 많이합니다.

+0

하나의 설명을 원합니다 : 여러 행을 삭제하려면 먼저 키 목록을 가져와 각 행 키를 하나씩 삭제해야합니다. 또는 여러 행을 삭제하는 다른 방법이 있습니다. 시나리오는 무작위로 생성되는 행 키를 모르지만 각 행의 전자 메일 또는 특정 열 값을 알고있는 것과 같습니다. – manish

+0

당신은 Reddit을 봐야합니다 ... 그들은 Board/Message/Comment 유형의 데이터에서 Cassandra를 사용하는 최전선에 있습니다. 차라리 couchbase/bigcouch/couchdb를 사용하고 싶습니다. 카산드라를 사용하는 것이 어려운 부분은 "읽기 - 수정 - 쓰기"를 없애고 모든 수정을 카세트에 쓰는 것입니다. –

+0

마지막 질문을 질문으로 올리면 많은 사람들에게 흥미로운 일이 될 것이라고 생각합니다. –

-1

일괄 변이를 사용하여 원하는만큼 삽입 할 수 있습니다 (thrift_max_message_length_in_mb 이내). http://hector-client.github.com/hector//source/content/API/core/1.0-1/me/prettyprint/cassandra/model/MutatorImpl.html을 참조하십시오.

+0

당신이 조심하지 않으면 연결을 끊을 것이므로 절약 할 수있는 최대 크기에 대한 언급은 중요하다고 생각합니다. 그래서 +1 –

+0

안녕하세요 리차드는 당신이 드리프트 최대 크기와 연결을 잃어 버릴 수 있다고 설명하실 수 있습니다. 나는 최대 크기를 암시하지 않고 있고, 내가 무엇을해야하는지에 관해 알 필요가있다. – qualebs

관련 문제