3个版本
0.1.2-alpha | 2024年4月13日 |
---|---|
0.1.1 | 2024年3月10日 |
0.1.0 | 2022年9月4日 |
#18 in 数据库实现
66KB
1.5K SLoC
FurDB是一个以存储空间使用和快速查找/查询时间为优先的轻量级数据库管理系统。FurDB 允许您指定数据占用的具体位数。
10011100 01010000
┌─┐┌───────┐┌───┐
^ ^ ^
d1 d2 d3
安装
Cargo
FurDB 可以通过 cargo
直接安装。
cargo install furdb
从源码编译
您可以克隆此仓库,构建并运行程序。
git clone https://github.com/madhavan-raja/furdb.git
cd ./furdb
cargo build --release
启动服务器
Docker
您可以从仓库中拉取镜像,并在容器中运行。
docker run --name furdb -d madhavanraja/furdb:latest
您可以使用 compose
在另一个应用程序中将镜像用作服务。
git clone https://github.com/madhavan-raja/furdb.git
cd ./furdb
docker-compose up --build
您可以使用 compose
在另一个应用程序中使用此镜像作为服务。
version: "3"
services:
furdb:
image: madhavanraja/furdb:latest
environment:
WORKDIR: /furdb
PORT: 5678
restart: on-failure
服务器可通过 http://furdb:{PORT}
访问。
命令行
如果可执行文件存在于您的 PATH
中,您可以直接运行服务器。
furdb --workdir "/furdb" serve --port 5678
您可以使用 help
命令查看所有可用选项。
furdb help
用法
FurDB服务器 提供了用于创建、读取和删除数据库、表和条目的REST API端点。
检查服务器信息
获取服务器信息。
端点
GET
/
响应
{
"result": "success",
"statusCode": 200,
"status": "OK",
"response": {
"message": "Server is running",
"config": {
"workdir": "/furdb"
}
}
}
创建数据库
创建ID为 my_database
的数据库。
端点
POST
/my_database
响应
{
"result": "success",
"statusCode": 201,
"status": "Created",
"response": {
"databaseId": "my_database"
}
}
获取数据库信息
获取ID为 my_database
的数据库信息。
端点
GET
/my_database
响应
{
"result": "success",
"statusCode": 200,
"status": "OK",
"response": {
"databaseId": "my_database",
"databaseTables": []
}
}
删除数据库
删除ID为 my_database
的数据库。
端点
DELETE
/my_database
响应
{
"result": "success",
"statusCode": 200,
"status": "OK",
"response": null
}
创建表
在ID为 my_database
的数据库中创建ID为 my_table
的表。
端点
POST
/my_database/my_table
请求
{
"tableColumns": [
{
"size": 5
},
{
"size": 3
}
]
}
响应
{
"result": "success",
"statusCode": 201,
"status": "Created",
"response": {
"databaseId": "my_database",
"tableId": "my_table",
"tableColumns": [
{
"size": 5
},
{
"size": 3
}
]
}
}
获取表信息
获取ID为 my_table
的数据库表中信息。
端点
GET
/my_database/my_table
响应
{
"result": "success",
"statusCode": 200,
"status": "OK",
"response": {
"databaseId": "my_database",
"tableId": "my_table",
"tableColumns": [
{
"size": 5
},
{
"size": 3
}
]
}
}
删除表
删除ID为 my_table
的数据库表。
端点
DELETE
/my_database/my_table
响应
{
"result": "success",
"statusCode": 200,
"status": "OK",
"response": null
}
插入条目
将条目插入到ID为 my_table
的数据库表中。
端点
POST
/my_database_/my_table/data
请求
{
"data": [
[21, 0],
[17, 1],
[23, 2],
[9, 0],
[31, 1],
[0, 2]
]
}
响应
{
"result": "success",
"statusCode": 201,
"status": "Created",
"response": null
}
获取条目
从ID为 my_table
的数据库表中获取条目。
端点
GET
/my_database_/my_table/data
获取所有条目
请求
{
"entries": "all"
}
响应
{
"result": "success",
"statusCode": 200,
"status": "OK",
"response": {
"resultCount": 6,
"results": [
{
"index": 0,
"data": [21, 0]
},
{
"index": 1,
"data": [17, 1]
},
{
"index": 2,
"data": [23, 2]
},
{
"index": 3,
"data": [9, 0]
},
{
"index": 4,
"data": [31, 1]
},
{
"index": 5,
"data": [0, 2]
}
]
}
}
按索引获取条目
请求
{
"entries": {
"indices": [1, 3]
}
}
响应
{
"result": "success",
"statusCode": 200,
"status": "OK",
"response": {
"resultCount": 2,
"results": [
{
"index": 1,
"data": [17, 1]
},
{
"index": 3,
"data": [9, 0]
}
]
}
}
按值获取条目
请求
{
"entries": {
"value": {
"columnIndex": 0,
"value": 23
}
}
}
响应
{
"result": "success",
"statusCode": 200,
"status": "OK",
"response": {
"resultCount": 1,
"results": [
{
"index": 2,
"data": [23, 2]
}
]
}
}
删除条目
从ID为 my_table
的数据库表中删除条目。
端点
DELETE
/:database_id/:table_id/data
删除所有条目
请求
{
"entries": "all"
}
响应
{
"result": "success",
"statusCode": 200,
"status": "OK",
"response": null
}
按索引删除条目
请求
{
"entries": {
"indices": [1]
}
}
响应
{
"result": "success",
"statusCode": 200,
"status": "OK",
"response": null
}
依赖项
~19–35MB
~661K SLoC