#数据库 #数据库表 #系统 #管理 #存储 #时间 #空间

app furdb

一个以存储空间使用和快速查找/查询时间为优先的轻量级数据库管理系统

3个版本

0.1.2-alpha2024年4月13日
0.1.1 2024年3月10日
0.1.0 2022年9月4日

#18 in 数据库实现

自定义许可

66KB
1.5K SLoC

FurDB

Docker Image CI Minimum rustc 1.70 oq3_semantics crate

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