sct nosql内存数据库是一个数据结构存储数据库，支持丰富的数据结构类型。
基本数据类型包含: i08/u08/i16/u16/i32/u32/i64/u64/float/double/string/date/date_time

数据库第一层默认使用哈希映射结构,默认最大生成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 int

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 int "abc"

create map int string
create multimap int string
create hashtable int 200

create map int string "abc"
create multimap int string "abc"
create hashtable int 200 "abc"
create hashmap int string 200


create hashmap string int 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
