2017-05-15 2 views
3

aerospike에서 IN 쿼리를 수행하는 방법 (sql과 유사). 이 작업에 대해 UDF가 필요합니까?Aerospike : PK에서 IN 쿼리를 수행하는 방법

이 같은

뭔가 : Select * from ns.set where PK in (1,2,3)

이는 UDF가 키에 실행될 때 그것에 대해 이동하는 방법 UDF이 필요한 경우 :

버전 3.12.1+에서
EXECUTE <module>.<function>(<args>) ON <ns>[.<set>] WHERE PK = <key> 

답변

2

기본적으로 키 목록으로 레코드를 검색합니다. 이것은 Aerospike의 배치 판독 작업입니다. Aerospike의 모든 언어 클라이언트는이 기능을 갖추고 있어야합니다.

from __future__ import print_function 
import aerospike 
from aerospike.exception import AerospikeError 
import sys 

config = { 'hosts': [('127.0.0.1', 3000)] } 
client = aerospike.client(config).connect() 

try: 
    # assume the fourth key has no matching record 
    keys = [ 
     ('test', 'demo', '1'), 
     ('test', 'demo', '2'), 
     ('test', 'demo', '3'), 
     ('test', 'demo', '4') 
    ] 
    records = client.get_many(keys) 
    print records 
except AerospikeError as e: 
    print("Error: {0} [{1}]".format(e.msg, e.code)) 
    sys.exit(1) 
finally: 
    client.close() 

마찬가지로, 자바 클라이언트에 AerospikeClient.get() 방법은 키의 목록을 수행 할 수 있습니다

예를 들어, 파이썬 클라이언트이는 Client.get_many 방법이다.

+0

나는 완전히 그 질문을 오해했다! 그러나 별도의 문제로 abc : 123, abc : 456, abc : 234 ... xyz : 123, xyz : 456 등과 같은 복합 키를 가지고 있다고 가정하고 abc : * 키를 가진 모든 레코드를 원했습니다. , 빈에 키를 저장 한 경우 ver 3.12.1 이상으로 술어 필터링을 사용할 수 있습니다. 권리? – pgupta

+0

프리디 케이트 필터링은 빈 정보를 조사하고 일치하는 레코드를 빠르게 찾을 수있는 좋은 방법입니다. –

2

, 당신은 실행할 수 있습니다 기본 키를 저장소에 저장 한 후 해당 저장소에서 술어 필터링을 실행할 경우 쿼리합니다. http://www.aerospike.com/docs/guide/predicate.html

Aerospike는 기본적으로 사용자가 할당 할 때 원시 문자열이나 숫자 형식으로 PK를 저장하지 않습니다. PK + Set 이름의 RIPEMD160 해시를 저장합니다.

관련 문제