AerospikeC客户端手册―――大数据类型(一)

2015-07-21 16:26:04 · 作者: · 浏览: 0

大数据类型

概况

大数据类型(LDT)是驻留于Aerospike服务器上、由应用通过UDF维护的复杂对象。与LDT关联的数据不会整个传送到客户端,除非客户端特别要求。正常使用情况下,客户端操作部分数据 — 单个对象或一组对象 — 通过发布的API。
请参见【LDT功能指南】以获得LDT的一般性知识。

操作列表

栈(Large Stack)操作

aerospike_lstack_push() – 压栈新对象。
aerospike_lstack_pushall() – 压栈一系列对象。
aerospike_lstack_peek() – 取栈顶N个元素。
aerospike_lstack_filter() – 扫描整个栈并应用一个谓词过滤器。
aerospike_lstack_destroy() – 删除整个栈(LDT Remove)。
aerospike_lstack_get_capacity() – 获取栈当前容量限制设置。
aerospike_lstack_set_capacity() – 设置栈最大容量。
aerospike_lstack_size() – 获取栈当前条目数。
aerospike_lset_config() – 获取栈配置参数。

集合(Large Set)操作

aerospike_lset_add() – 增加对象到集合。
aerospike_lset_addall() – 增加一系列对象到集合。
aerospike_lset_remove() – 从集合中移除一个对象。
aerospike_lset_exists() – 测试一个对象在集合中是否存在。
aerospike_lset_get() – 从集合中获取一个对象。
aerospike_lset_filter() – 扫描整个集合并应用一个谓词过滤器。
aerospike_lset_destroy() – 删除整个集合 (LDT Remove)。
aerospike_lset_size() – 获取集合当前条目数。
aerospike_lset_config() – 获取集合配置参数。

映射(Large Map)操作

aerospike_lmap_add() – 增加对象到映射。
aerospike_lmap_addall() – 增加一系列对象到映射。
aerospike_lmap_remove() – 从映射中移除一个对象。
aerospike_lmap_get() – 从映射中获取一个对象。
aerospike_lmap_filter() – 扫描整个映射,并应用一个谓词过滤器。
aerospike_lmap_destroy() – 删除整个映射(LDT Remove).。
aerospike_lmap_size() – 获取映射当前条目数。
aerospike_lmap_config() – 获取映射配置参数。

链表(Large List)操作

aerospike_llist_add() – 增加对象到列表。
aerospike_llist_addall() – 增加一系列对象到列表。
aerospike_llist_remove() – 从列表中移除一个对象。
aerospike_llist_get() – 从列表中获取一个对象。
aerospike_llist_filter() – 扫描整个列表,并应用一个谓词过滤器。
aerospike_llist_destroy() – 删除整个列表(LDT Remove)。
aerospike_llist_size() – 获取列表当前条目数。
aerospike_llist_config() – 获取列表配置参数。

示例

这里有一个基本示例程序,演示大数据对象初步建立与一些基本操作:

#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
        
          #include 
         
           #include 
          
            #include 
           
             #include 
            
              #include 
             
               #include 
              
                #include 
               
                 #include 
                
                  #include "example_utils.h" int main(int argc, char* argv[]) { // Parse command line arguments. if (! example_get_opts(argc, argv, EXAMPLE_BASIC_OPTS)) { exit(-1); } // Connect to the aerospike database cluster. aerospike as; example_connect_to_aerospike(&as); // Start clean. example_remove_test_record(&as); as_ldt lset; // Create a lset bin to use. No need to destroy as_ldt if using // as_ldt_init() on stack object. if (! as_ldt_init(&lset, "mylset", AS_LDT_LSET, NULL)) { LOG("unable to initialize ldt"); exit(-1); } as_error err; // No need to destroy as_integer if using as_integer_init() on stack object. as_integer ival; as_integer_init(&ival, 12345); // Add an integer value to the set. if (aerospike_lset_add(&as, &err, NULL, &g_key, &lset, (const as_val*)&ival) != AEROSPIKE_OK) { LOG("first aerospike_set_add() returned %d - %s", err.code, err.message); exit(-1); } // No need to destroy as_string if using as_string_init() on stack object. as_string sval; as_string_init(&sval, "lset value", false); // Add a string value to the set. if (aerospike_lset_add(&as, &err, NULL, &g_key, &lset, (const as_val*)&sval) != AEROSPIKE_OK) { LOG("second aerospike_set_add() returned %d - %s", err.code, err.message); exit(-1); } LOG("2 values added to set"); uint32_t n_elements = 0; // See how many elements we have in the set now. if (aerospike_lset_size(&as, &err, NULL, &g_key, &lset, &n_elements) != AEROSPIKE_OK) { LOG("aerospike_lset_size() returned %d - %s", err.code, err.message); exit(-1); } if (n_elements != 2) { LOG("unexpected lset size %u", n_elemen