sct nosql内存数据库是一个数据结构存储数据库,支持丰富的数据结构类型。
基本数据类型包含: i08、u08、i16、u16、i32、u32、i64、u64、float、double、string、date、datetime
数据库第一层默认使用哈希映射结构,默认最大生成key数量为1024*1024
如果使用了字符串key则存储一个字符串key<->整数key的关系。
查询时如果使用字符串key先从此映射中查询对应整数key。
字符串key使用双引号(")包含,字符串支持C++标准的字符转义\n,\x,\u,\U等。
每个存储的哈希结构可以为以下几种之一
trie //存储数据类型只支持string vector //顺序容器 stack //栈容器 queue //队列容器 deque //双向队列容器 heap //堆容器 set //二叉平衡树容器 map //二叉平衡树键值映射容器 list //链表容器 multiset //多值二叉平衡树容器 multimap //多值二叉平衡树键值映射容器 hashtable //哈希表容器(只支持整数类型,且必须指定默认大小) hashmap //哈希表键值映射容器(只支持键整数类型,且必须指定默认大小)
键值的管理使用以下命令
kvs //显示所有存储的键值存储以及存储的容器类型,键及值类型,存储的数量和和键值的十、十六进值显示。 kvs key //只显示对应键存储信息,如果不存在返回失败。 erase key //删除对应键,如果不存在返回失败。 clear //清除所有键值信息。 create 容器类型 键类型 [值类型] [参数] [字符串key] //创建一个容器值,非键值映射容器无需指定值类型,非hash类型无需指定参数,无字符串key无需指定字符串key。 backup path //备份整个数据库到文件中 restore path //从数据文件中恢复所有数据
每个容器可以使用get/set/ins/del命令进行获取/设置/插入/删除
命令格式为:
命令key或字符串key操作参数
不同的容器可以使用不同的操作,不支持的操作返回失败
各容器操作支持如下:
get: all trie,vector,stack,queue,deque,heap,set,map,list,multiset,multimap,hashtable,hashmap count trie,vector,stack,queue,deque,heap,set,map,list,multiset,multimap,hashtable,hashmap nth vector,queue,deque first vector,queue,deque,list last vector,queue,deque,stack,list range vector,deque,list first_k vector,deque,list last_k vector,deque,list idx_of vector,deque,list ptr_of list ptr_next list ptr_prev list coutain trie ucontain trie lege set,multiset ltge set,multiset legt set,multiset ltgt set,multiset rank set,multiset max set,map,multiset,multimap min set,map,heap,multiset,multimap max_k set,multiset min_k set,multiset eq set,map,heap,multiset,multimap,hashtable,hashmap gt set,multiset lt set,multiset ge set,multiset le set,multiset value_of map,multimap,hashmap
各种操作的数据结构对应标准的数据结构实现,保留相应操作复杂度。
以下为部分使用示例:
create trie create trie "abc" create vector u64 create stack i32 create queue string create deque date create heap double create bst float create set float create list string create multiset i32 create vector u64 "abc" create stack i32 "abc" create list string "abc" create queue string "abc" create deque date "abc" create heap double "abc" create bst float "abc" create set float "abc" create multiset i32 "abc" create map i32 string create multimap i32 string create hashtable i32 200 create map i32 string "abc" create multimap i32 string "abc" create hashtable i32 200 "abc" create hashmap i32 string 200 create hashmap string i32 200 "abcd" erase 11 erase "abc" backup "aaa.nos" restore "aaa.nos" //get: get "abcd" all; get 100 all get 100 nth 10 get 100 ptr_of 123 get 100 idx_of 123 get 100 first get 100 last get 100 range 1 1000 get 100 first_k 200 get 100 last_k 200 get 100 lege 2 10 get 100 ltge 2 100 get 100 legt 2 100 get 100 ltgt 2 100 get 100 max get 100 min get 100 max_k 10 get 100 min_k 10 get 100 eq 1.1 get 100 gt 1.2 get 100 lt 1.5 get 100 ge 2.0 get 100 le 3.0 get 100 rank 1.11 //trie get 100 contain "abc" get 100 ucontain "abcd" //list get 100 ptr_of 322 ins 100 ptr_of 1202340023 get 100 ptr_next 1202340023 set 100 ptr_of 1202340023 999 //map get 100 value_of "abc" set 100 all 999 set 100 nth 10 999 set 100 first 999 set 100 last 999 set 100 range 1 1000 999 set 100 first_k 200 999 set 100 last_k 200 999 set 100 lege 2 10 999 set 100 ltge 2 100 999 set 100 legt 2 100 999 set 100 ltgt 2 100 999 set 100 max 999 set 100 min 999 set 100 max_k 10 999 set 100 min_k 10 999 set 100 eq 1.1 999 set 100 gt 1.2 999 set 100 lt 1.5 999 set 100 ge 2.0 999 set 100 le 3.0 999 //insert ins 100 999 ins 100 nth 10 999 ins 100 first 999 ins 100 last 999 ins 100 200 300 //delete del 100 all del 100 nth 10 del 100 first del 100 last del 100 range 1 1000 del 100 first_k 200 del 100 last_k 200 del 100 lege 2 10 del 100 ltge 2 100 del 100 legt 2 100 del 100 ltgt 2 100 del 100 max del 100 min del 100 max_k 10 del 100 min_k 10 del 100 eq 1.1 del 100 gt 1.2 del 100 lt 1.5 del 100 ge 2.0 del 100 le 3.0