AerospikeClient Class

Instantiate an AerospikeClient object to access an Aerospike database cluster and perform database operations.

This client is thread-safe. One client instance should be used per cluster. Multiple threads should share this cluster instance.

Your application uses this class API to perform database operations such as writing and reading records, and selecting sets of records. Write operations include specialized functionality such as append/prepend and arithmetic addition.

Each record may have multiple bins, unless the Aerospike server nodes are configured as "single-bin". In "multi-bin" mode, partial records may be written or read by specifying the relevant subset of bins.

Definition

Namespace: Aerospike.Client
Assembly: AerospikeClient (in AerospikeClient.dll) Version: 7.0.1
C#
public class AerospikeClient : IDisposable, 
	IAerospikeClient
Inheritance
Object    AerospikeClient
Derived
Implements
IAerospikeClient, IDisposable

Constructors

AerospikeClient(ClientPolicy, Host) Initialize Aerospike client with suitable hosts to seed the cluster map. The client policy is used to set defaults and size internal data structures. For the first host connection that succeeds, the client will:
  • Add host to the cluster map
  • Request host's list of other nodes in cluster
  • Add these nodes to cluster map

In most cases, only one host is necessary to seed the cluster. The remaining hosts are added as future seeds in case of a complete network failure.

If one connection succeeds, the client is ready to process database requests. If all connections fail and the policy's failIfNotConnected is true, a connection exception will be thrown. Otherwise, the cluster will remain in a disconnected state until the server is activated.

AerospikeClient(String, Int32) Initialize Aerospike client. If the host connection succeeds, the client will:
  • Add host to the cluster map
  • Request host's list of other nodes in cluster
  • Add these nodes to cluster map

If the connection succeeds, the client is ready to process database requests. If the connection fails, the cluster will remain in a disconnected state until the server is activated.

AerospikeClient(ClientPolicy, String, Int32) Initialize Aerospike client. The client policy is used to set defaults and size internal data structures. If the host connection succeeds, the client will:
  • Add host to the cluster map
  • Request host's list of other nodes in cluster
  • Add these nodes to cluster map

If the connection succeeds, the client is ready to process database requests. If the connection fails and the policy's failOnInvalidHosts is true, a connection exception will be thrown. Otherwise, the cluster will remain in a disconnected state until the server is activated.

Properties

BatchDeletePolicyDefault Default delete policy used in batch delete commands.
BatchParentPolicyWriteDefault Default parent policy used in batch write commands. Parent policy fields include socketTimeout, totalTimeout, maxRetries, etc...
BatchPolicyDefault Default parent policy used in batch read commands.Parent policy fields include socketTimeout, totalTimeout, maxRetries, etc...
BatchUDFPolicyDefault Default user defined function policy used in batch UDF excecute commands.
BatchWritePolicyDefault Default write policy used in batch operate commands. Write policy fields include generation, expiration, durableDelete, etc...
Cluster Cluster associated with this AerospikeClient instance.
Connected Return if we are ready to talk to the database server cluster.
Disposed 
InfoPolicyDefault Default info policy that is used when info command policy is null.
Nodes Return array of active server nodes in the cluster.
QueryPolicyDefault Default query policy that is used when query command policy is null.
ReadPolicyDefault Default read policy that is used when read command policy is null.
ScanPolicyDefault Default scan policy that is used when scan command policy is null.
WritePolicyDefault Default write policy that is used when write command policy is null.

Methods

