数蚕结构数据库命令参考0.2.2

数蚕结构数据库是一个数据结构存储数据库,支持丰富的数据结构类型。

数蚕结构数据库是一个基于内存的数据结构存储数据库,支持丰富的数据结构类型。

这是一个良好测试的,超快的内存结构存储数据库,可以用来存储高自由度结构化数据。

启动与配置:

下载程度安装包, 解压到目标安装目录, 运行服务端或客户端。

文件说明:

                    sct_nosql_local.exe             是一个本地化的单机数据库, 可以单独启动作为独立数据库使用
                    sct_nosql_c_mem.exe             是一个结构数据库的客户端, 连接服务端进行数据操作。客户端运行时默认显示命令帮助参数
                    sct_nosql_s_mem.exe             是一个结构数据库的服务端, 独立的数据库运行服务
                    sct_nosql4bin_local.exe         是一个更快的二进制协议的本地化的单机数据库, 可以单独启动作为独立数据库使用, 当前为实验性质,可以更好的基于C++操作
                    nosql user guide.txt            结构数据库说明书
                    sct_ndb.toml                    服务端的配置文件,服务端口和用户密码。 默认用户名密码为user/user, root/root
                    sct_ndb.toml.sample             服务端的配置文件示样配置
                    lic.dat                         许可证信息,默认已为创新者提供一个永久使用的许可证
                    init.nos.sample                 初始加载的命令示样配置文件
                    init.nos                        初始加载的命令(可以不存在)
                    Install_Service.bat             服务安装程序, 默认安装为"数蚕nosql数据库服务"的Windows自动启动服务
                    Uninstall_Service.bat           服务删除程序
                    .log                            为程序服务端运行时输出信息,可删除
                    sdk                             C语言或python的开发接口包,单机版只提供C语言的开发接口
                    gen_pwd.exe                     生成sct_ndb.toml密码, 用法:
		                                                 gen_pwd 字符串
    
                    其它文件                        系统运行需要的依赖运行时文件, 不可删除
		

注意: 本文档可能由于更新数据不同步, 更严格规范的说明文件请以安装包自带说明文件为主。

如果您有更细节的技术要求或问题请邮件联系 sct001@shucantech.com

基本数据类型包含: i08、u08、i16、u16、i32、u32、i64、u64、float、double、string、date、time、datetime

数据库第一层默认使用哈希映射结构,默认最大生成key数量为1024*1024

存储的示例如下:

0---->vector

1---->list

2---->set

...

n---->结构容器

如果使用了字符串key则存储一个字符串key<->整数key的关系。

注意, 二进制版不包含字段串key, 因此所有的命令和参数不应使用字符串。

查询时如果使用字符串key先从此映射中查询对应整数key。

