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>
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>
基本的には、キーのリストでレコードを取得します。これは、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()
同様に、JavaクライアントにAerospikeClient.get()方法は、キーのリストを取ることができます。
は例えば、Pythonクライアントでは、これはClient.get_many方法です。
、あなたがそのように実行することができます主キーをビンに格納してからそのビンで述語フィルタリングを実行するかどうかを問い合わせます。 http://www.aerospike.com/docs/guide/predicate.html
Aerospikeはデフォルトで、PKを生の文字列または数値形式で保存しません。 PK +セット名のRIPEMD160ハッシュを格納します。
私は完全に疑問を誤解しました!しかし、別の問題として、abc:123、abc:456、abc:234 ... xyz:123、xyz:456 ..などの複合キーを持っていて、abc:*キービンにキーを格納していれば、ver 3.12.1+で述語フィルタリングを使用できるようになりました。右? – pgupta
述語フィルタリングは、ビン情報をイントロスペクトして、一致するレコードをすばやく見つけるのに最適です。 –