# resob
```
██████╗ ███████╗███████╗ ██████╗ ██████╗
██╔══██╗██╔════╝██╔════╝██╔═══██╗██╔══██╗
██████╔╝█████╗ ███████╗██║ ██║██████╔╝
██╔══██╗██╔══╝ ╚════██║██║ ██║██╔══██╗
██║ ██║███████╗███████║╚██████╔╝██████╔╝
╚═╝ ╚═╝╚══════╝╚══════╝ ╚═════╝ ╚═════╝
```
#### 介绍
resob是remote service of BsTr tree的缩写。包resob定义了一个名为BsTr的结构,并基于该结构实现了一个可以指针混写的类B+树,借鉴脉动工作流模式,支持表级并行度。纯go标准库实现,没有额外的依赖。
resob_jsondb是基于BsTr树的json数据库,支持特定的json格式作为包含数据的操作命令,通过解析json实现插入、删除、更新和查找。
#### 特性
1. 具有在go结构体和BsTr struct之间实施相互转换的能力;具备在BsTr struct和json字符串之间实施序列化和反序列化的能力。
2. 具备基于BsTr struct简捷生成BsTr tree(blink tree)的能力;BsTr tree可以在内存块和磁盘page间实施指针混写。
3. BsTr tree支持5中key([]byte、string、int64,、float64、complex128)任意value的插入、删除、更新和查找(具备服务端分页能力),可以分为单线程和多线程模式工作,具备表级并行。
4. BsTr tree支持UNIQUE、COMPRESS、FILE、BIG、FILEBIG、NOSERIAL等key标识。
5. resob_jsondt基于BsTr tree,实现了两种key类型(string、int64)value为json数据的插入、删除、更新和查找(具备服务端分页能力),json的字段会被分别存储并建立索引。
6. resob_jsondb是基于resob_jsondt实现的json解析数据库,可以很容易地实现为提供远程json解析数据存储或缓存服务。resob-http-simpleadmin是基于resobdb的一个demo实现,包含服务端及管理界面,所有的操作采用json格式的命令,通过http发送和接收数据。
#### 安装教程
1. go install gitee.com/lineofsight/resob
2. 直接打包下载解压,然后在项目中import
#### go语言教程:使用go语言实现具备指针混写能力的B+树(blink树),并基于该树形结构实现一个通过解析json实施插入、删除、更新和查找操作的数据库。
[一个退役中校教你如何用go语言写一个基于B+树的json数据库](https://gitee.com/lineofsight/lieutenant)
#### json命令示例
- `{"showdbs":""}`
- `{"use":{"db":"info-energizer","remotelog":"127.0.0.1:9527","readonly":false,"usr":"resob","pwd":"jsonany"}}`
- `{"updpwd":{"usr":"resob","pwd":"anyjson"}}`
- `{"showdts":"info-energizer"}`
- `{"get":{"personal_info":"{*}","fields":"[*]"}}`
- `{"page":"next"}/{"page":"prev"}/{"page":200}`
- `{"get":{"family_name:personal_info":"{~`李`}","fields":"[`personal_info.family_name`,`personal_info.name`]"}}`
**notice-> family_name:personal_info in condition, personal_info.family_name for results.**
_the field of dt should use ':' as seperator with a reverse order("filed:dt") for conditon, but use '.' as seperator with normal order(`dt.field`) for results._
- `{"get":{"time_performance":"{>=0}","fields":"[*]"}}`
- `{"put":{"key":1234560,"personal_info":{"personid":"0880124199802032569","family_name":"李","name":"三","native_place":"某地","personnel_category":"某种**人员","mt_rank":"某校","mt_appointment":"某长","mt_technical_level":"无","civil_service_level":"无","civil_management_position":"无","political_party":"XXXXX","race":"汉","party_membership_time":"2005-10-05","working_time":"2004-12-01","enlistment_time":"2004-12-01","health_condition":"健康","education":"大学","academic_degree":"本科","graduated":"某院","speciality":"某专业","in-service_education":"无","in-service_academic_degree":"无","in-service_graduated":"无","in-service_speciality":"无","honors_awards":"awards 2次","mt_skills":"某技能","mt_drill":"某大型XXX","resume":"2004.12-2006.09 某XXX soldier;2006.09-2023.06 某XXX commander。"}}}`
- `{"upd":{"key":1234560,"personal_info":{"family_name":"liu"}}}`
- `{"del":[{"key":123456,"personal_info":{}},{"key":1234560,"personal_info":{}}]}`
- `{"close":{"db":"info-energizer"}}`
#### 示例代码
1. resob jsondb 示例代码
```go
import (
"gitee.com/lineofsight/resob"
)
func main(){
dbsp, dbspf := InitDbsp(new(DefaultJsonDbAuth))
log.Println(dbsp)
defer CloseDbsp(dbsp, dbspf)
log.Println(dbsp)
s := "{\"use\":{\"db\":\"test00\",\"remotelog\":\"127.0.0.1:9527\",\"readonly\":false,\"usr\":\"resob000\",\"pwd\":\"jsonany\"}}"
ur := UseDb(&DbspUseDbParams{s, dbsp, dbspf})
if ur.E != nil {
log.Println(ur.E)
}
log.Println(ur.Jdb)
log.Println(dbsp)
tml := "{\"set\":{\"key\":123456,\"personal_info\":{\"aaa\":\"!\",\"aaab\":true,\"arrarrstrct\":{\"nnn\":1,\"ccc\":[[\"sdf\tsdfs\\dfe29asdf\",\"nmbndfvdfgfdg\"],[\"sdf\tsdfs\\dfe29asdf\",\"poiuiyyttt\"]]},\"ddd\":\"\",\"fff\":false,\"comboolarr\":[{\"boolarr0\":[true,false]},{\"boolarr1\":[true,false]}]}}}"
Jdb, _, rs, e := LocalCenterJsonEngine(dbsp, dbspf, ur.Jdb, tml, nil)
if e != nil {
log.Println(rs, e)
}
s = "{\"put\":{\"key\":123456,\"personal_info\":{\"aaa\":\"sdf\tsdfs\\dfe29asdf\",\"aaab\":true,\"arrarrstrct\":{\"nnn\":-1234567890,\"ccc\":[[\"sdf\tsdfs\\dfe29asdf\",\"nmbndfvdfgfdg\"],[\"sdf\tsdfs\\dfe29asdf\",\"poiuiyyttt\"]]},\"ddd\":\"sdf\tsdfs\\dfe29asdf\",\"fff\":false,\"comboolarr\":[{\"boolarr0\":[true,false]},{\"boolarr1\":[true,false]}]}}}"
Jdb, _, rs, e = LocalCenterJsonEngine(dbsp, dbspf, ur.Jdb, s, nil)
if e != nil {
log.Println(e)
}
s6 := "{\"put\":{\"personal_info\":{\"anyany\":\"anysdf\tsdfs\\dfe29asdf\",\"aaa\":\"sdf\tsdfs\\dfe29asdf\",\"aaab\":true,\"arrarrstrct\":{\"nnn\":-1234567890,\"ccc\":[[\"sdf\tsdfs\\dfe29asdf\",\"nmbndfvdfgfdg\"],[\"sdf\tsdfs\\dfe29asdf\",\"poiuiyyttt\"]]},\"ddd\":\"sdf\tsdfs\\dfe29asdf\",\"fff\":false,\"comboolarr\":[{\"boolarr0\":[true,false]},{\"boolarr1\":[true,false]}]}}}"
Jdb, _, rs, e = LocalCenterJsonEngine(dbsp, dbspf, Jdb, s6, nil)
if e != nil {
log.Println(e)
}
s5 := "{\"put\":{\"key\":0123456,\"personal_info\":{\"anyany\":\"anysdf\tsdfs\\dfe29asdf\",\"aaa\":\"sdf\tsdfs\\dfe29asdf\",\"aaab\":true,\"arrarrstrct\":{\"nnn\":-1234567890,\"ccc\":[[\"sdf\tsdfs\\dfe29asdf\",\"nmbndfvdfgfdg\"],[\"sdf\tsdfs\\dfe29asdf\",\"poiuiyyttt\"]]},\"ddd\":\"sdf\tsdfs\\dfe29asdf\",\"fff\":false,\"comboolarr\":[{\"boolarr0\":[true,false]},{\"boolarr1\":[true,false]}]}}}"
Jdb, _, rs, e = LocalCenterJsonEngine(dbsp, dbspf, Jdb, s5, nil)
if e != nil {
log.Println(e)
}
s0 := "{\"put\":[{\"key\":12345678,\"personal_info\":{\"aaa\":\"sdf\tsdfs\\dfe29asdf\",\"aaab\":true,\"arrarrstrct\":{\"nnn\":-1234567890,\"ccc\":[[\"sdf\tsdfs\\dfe29asdf\",\"nmbndfvdfgfdg\"],[\"sdf\tsdfs\\dfe29asdf\",\"poiuiyyttt\"]]},\"ddd\":\"sdf\tsdfs\\dfe29asdf\",\"fff\":false,\"comboolarr\":[{\"boolarr0\":[true,false]},{\"boolarr1\":[true,false]}]}},{\"key\":1234560,\"personal_info\":{\"aaa\":\"sdf\tsdfs\\dfe29asdf\",\"aaab\":true,\"arrarrstrct\":{\"nnn\":-1234567890,\"ccc\":[[\"sdf\tsdfs\\dfe29asdf\",\"nmbndfvdfgfdg\"],[\"sdf\tsdfs\\dfe29asdf\",\"poiuiyyttt\"]]},\"ddd\":\"sdf\tsdfs\\dfe29asdf\",\"fff\":false,\"comboolarr\":[{\"boolarr0\":[true,false]},{\"boolarr1\":[true,false]}]}}]}"
Jdb, _, rs, e = LocalCenterJsonEngine(dbsp, dbspf, Jdb, s0, nil)
if e != nil {
log.Println(e)
}
s1 := "{\"put\":{\"key\":123456,\"personal_info\":{\"aaa\":\"sdf\tsdfs\\dfe29asdf\",\"aaab\":true,\"arrarrstrct\":{\"nnn\":-1234567890,\"ccc\":[[\"sdf\tsdfs\\dfe29asdf\",\"nmbndfvdfgf
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
resob-0.1.zip (57个子文件)
resob-0.1
BsTrstruct_gets.go 24KB
resob_jsondt_putjson_parser.go 6KB
BsTrstruct_ffunc.go 30KB
BsTrstruct_file.go 39KB
BsTrtree_start_persis_.go 10KB
resob_jsonparser_assemble.go 4KB
resob_jsondt.go 12KB
BsTrstruct_remote.go 9KB
BsTrtree_swput.go 27KB
resob_jsondt_get.go 31KB
BsTrtree_cwput.go 26KB
resob_jsondb_dbparser_.go 2KB
resob_jsondt_put.go 38KB
resob_jsondt_deletejson_parser.go 3KB
BsTrtree_getpage_.go 2KB
resob_snowflake_.go 3KB
LICENSE 9KB
BsTrtree_bwget.go 39KB
resob_jsonparser.go 39KB
BsTrtree_.go 51KB
BsTrstruct_.go 24KB
BsTrtree_iwget.go 38KB
BsTrtree_fwput.go 26KB
BsTrtree_swget.go 40KB
BsTrstruct_careful.go 17KB
BsTrTree_adapter_.go 61KB
resob_util.go 23KB
BsTrtree_new.go 2KB
BsTrtree_iwput.go 26KB
BsTrstruct_test.go 12KB
BsTrstruct_puts.go 61KB
BsTrtree_start_.go 30KB
BsTrtree_cond_.go 632B
resob_jsondb.go 38KB
resob_jsonparser_assemble_str.go 4KB
BsTrtree_bwput.go 26KB
BsTrstruct_delete.go 19KB
BsTrtree_fwget.go 38KB
BsTrtree_cwget.go 39KB
BsTrstruct_checks.go 13KB
resob_jsondt_getjson_parser.go 20KB
err.go 5KB
resob_jsonparser_assemble_f64.go 4KB
resob_findparams.go 5KB
BsTrtree_replay_rescue_.go 8KB
BsTrtree_is.go 1KB
BsTrtree_start_spire_.go 10KB
resob_updatejson_parser.go 4KB
BsTrtree_test.go 65KB
README.en.md 1KB
resob_jsonparser_assemble_bool.go 4KB
BsTrtree_I.go 3KB
resob_test.go 27KB
README.md 36KB
resob_jsonparser_assemble_i64.go 4KB
resob_jsondt_test.go 45KB
BsTrstruct_nocheckputs.go 36KB
共 57 条
- 1
资源评论
coding天山下
- 粉丝: 92
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 嵌入式基础学习资料0000
- content_1714465331721.xls
- HM3401-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- Chainbase+Web3+APi+Data warehouse
- HM3401D-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- GEE案例-1990-2023年计算某个区域的NDVI时序变化轨迹(以徐州市为例)含全部代码.pdf
- HM3401C-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 沈丘盛世龙门图纸符合规范化
- 基于51单片机带LCD1602显示+温度补偿的超声波测距仪设计软硬设计+仿真+文档资料.zip
- 一、K210是什么? K210全称为堪智K210,是嘉楠科技自主研发的一款采用RISC-V处理器架构,具备视听一体、自主IP内核
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功