# lisp-sdb **Repository Path**: nneolc/lisp-sdb ## Basic Information - **Project Name**: lisp-sdb - **Description**: 一个简单的Key-Value本地数据库系统,使用NewLisp设计。 - **Primary Language**: Common Lisp - **License**: BSD-2-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2015-06-22 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #lisp-sdb Simple Database by Julong Yin 一个使用NewLisp设计的本地Key-Value数据库系统。 * 由于懒得在电脑上用git,所以主要以附件的形式提供。 * **如果你的系统里没有newlisp而且你不想下载,那么可以下载附件,那是没有依赖的发行版** * 附件中的main.lisp运行时并不需要,因为是源码的一部分所以保留。 #使用NewLisp构建 ``` 1.newlisp -x main.lisp sdb.exe or sdb(linux) 2.建立一个目录sdb 3.将app.lisp client.lisp db.lisp sdb.exe 复制到目录sdb 4.这样就构建好sdb了。 ``` #sdb架构 sdb是一个简单的Key-Value数据库系统,使用单个文件作为数据库。 每一个数据库中,以空间为存储单位,所有键值对都存储在空间中,一个数据库可以有多个空间。 目前并没有类型支持,只有简单的字符串文本。 #sdb.exe 使用参数 当没指定有效参数时,进入一个空环境的REPL,目前支持以下参数: link: 启动时连接到一个数据库文件 help 显示参数帮助信息 ``` >sdb ... >sdb link:db.txt ; 如果存在db.txt,则加载其数据,否则新建一个数据库 ... ``` #REPL命令 ``` * = ., 例如users.joh get 获取一个空间里指定Key的值,指定的空间与键值对必须已存在。 set value 更新一个键值对中的值,如果这个键值对存在则更新,不存在则创建键值对 list 列出一个空间中的所有键值对 erase ... 删除所有指定的的键值对,例如erase users.joh test.yu就是删除这两个键值对 eraseall ... 删除所有指定的空间中的所有键值对,例如eraseall user test就是将这两个空间清空 spaces 列出当前数据库中所有的空间 dup 复制一个已有的空间到一个新的空间,新空间的名称必须是还未建立的 new 建立一个新的空间 delete 删除一个已建立的空间 link 连接到一个数据库文件,如果目前已连接了其他的数据库,则先保存更新再继续连接指定的数据库 unlink 断开当前数据库的连接,并保存所做的更新 relink 断开当前数据库的连接,但不保存所做的更新 q or quit 退出sdb,保存对当前数据库所做的更新 q! or quit! 直接退出sdb ``` #操作演示 ``` ~/sdb>sdb link:demo-db.txt Lisp Simple Database 1.0 by Julong Yin(2015) Enter q or quit leave the stupid software Enter h or help see more information demo-db.txt>new rules ok demo-db.txt>spaces rules demo-db.txt>set rules.1# El ok demo-db.txt>set rules.2# Eld ok demo-db.txt>set rules.3# Tir ok demo-db.txt>set rules.4# Nef ok demo-db.txt>set rules.5# Eth ok demo-db.txt>set rules.6# Ith ok demo-db.txt>set rules.7# Tal ok demo-db.txt>set rules.8# Ral ok demo-db.txt>set rules.9# Ort ok demo-db.txt>set rules.10# Thul ok demo-db.txt>set rules.11# Amn ok demo-db.txt>set rules.12# Sol ok demo-db.txt>set rules.13# Shael ok demo-db.txt>set rules.14# Dol ok demo-db.txt>set rules.15# Hel ok demo-db.txt>set rules.16# Io ok demo-db.txt>set rules.17# Lum ok demo-db.txt>set rules.18# Ko ok demo-db.txt>set rules.19# Fal ok demo-db.txt>set rules.20# Lem ok demo-db.txt>set rules.21# Pul ok demo-db.txt>set rules.22# Um ok demo-db.txt>set rules.23# Mal ok demo-db.txt>set rules.24# Ist ok demo-db.txt>set rules.25# Gul ok demo-db.txt>set rules.26# Vex ok demo-db.txt>set rules.27# Ohm ok demo-db.txt>set rules.28# Lo ok demo-db.txt>set rules.29# Sur ok demo-db.txt>set rules.30# Ber ok demo-db.txt>set rules.31# Jah ok demo-db.txt>set rules.32# Cham ok demo-db.txt>set rules.33# Zod ok demo-db.txt>list rules 33# Zod 32# Cham 31# Jah 30# Ber 29# Sur 28# Lo 27# Ohm 26# Vex 25# Gul 24# Ist 23# Mal 22# Um 21# Pul 20# Lem 19# Fal 18# Ko 17# Lum 16# Io 15# Hel 14# Dol 13# Shael 12# Sol 11# Amn 10# Thul 9# Ort 8# Ral 7# Tal 6# Ith 5# Eth 4# Nef 3# Tir 2# Eld 1# El demo-db.txt>get rules.31# Jah demo-db.txt>dup rules rules-dup ok demo-db.txt>spaces rules-dup rules demo-db.txt>list rules-dup 33# Zod 32# Cham 31# Jah 30# Ber 29# Sur 28# Lo 27# Ohm 26# Vex 25# Gul 24# Ist 23# Mal 22# Um 21# Pul 20# Lem 19# Fal 18# Ko 17# Lum 16# Io 15# Hel 14# Dol 13# Shael 12# Sol 11# Amn 10# Thul 9# Ort 8# Ral 7# Tal 6# Ith 5# Eth 4# Nef 3# Tir 2# Eld 1# El demo-db.txt>h Commands: get Get a value. set Create or update a value. list List all value in a space. erase Delete a pair. eraseall Delete all pair in a space. spaces List all space. dup Duplication a space to new space. new Create a space. delete Delete a space. link Link to a database file. unlink Unlink current database and apply update. relink Unlink current database but do not update. q or quit Leave the stupid software. q! or quit! Leave the stupid software and do not apply database change. About command more information, Enter help . If you want to know more more information, See source. demo-db.txt>q ```