Add Add integer/double bin values to existing record bin values. The policy specifies the transaction timeout, record expiration and how the transaction is handled when the record already exists.
Append Append bin string values to existing record bin values. The policy specifies the transaction timeout, record expiration and how the transaction is handled when the record already exists. This call only works for string values.
ChangePassword Change user's password.
Close Close all client connections to database server nodes.
CreateIndex(Policy, String, String, String, String, IndexType) Create scalar secondary index. This asynchronous server call will return before command is complete. The user can optionally wait for command completion by using the returned IndexTask instance.
CreateIndex(Policy, String, String, String, String, IndexType, IndexCollectionType, CTX) Create complex secondary index on bins containing collections. This asynchronous server call will return before command is complete. The user can optionally wait for command completion by using the returned IndexTask instance.
CreateRole(AdminPolicy, String, IListPrivilege) Create user defined role.
CreateRole(AdminPolicy, String, IListPrivilege, IListString) Create user defined role with optional privileges and whitelist.
CreateRole(AdminPolicy, String, IListPrivilege, IListString, Int32, Int32) Create user defined role with optional privileges, whitelist and read/write quotas. Quotas require server security configuration "enable-quotas" to be set to true.
CreateUser Create user with password and roles. Clear-text password will be hashed using bcrypt before sending to server.
Delete(WritePolicy, Key) Delete record for specified key. Return whether record existed on server before deletion. The policy specifies the transaction timeout.
Delete(BatchPolicy, BatchDeletePolicy, Key) Delete records for specified keys. If a key is not found, the corresponding result resultCode will be KEY_NOT_FOUND_ERROR.

Requires server version 6.0+

Dispose Close all client connections to database server nodes.
DropIndex Delete secondary index. This asynchronous server call will return before command is complete. The user can optionally wait for command completion by using the returned IndexTask instance.
DropRole Drop user defined role.
DropUser Remove user from cluster.
Execute(WritePolicy, Statement, Operation) Apply operations on records that match the background query statement filter. Records are not returned to the client. This asynchronous server call will return before the command is complete. The user can optionally wait for command completion by using the returned ExecuteTask instance.
Execute(WritePolicy, Key, String, String, Value) Execute user defined function on server and return results. The function operates on a single record. The package name is used to locate the udf file location:

udf file = <server udf dir>/<package name>.lua

Execute(WritePolicy, Statement, String, String, Value) Apply user defined function on records that match the background query statement filter. Records are not returned to the client. This asynchronous server call will return before the command is complete. The user can optionally wait for command completion by using the returned ExecuteTask instance.
Execute(BatchPolicy, BatchUDFPolicy, Key, String, String, Value) Execute user defined function on server for each key and return results. The package name is used to locate the udf file location:

udf file = <server udf dir>/<package name>.lua

Requires server version 6.0+

Exists(BatchPolicy, Key) Check if multiple record keys exist in one batch call. The returned boolean array is in positional order with the original key array order.
Exists(Policy, Key) Determine if a record key exists. Return whether record exists or not. The policy can be used to specify timeouts.
Get(BatchPolicy, Key) Read multiple records for specified keys in one batch call. The returned records are in positional order with the original key array order. If a key is not found, the positional record will be null.
Get(BatchPolicy, ListBatchRead) Read multiple records for specified batch keys in one batch call. This method allows different namespaces/bins to be requested for each key in the batch. The returned records are located in the same list. If the BatchRead key field is not found, the corresponding record field will be null.
Get(Policy, Key) Read entire record for specified key. If found, return record instance. If not found, return null. The policy can be used to specify timeouts.
Get(BatchPolicy, Key, Operation) Read multiple records for specified keys using read operations in one batch call. The returned records are in positional order with the original key array order. If a key is not found, the positional record will be null.
Get(BatchPolicy, Key, String) Read multiple record headers and bins for specified keys in one batch call. The returned records are in positional order with the original key array order. If a key is not found, the positional record will be null.
Get(Policy, Key, String) Read record header and bins for specified key. If found, return record instance. If not found, return null. The policy can be used to specify timeouts.
GetClusterStats Return operating cluster statistics.
GetHeader(BatchPolicy, Key) Read multiple record header data for specified keys in one batch call. The returned records are in positional order with the original key array order. If a key is not found, the positional record will be null.
GetHeader(Policy, Key) Read record generation and expiration only for specified key. Bins are not read. If found, return record instance. If not found, return null. The policy can be used to specify timeouts.
GrantPrivileges Grant privileges to an user defined role.
GrantRoles Add roles to user's list of roles.
Join(BatchPolicy, Key, Join) Read all bins in left record and then join with right records. Each join bin name (Join.binNameKeys) must exist in the left record. The join bin must contain a list of keys. Those key are used to retrieve other records using a separate batch get.
Join(BatchPolicy, Key, String, Join) Read specified bins in left record and then join with right records. Each join bin name (Join.leftKeysBinName) must exist in the left record. The join bin must contain a list of keys. Those key are used to retrieve other records using a separate batch get.
Operate(BatchPolicy, ListBatchRecord) Read/Write multiple records for specified batch keys in one batch call. This method allows different namespaces/bins for each key in the batch. The returned records are located in the same list.

