본문으로 건너뛰기

API 비교

이 문서는 공식 C 기반 client(PyPI의 aerospike)와 Rust 기반 aerospike-py를 비교합니다. 단계별 이전 방법은 Migration Guide를 참고하세요.

Connection

OperationOfficial C Clientaerospike-pyNotes
Createaerospike.client(config)aerospike_py.client(config)동일 패턴
Connect.connect().connect()동일; self 반환
Connect (auth).connect("user", "pass").connect("user", "pass")동일
Closeclient.close()client.close()동일
Is connectedclient.is_connected()client.is_connected()동일
Context managerN/Awith client: ...aerospike-py 신규
Async clientN/AAsyncClient(config)aerospike-py 신규

CRUD Operations

OperationOfficial C Clientaerospike-pyNotes
Putclient.put(key, bins, meta, policy)client.put(key, bins, meta, policy)동일
Get(key, meta, bins) = client.get(key)record = client.get(key)Record NamedTuple 반환; tuple unpacking 도 동작
Select(key, meta, bins) = client.select(key, bins)record = client.select(key, bins)Record NamedTuple 반환
Exists(key, meta) = client.exists(key)result = client.exists(key)ExistsResult NamedTuple 반환
Removeclient.remove(key)client.remove(key)동일
Touchclient.touch(key)client.touch(key, val)동일; val 이 새 TTL
Appendclient.append(key, bin, val)client.append(key, bin, val)동일
Prependclient.prepend(key, bin, val)client.prepend(key, bin, val)동일
Incrementclient.increment(key, bin, offset)client.increment(key, bin, offset)동일
Remove binclient.remove_bin(key, bin_names)client.remove_bin(key, bin_names)동일
Operateclient.operate(key, ops)client.operate(key, ops)동일; Record 반환
Operate orderedclient.operate_ordered(key, ops)client.operate_ordered(key, ops)동일; OperateOrderedResult 반환

Batch Operations

OperationOfficial C Clientaerospike-pyNotes
Batch getclient.get_many(keys)client.batch_read(keys)Method 명 변경; sync 와 async 둘 다 LazyBatchRecords 반환 — materialise 하려면 .to_dict() 또는 .to_numpy(dtype) 호출
Batch existsclient.exists_many(keys)client.batch_read(keys, bins=[])existence check 용으로 빈 bins list
Batch selectclient.select_many(keys, bins)client.batch_read(keys, bins=bins)batch_read 로 통합
Batch operateclient.batch_operate(keys, ops)client.batch_operate(keys, ops)API는 같지만 공식 client는 aerospike_helpers 사용
Batch removeclient.batch_remove(keys)client.batch_remove(keys)API는 같지만 공식 client는 aerospike_helpers 사용
Batch read (NumPy)N/Aclient.batch_read(keys).to_numpy(dt)aerospike-py 신규
Batch write (NumPy)N/Aclient.batch_write_numpy(data, ...)aerospike-py 신규

Query and Scan

OperationOfficial C Clientaerospike-pyNotes
Create queryclient.query(ns, set)client.query(ns, set)동일
Query selectquery.select("bin1", "bin2")query.select("bin1", "bin2")동일
Query wherequery.where(predicate)query.where(predicate)동일
Query resultsquery.results()query.results()동일
Query foreachquery.foreach(callback)query.foreach(callback)동일
Scanclient.scan(ns, set)N/ADeprecatedwhere() 없는 query() 사용

Secondary Index

OperationOfficial C Clientaerospike-pyNotes
Create integer indexclient.index_integer_create(ns, set, bin, name)client.index_integer_create(ns, set, bin, name)동일
Create string indexclient.index_string_create(ns, set, bin, name)client.index_string_create(ns, set, bin, name)동일
Create geo indexclient.index_geo2dsphere_create(ns, set, bin, name)client.index_geo2dsphere_create(ns, set, bin, name)동일
Remove indexclient.index_remove(ns, name)client.index_remove(ns, name)동일

