5 个版本

0.1.0-beta.52023年1月25日
0.1.0-beta.42022年12月13日
0.1.0-beta.32022年12月10日

#2#数据库管理

每月 22 次下载

MIT 许可证

135KB
4.5K SLoC

Built by @nomadiz

███████╗██████╗ ███╗   ███╗ █████╗ 
██╔════╝██╔══██╗████╗ ████║██╔══██╗
█████╗  ██║  ██║██╔████╔██║███████║
██╔══╝  ██║  ██║██║╚██╔╝██║██╔══██║
███████╗██████╔╝██║ ╚═╝ ██║██║  ██║
╚══════╝╚═════╝ ╚═╝     ╚═╝╚═╝  ╚═╝
-----------------------------------
Embedded Database Management for All

EDMA - A terminal app for embedded database management. | Product Hunt

什么是 EDMA?

EDMA: 为所有嵌入式数据库提供管理方案 是一个开源项目,旨在管理嵌入式键值存储。EDMA 是一个易于安装和配置的 TUI(终端用户界面),允许工程师遍历嵌入式数据库并使用提供的字节布局反序列化字节数据。这增强了与类似 RocksDB 或 Redb 之类的底层数据库系统工作的体验。

功能

  • 支持多种嵌入式数据库:RocksDBRedb,`Sled
  • `
  • 跨平台支持:WindowsLinuxMacOS
  • 自定义字节布局反序列化
  • 在终端中直接执行数据库命令
  • 仅使用键盘控制的交互式终端界面
  • 从列族和表中迭代键值对

路线图

  • 新增:支持通用键值存储 (UKV)
  • 新增:支持 Sled
  • 新增:支持 LevelDB
  • 为编辑视图添加一致模式

支持的存储

EDMA 支持多种数据库,采用易于插入的架构。请查看以下列表以获取支持的数据库及其功能

数据库名称 描述 EDMA 版本 拉取请求
RocksDB 支持非列和列字节数据查看器(COLUMN v0.1.0-beta.4 N/A
ReDB 支持默认数据库(将添加 TABLE 查看) v0.1.0-beta.4 N/A
Sled 支持非树和树字节数据查看器(TREE v0.1.0-beta.5 #8 Sled 支持

要为数据库集成创建拉取请求,请访问 问题 > 新问题 > 功能请求

入门指南

安装

使用 Cargo(Linux,MacOS,Windows)

如果您已经设置了 Rust 环境,可以使用以下命令:cargo install

cargo install --version 0.1.0-beta.3 edma

从二进制文件(Linux、macOS、Windows)获取

  • 下载您系统上最新的发布版二进制文件
  • 设置 PATH 环境变量

设置配置文件路径

配置文件是您标识数据库和 EDMA 字节模板路径的地方。要设置配置文件路径,请使用 CLI 命令

$ edma --config-path [PATH_TO_FILE]

请参阅 EDMA 配置文件 了解配置文件的工作方式。

使用方法

运行 EDMA 终端应用程序

$ edma

设置配置文件路径

$ edma --config-path [PATH]

使用 help 命令

$ edma --help

edma 0.1.0
A cross-platform TUI database management tool written in Rust

USAGE:
    gui [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -c, --config-path <config-path>    Set the config file

为什么使用 EDMA?

兼容多种数据库

EDMA 是第一个专为嵌入式数据库设计的数据库管理工具。将适配器设计模式应用于数据库存储实现,使得与数据库的集成更加容易。EDMA 默认支持两种数据库:RocksDBReDB。要与其他嵌入式数据库集成,您可以在 EDMA 存储层 中添加实现

交互式终端 UI

EDMA 使用 Rust 库 tui-rs 构建,使其成为可以在终端上直接运行的应用程序。无需启动时间,且非常轻量级。随时随地运行,一次运行全部

字节反序列化模板管理

嵌入式数据库中的数据与关系型数据库中展示的数据不同。当关系型数据库在创建时会对数据进行特定类型和属性的标记,而嵌入式数据库无法做到这一点。嵌入式数据库显示的唯一数据类型是字节数组。例如,[0 0 0 1 50 32 20]。它不是人类可读的。

使用 EDMA,可以使用 EDMA 字节模板系统将字节数据转换为人类可读数据。

有关 EDMA 字节反序列化器如何工作的说明: EDMA 模板是什么?

命令编辑器

命令编辑器是 EDMA 的一个核心功能,它允许您使用高级命令管理字节数据。以下图片显示了如何使用命令编辑器迭代数据库列族

键盘映射

描述
ENTER 进入焦点部分
ESC 从焦点部分退出
9, 0 向上/向下滚动数据库
hj 向上/向下滚动键字节布局
kl 向上/向下滚动值字节布局
将焦点移动到左/右/上/下
hdl 切换到主页/数据库/布局
q 退出

EDMA 命令

EDMA 支持内联命令与嵌入式数据库交互。支持的命令列表如下:

- COLUMNTABLE

通过定义的列族或表进行迭代

参数

  • String:列族名称

- PREFIXSUFFIX

通过前缀或后缀进行过滤迭代。

注意:此命令用于键迭代,而不是值迭代。

参数

  • String:前缀值或后缀值

配置

数据库

数据库名称应为以下两个之一

  • rocksdb:RocksDB
  • redb:Redb

数据库路径应为 String 类型

模板

字节模板是由一个或多个字节布局组成的指令。它提供了关于字节数据的EDMA反序列化信息。为了解释字节模板和字节布局的使用,我们有一个例子

Original= edma2022github
Bytes= [65 64 6d 61 32 30 32 32 67 69 74 68 75 62]

将数据切片并将数据标记为EDMA字节模板,我们有

[1]
original=edma
from=0
to=4
variant=String

[2]
original=2022
from=4
to=8
variant=Int32

[3]
original=github
from=8
to=13
variant=String

示例

配置文件示例

{
	"databases": [
		{
			"name": "rocksdb",
			"path": "/temp"
		},
		{
			"name": "sled",
			"path": "/temp/sled"
		}
	],
	"templates": [
		{
			"name": "Custom layout",
			"layouts": [
				{
					"name": "name",
					"from": 0,
					"to": 5,
					"variant": "String"
				},
				{
					"name": "id",
					"from": 5,
					"to": 10,
					"variant": "Int64"
				}
			]
		}
	]
}

致谢

没有这些出色的开源项目,EDMA将无法完善。请与以下repo分享聚光灯:gobangtui-rsspotify-tuitui-re-tree-widget

社区

依赖项

~8–19MB
~238K SLoC