BatchRecord can be BatchRead, BatchWrite, BatchDelete or BatchUDF.

Requires server version 6.0+

Operate(WritePolicy, Key, Operation) Perform multiple read/write operations on a single key in one batch call. An example would be to add an integer value to an existing record and then read the result, all in one database call.

The server executes operations in the same order as the operations array. Both scalar bin operations (Operation) and CDT bin operations (ListOperation, MapOperation) can be performed in same call.

Operate(BatchPolicy, BatchWritePolicy, Key, Operation) Perform read/write operations on multiple keys. If a key is not found, the corresponding result resultCode will be KEY_NOT_FOUND_ERROR.

Requires server version 6.0+

Prepend Prepend bin string values to existing record bin values. The policy specifies the transaction timeout, record expiration and how the transaction is handled when the record already exists. This call works only for string values.
Put Write record bin(s). The policy specifies the transaction timeout, record expiration and how the transaction is handled when the record already exists.
Query(QueryPolicy, Statement) Execute query and return record iterator. The query executor puts records on a queue in separate threads. The calling thread concurrently pops records off the queue through the record iterator.
Query(QueryPolicy, Statement, QueryListener) Execute query on all server nodes and return records via the listener. This method will block until the query is complete. Listener callbacks are made within the scope of this call.

If maxConcurrentNodes is not 1, the supplied listener must handle shared data in a thread-safe manner, because the listener will be called by multiple query threads (one thread per node) in parallel.

Requires server version 6.0+ if using a secondary index query.

Query(QueryPolicy, Statement, ActionKey, Record) Execute query and call action for each record returned from server.
Query(QueryPolicy, Statement, PartitionFilter, QueryListener) Execute query for specified partitions and return records via the listener. This method will block until the query is complete. Listener callbacks are made within the scope of this call.

If maxConcurrentNodes is not 1, the supplied listener must handle shared data in a thread-safe manner, because the listener will be called by multiple query threads (one thread per node) in parallel.

The completion status of all partitions is stored in the partitionFilter when the query terminates. This partitionFilter can then be used to resume an incomplete query at a later time. This is the preferred method for query terminate/resume functionality.

Requires server version 6.0+ if using a secondary index query.

QueryAggregate(QueryPolicy, Statement) Execute query, apply statement's aggregation function, and return result iterator. The aggregation function should be initialized via the statement's SetAggregateFunction() and should be located in a Lua resource file located in an assembly.

The query executor puts results on a queue in separate threads. The calling thread concurrently pops results off the queue through the ResultSet iterator. The aggregation function is called on both server and client (final reduce). Therefore, the Lua script file must also reside on both server and client.

QueryAggregate(QueryPolicy, Statement, ActionObject) Execute query, apply statement's aggregation function, call action for each aggregation object returned from server.
QueryAggregate(QueryPolicy, Statement, String, String, Value) Execute query, apply statement's aggregation function, and return result iterator. The aggregation function should be located in a Lua script file that can be found from the "LuaConfig.PackagePath" paths static variable. The default package path is "udf/?.lua" where "?" is the packageName.

The query executor puts results on a queue in separate threads. The calling thread concurrently pops results off the queue through the ResultSet iterator. The aggregation function is called on both server and client (final reduce). Therefore, the Lua script file must also reside on both server and client.

