数蚕结构数据库是一个数据结构存储数据库,支持丰富的数据结构类型。
数蚕结构数据库是一个基于内存的数据结构存储数据库,支持丰富的数据结构类型。
这是一个良好测试的,超快的内存结构存储数据库,可以用来存储高自由度结构化数据。
启动与配置:
下载程度安装包, 解压到目标安装目录, 运行服务端或客户端。
文件说明:
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开发库只提供网络版开发库。