字符串key使用双引号(")包含,字符串支持C++标准的字符转义\n,\x,\u,\U等。

各类型数据输入规范:

i08 标准c++输入整数类型(支持0b, 0x, 0前缀)

i16 标准c++输入整数类型(支持0b, 0x, 0前缀)

i32 标准c++输入整数类型(支持0b, 0x, 0前缀)

i64 标准c++输入整数类型(支持0b, 0x, 0前缀)

u08 标准c++输入整数类型(支持0b, 0x, 0前缀)

u16 标准c++输入整数类型(支持0b, 0x, 0前缀)

u32 标准c++输入整数类型(支持0b, 0x, 0前缀)

u64 标准c++输入整数类型(支持0b, 0x, 0前缀)

float 标准c++单精度浮点类型

double 标准c++双精度浮点类型

string 以双引号开始,双引号结束支持C++标准的字符转义\n,\x,\u,\U

注意:字符串作为key时必须添加引号,作为输入参数若无空格分割问题引号可以忽略

date yyyy-mm-dd 四位年,双位月份,双位日期

time hh:mm:ss.n 两位小时,两位分钟,两位秒,整数型纳秒

datetime "yyyy-mm-dd hh:mm:ss.n" 引号包围的单个空格分割的日期和时间组合

每个存储的哈希结构可以为以下几种之一

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 操作参数

不同的容器可以使用不同的操作,不支持的操作返回失败

各容器操作支持如下(//后为操作意义):

all                                                //所有数据
count                                              //数目
nth                                                //第几个
first                                              //最前一个
last                                               //最后一个
range                                              //区间
first_k                                            //最前几个
last_k                                             //最后几个
idx                                                //索引
ptr                                                //指针
val                                                //取值
ptr_n                                              //下一指针
ptr_p                                              //上一指针
coutain                                            //包含
ucontain                                           //忽略大小写包含
lege                                               //大于等于且小于等于
ltge                                               //大于等于且等于
legt                                               //大于且小于等于
ltgt                                               //大于且小于
rank                                               //序号
max                                                //最大值
min                                                //最小值
max_k                                              //最大的几个
min_k                                              //最小的几个
eq                                                 //等于
gt                                                 //大于
lt                                                 //小于
ge                                                 //大于等于
le                                                 //小于等于
value                                              //映射值

各种操作的数据结构对应标准的数据结构实现,保留相应操作复杂度。

以下为部分使用示例:




create trie

create trie "abc"
create vector u64
create stack i32
create queue string
create deque date
create heap double
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 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



erase 11
erase "abc"

backup  "aaa.nos"
restore "aaa.nos"


get操作矩阵

       操作  all      count    nth      first    last     range    first_k  last_k    idx     ptr      val      ptr_n    ptr_p    contain  ucontain lege     ltge     legt     ltgt     rank     max      min      max_k    min_k     eq       gt      lt       ge       le         value
容器
trie         Y         Y       N        N        N         N        N        N         N      N         N         N        N        Y       Y       N         N        N        N       N        N         N        N       N        N        N        N        N        N           N
vector       Y         Y       Y        Y        Y         Y        Y        Y         Y      N         N         N        N        N       N       N         N        N        N       N        N         N        N       N        N        N        N        N        N           N
stack        Y         Y       N        N        Y         N        N        N         N      N         N         N        N        N       N       N         N        N        N       N        N         N        N       N        N        N        N        N        N           N
queue        Y         Y       N        Y        Y         N        N        N         Y      N         N         N        N        N       N       N         N        N        N       N        N         N        N       N        N        N        N        N        N           N
deque        Y         Y       Y        Y        Y         Y        Y        Y         Y      N         N         N        N        N       N       N         N        N        N       N        N         N        N       N        N        N        N        N        N           N
heap         Y         Y       N        N        N         N        N        N         N      N         N         N        N        N       N       N         N        N        N       N        N         Y        N       N        N        N        N        N        N           N
set          Y         Y       N        N        N         N        N        N         N      N         N         N        N        N       N       Y         Y        Y        Y       Y        Y         Y        Y       Y        Y        Y        Y        Y        Y           N
map          Y         Y       N        N        N         N        N        N         N      N         N         N        N        N       N       N         N        N        N       N        Y         Y        N       N        Y        N        N        N        N           Y
list         Y         Y       Y        Y        Y         Y        Y        Y         Y      Y         Y         Y        Y        N       N       N         N        N        N       N        N         N        N       N        N        N        N        N        N           N
multiset     Y         Y       N        N        N         N        N        N         N      N         N         N        N        N       N       Y         Y        Y        Y       Y        Y         Y        Y       Y        Y        Y        Y        Y        Y           N
multimap     Y         Y       N        N        N         N        N        N         N      N         N         N        N        N       N       N         N        N        N       N        Y         Y        N       N        Y        N        N        N        N           Y
hashtable    Y         Y       N        N        N         N        N        N         N      N         N         N        N        N       N       N         N        N        N       N        N         N        N       N        Y        N        N        N        N           N
hashmap      Y         Y       N        N        N         N        N        N         N      N         N         N        N        N       N       N         N        N        N       N        N         N        N       N        Y        N        N        N        N           Y



//get:
get "abcd" all;
get 100 all
get 100 nth 10
get 100 ptr 123
get 100 idx 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 "abc"

//list
get 100 ptr     322
ins 100 ptr     1202340023
get 100 ptr_n   1202340023
set 100 ptr     1202340023 999

//map
get 100 value "abc"


set操作矩阵

       操作  all      nth      first    last     range    first_k  last_k    val      lege     ltge     legt     ltgt     max      min      max_k    min_k    eq       gt       lt       ge       le         value
容器                                                                                                                                                                                                
trie         N        N        N        N         N        N        N        N        N         N        N        N       N         N        N       N        N        N        N        N        N            N
vector       Y        Y        Y        Y         Y        Y        Y        N        N         N        N        N       N         N        N       N        N        N        N        N        N            N
stack        Y        N        N        Y         N        N        N        N        N         N        N        N       N         N        N       N        N        N        N        N        N            N
queue        Y        N        Y        Y         N        N        N        N        N         N        N        N       N         N        N       N        N        N        N        N        N            N
deque        Y        Y        Y        Y         Y        Y        Y        N        N         N        N        N       N         N        N       N        N        N        N        N        N            N
heap         N        N        N        N         N        N        N        N        N         N        N        N       N         Y        N       N        N        N        N        N        N            N
set          N        N        N        N         N        N        N        N        Y         Y        Y        Y       Y         Y        Y       Y        Y        Y        Y        Y        Y            N
map          N        N        N        N         N        N        N        N        N         N        N        N       Y         Y        N       N        Y        N        N        N        N            Y
list         Y        Y        Y        Y         Y        Y        Y        Y        N         N        N        N       N         N        N       N        N        N        N        N        N            N
multiset     N        N        N        N         N        N        N        N        Y         Y        Y        Y       Y         Y        Y       Y        Y        Y        Y        Y        Y            N
multimap     N        N        N        N         N        N        N        N        N         N        N        N       Y         Y        N       N        Y        N        N        N        N            Y
hashtable    N        N        N        N         N        N        N        N        N         N        N        N       N         N        N       N        Y        N        N        N        N            N
hashmap      N        N        N        N         N        N        N        N        N         N        N        N       N         N        N       N        Y        N        N        N        N            Y




set 100 all 999
set 100 nth 9 999
set 100 first 999
set 100 last 999
set 100 range 1 100 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



//ins

ins操作矩阵

       操作  nth      first    last    val   直接值
容器                                 
trie         N        N        N       N      Y
vector       Y        Y        Y       N      N
stack        N        N        Y       N      N
queue        N        N        Y       N      N
deque        N        Y        Y       N      N
heap         N        N        N       N      Y
set          N        N        N       N      Y
map          N        N        N       N      Y
list         Y        Y        Y       Y      N
multiset     N        N        N       N      Y
multimap     N        N        N       N      Y
hashtable    N        N        N       N      Y
hashmap      N        N        N       N      Y
                                    

ins 100 999
ins 100 nth 10 999
ins 100 first 999
ins 100 last 999

ins 100 200 300


//delete
del操作矩阵

       操作  all      nth      first    last     range    first_k  last_k   ptr      lege     ltge     legt     ltgt     rank     max      min      max_k    min_k    eq       gt       lt       ge       le 
容器                                                                                
trie         Y        N        N        N         N        N        N       N        N         N        N        N       N        N         N        N       N        N        N        N        N        N 
vector       Y        Y        Y        Y         Y        Y        Y       N        N         N        N        N       N        N         N        N       N        N        N        N        N        N 
stack        Y        N        N        Y         N        N        N       N        N         N        N        N       N        N         N        N       N        N        N        N        N        N 
queue        Y        N        Y        N         N        N        N       N        N         N        N        N       N        N         N        N       N        N        N        N        N        N 
deque        Y        N        Y        Y         N        Y        Y       N        N         N        N        N       N        N         N        N       N        N        N        N        N        N 
heap         Y        N        N        N         N        N        N       N        N         N        N        N       N        N         Y        N       N        Y        N        N        N        N 
set          Y        N        N        N         N        N        N       N        Y         Y        Y        Y       Y        Y         Y        Y       Y        Y        Y        Y        Y        Y 
map          Y        N        N        N         N        N        N       N        N         N        N        N       N        Y         Y        N       N        Y        N        N        N        N 
list         Y        Y        Y        Y         Y        Y        Y       Y        N         N        N        N       N        N         N        N       N        N        N        N        N        N 
multiset     Y        N        N        N         N        N        N       N        Y         Y        Y        Y       Y        Y         Y        Y       Y        Y        Y        Y        Y        Y 
multimap     Y        N        N        N         N        N        N       N        N         N        N        N       N        Y         Y        N       N        Y        N        N        N        N 
hashtable    Y        N        N        N         N        N        N       N        N         N        N        N       N        N         N        N       N        Y        N        N        N        N 
hashmap      Y        N        N        N         N        N        N       N        N         N        N        N       N        N         N        N       N        Y        N        N        N        N 


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


开发
SDK目录包含C和Python的开发接口。
  C语言开发
    C语言开发包提供基于Visual Studio 2019的C++动态开发库。
    inc目录中包含本地版开发库头文件(nosql_lib_local.h)和网络版开发库头文件(nosql_lib.h)
    dll目录中包含本地版开发库(sct_nosql_lib_local_mem),网络版开发库(sct_nosql_lib_mem)和二进制协议的开发库(sct_nosql4bin_lib_local_mem)。
    sample.c是一个网络版c语言开发示例文件。
    本地版和网络版区别不需要进行网络连接和退出函数,其它接口函数功能一致。

  Python语言开发
    Python语言开发包提供基于Python 3的编译库。
    nosql_lib.pyc是开发的编译库
    nosql_lib_sample.py为开发库示例
    注意,python开发库只提供网络版开发库。