UDF (User-Defined Functions)

OperationOfficial C Clientaerospike-pyNotes
Register UDFclient.udf_put(filename)client.udf_put(filename)동일
Remove UDFclient.udf_remove(module)client.udf_remove(module)동일
Apply UDFclient.apply(key, module, function, args)client.apply(key, module, function, args)동일

Admin (User / Role Management)

OperationOfficial C Clientaerospike-pyNotes
Create userclient.admin_create_user(user, pw, roles)client.admin_create_user(user, pw, roles)동일
Drop userclient.admin_drop_user(user)client.admin_drop_user(user)동일
Change passwordclient.admin_change_password(user, pw)client.admin_change_password(user, pw)동일
Grant rolesclient.admin_grant_roles(user, roles)client.admin_grant_roles(user, roles)동일
Revoke rolesclient.admin_revoke_roles(user, roles)client.admin_revoke_roles(user, roles)동일
Query userclient.admin_query_user(user)client.admin_query_user_info(user)Method 명 변경
Query usersclient.admin_query_users()client.admin_query_users_info()Method 명 변경
Create roleclient.admin_create_role(role, privs)client.admin_create_role(role, privs)동일
Drop roleclient.admin_drop_role(role)client.admin_drop_role(role)동일
Grant privilegesclient.admin_grant_privileges(role, privs)client.admin_grant_privileges(role, privs)동일
Revoke privilegesclient.admin_revoke_privileges(role, privs)client.admin_revoke_privileges(role, privs)동일
Set whitelistN/Aclient.admin_set_whitelist(role, addrs)aerospike-py 신규
Set quotasN/Aclient.admin_set_quotas(role, r, w)aerospike-py 신규

Info / Cluster

OperationOfficial C Clientaerospike-pyNotes
Info all nodesclient.info_all(cmd)client.info_all(cmd)동일; list[InfoNodeResult] 반환
Info random nodeclient.info_random_node(cmd)client.info_random_node(cmd)동일
Node namesclient.get_node_names()client.get_node_names()동일
Truncateclient.truncate(ns, set, nanos)client.truncate(ns, set, nanos)동일

Observability

FeatureOfficial C Clientaerospike-py
OpenTelemetry tracingN/Ainit_tracing() / shutdown_tracing()
Prometheus metricsN/Astart_metrics_server(port) / stop_metrics_server()
Log level controlN/Aset_log_level(level)

CDT Operations

ModuleOfficial C Clientaerospike-pyNotes
List operationsaerospike_helpers.operations.list_operationsaerospike_py.list_operations37 operation; 동일 의미
Map operationsaerospike_helpers.operations.map_operationsaerospike_py.map_operations33 operation; 동일 의미

Expression Filters

FeatureOfficial C Clientaerospike-pyNotes
Expression moduleaerospike_helpers.expressionsaerospike_py.exp60+ builder function; 동일 의미
Policy 사용policy["expressions"] = expr.compile()policy["filter_expression"] = exprkey 명 다름; .compile() 불필요

주요 차이 요약

AreaOfficial C Client (aerospike)aerospike-py
RuntimeC extension (CPython only)Rust + PyO3 (CPython only)
Return valuesplain tupleNamedTuple (tuple unpacking 도 동작)
Async 지원없음AsyncClient, 전체 API parity
NumPy 통합없음batch_read(...).to_numpy(dtype), batch_write_numpy
Observability없음OpenTelemetry tracing + Prometheus metrics
Context manager없음with client: / async with client:
Scanclient.scan()Deprecated; where() 없는 query() 사용
Exception 이름TimeoutError, IndexErrorAerospikeTimeoutError, AerospikeIndexError (builtin shadow 방지)
GeoJSON typeaerospike.GeoJSON아직 미제공
Free-threaded Python미지원지원 (3.14t)