QueryPartitions Execute query for specified partitions and return record iterator. The query executor puts records on a queue in separate threads. The calling thread concurrently pops records off the queue through the record iterator.

Requires server version 6.0+ if using a secondary index query.

QueryRole Retrieve role definition.
QueryRoles Retrieve all roles.
QueryUser Retrieve roles for a given user.
QueryUsers Retrieve all users and their roles.
Register(Policy, String, String, Language) Register package located in a file containing user defined functions with server. This asynchronous server call will return before command is complete. The user can optionally wait for command completion by using the returned RegisterTask instance.
Register(Policy, Assembly, String, String, Language) Register package located in a resource containing user defined functions with server. This asynchronous server call will return before command is complete. The user can optionally wait for command completion by using the returned RegisterTask instance.
RegisterUdfString Register UDF functions located in a code string with server. Example:
C#
 String code = @"
 local function reducer(val1,val2)
      return val1 + val2
 end

 function sum_single_bin(stream,name)
   local function mapper(rec)
     return rec[name]
   end
   return stream : map(mapper) : reduce(reducer)
 end
";

    client.RegisterUdfString(null, code, "mysum.lua", Language.LUA);

This asynchronous server call will return before command is complete. The user can optionally wait for command completion by using the returned RegisterTask instance.

RemoveUdf Remove user defined function from server nodes.
RevokePrivileges Revoke privileges from an user defined role.
RevokeRoles Remove roles from user's list of roles.
ScanAll Read all records in specified namespace and set. If the policy's concurrentNodes is specified, each server node will be read in parallel. Otherwise, server nodes are read in series.

This call will block until the scan is complete - callbacks are made within the scope of this call.

ScanNode(ScanPolicy, Node, String, String, ScanCallback, String) Read all records in specified namespace and set for one node only.

This call will block until the scan is complete - callbacks are made within the scope of this call.

ScanNode(ScanPolicy, String, String, String, ScanCallback, String) Read all records in specified namespace and set for one node only. The node is specified by name.

This call will block until the scan is complete - callbacks are made within the scope of this call.

ScanPartitions Read records in specified namespace, set and partition filter.

This call will block until the scan is complete - callbacks are made within the scope of this call.

SetQuotas Set maximum reads/writes per second limits for a role. If a quota is zero, the limit is removed. Quotas require server security configuration "enable-quotas" to be set to true.
SetWhitelist Set IP address whitelist for a role. If whitelist is null or empty, remove existing whitelist from role.
SetXDRFilter Set XDR filter for given datacenter name and namespace. The expression filter indicates which records XDR should ship to the datacenter.
Touch Reset record's time to expiration using the policy's expiration. Fail if the record does not exist.
Truncate Remove records in specified namespace/set efficiently. This method is many orders of magnitude faster than deleting records one at a time.

See https://www.aerospike.com/docs/reference/info#truncate

This asynchronous server call may return before the truncation is complete. The user can still write new records after the server returns because new records will have last update times greater than the truncate cutoff (set at the time of truncate call).

Fields

batchDeletePolicyDefault Default delete policy used in batch delete commands.
batchParentPolicyWriteDefault Default parent policy used in batch write commands. Parent policy fields include socketTimeout, totalTimeout, maxRetries, etc...
batchPolicyDefault Default parent policy used in batch read commands. Parent policy fields include socketTimeout, totalTimeout, maxRetries, etc...
batchUDFPolicyDefault Default user defined function policy used in batch UDF excecute commands.
batchWritePolicyDefault Default write policy used in batch operate commands. Write policy fields include generation, expiration, durableDelete, etc...
infoPolicyDefault Default info policy that is used when info command policy is null.
queryPolicyDefault Default query policy that is used when query command policy is null.
readPolicyDefault Default read policy that is used when read command policy is null.
scanPolicyDefault Default scan policy that is used when scan command policy is null.
writePolicyDefault Default write policy that is used when write command policy is null.

See Also