Skip to content

Commit 93c6525

Browse files
committed
Publish beta version of EDMA
1 parent 8a0b5d1 commit 93c6525

File tree

8 files changed

+403
-37
lines changed

8 files changed

+403
-37
lines changed

Cargo.lock

+19-19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

+98-13
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,22 @@ Embedded Database Management for All
1414

1515
<p>
1616
<a href="https://github.com/nomadiz/edma"><img src="https://img.shields.io/badge/built_with-Rust-dca282.svg?style=flat-square"></a>
17-
&nbsp;
17+
<a href="https://crates.io/crates/edma"><img src="https://img.shields.io/crates/v/edma.svg?logo=rust"/></a>
1818
<a href="https://github.com/nomadiz/edma"><img src="https://img.shields.io/github/v/release/nomadiz/edma?color=%23ff00a0&include_prereleases&label=version&sort=semver&style=flat-square"></a>
19-
&nbsp;
2019
<a href="https://github.com/nomadiz/edma/blob/master/LICENSE">
2120
<img src="https://img.shields.io/badge/license-MIT License-00bfff.svg?style=flat-square"></a>
22-
&nbsp;
23-
<a href="https://github.com/nomadiz/edma/graphs/contributors" alt="Contributors">
24-
<img src="https://img.shields.io/github/contributors/nomadiz/edma" /></a>
25-
<a href="https://github.com/nomadiz/edma/pulse" alt="Activity">
26-
&nbsp;
27-
<img src="https://img.shields.io/github/commit-activity/m/nomadiz/edma" />
21+
<a href="https://github.com/nomadiz/edma/graphs/contributors" alt="Contributors">
22+
<img src="https://img.shields.io/github/contributors/nomadiz/edma?color=green" /></a>
23+
<a href="https://github.com/nomadiz/edma/pulse" alt="Activity">
2824
</a>
2925
</p>
3026

3127
## What is EDMA?
28+
3229
<p align="center">
33-
<img width="80%" src="https://user-images.githubusercontent.com/56880684/206833658-97091acd-11c7-4b78-b08b-9ce2aeb365a8.gif"/>
30+
<img width="80%" style="
31+
box-shadow: 0px 4px 59px 22px rgba(0, 0, 0, 0.56);
32+
border-radius: 10px;" src="https://user-images.githubusercontent.com/56880684/206833658-97091acd-11c7-4b78-b08b-9ce2aeb365a8.gif"/>
3433
</p>
3534

3635
**EDMA: Embedded Database Management for All** is an open source project made to manage embedded key-value storages. EDMA is a TUI (Terminal User Interface) that is easy to install and configure. It allows engineer to traverse the embedded database and deserialize byte data with provided byte layout. This enhances the experience of working with low level database system like RocksDB or Redb.
@@ -42,9 +41,44 @@ Embedded Database Management for All
4241
- Custom byte layout deserialization
4342
- Execute database command directly in terminal
4443
- Interactive terminal interface with keyboard only control
45-
- Iterate key-value pairs from column family and table
44+
- Iterate key-value pairs from column family and table
45+
46+
## Getting Started
47+
48+
### Installation
49+
50+
#### With Homebrew (Linux, macOS)
51+
52+
If you’re using Homebrew or Linuxbrew, install the edma formula:
53+
54+
```
55+
brew install nomadiz/tap/edma
56+
```
57+
58+
#### With Cargo (Linux, macOS, Windows)
59+
60+
If you already have a Rust environment set up, you can use the `cargo install` command:
61+
62+
```
63+
cargo install --version 0.1.0-beta.3 edma
64+
```
4665

47-
## Usage
66+
#### From binaries (Linux, macOS, Windows)
67+
68+
- Download the [latest release binary](https://github.com/nomadiz/edma/releases) for your system
69+
- Set the `PATH` environment variable
70+
71+
### Set a config path
72+
73+
Configuration file is where you identify path to databases and EDMA byte templates. To set a config path, using a CLI command
74+
75+
```
76+
$ edma --config-path [PATH_TO_FILE]
77+
```
78+
79+
Please view [EDMA Configuration file](https://github.com/nomadiz/edma#configuration) to learn more how configuration file works.
80+
81+
### Usage
4882

4983
Run EDMA terminal application
5084

@@ -55,7 +89,7 @@ $ edma
5589
Set a config file path
5690

5791
```shell
58-
$ edma --config-file [PATH]
92+
$ edma --config-path [PATH]
5993
```
6094

6195
Using `help` command
@@ -77,6 +111,52 @@ OPTIONS:
77111
-c, --config-path <config-path> Set the config file
78112
```
79113

114+
## Why use EDMA?
115+
116+
### Compatible with multiple databases
117+
118+
<p align="center">
119+
<img width="80%" style="
120+
box-shadow: 0px 4px 59px 22px rgba(0, 0, 0, 0.56);
121+
border-radius: 10px;" src="https://user-images.githubusercontent.com/56880684/206836453-3834a473-363b-4b7e-af27-fbbc6115a3bc.png"/>
122+
</p>
123+
124+
**EDMA** is a very first database management tool designed for embedded databases. Applying adapter design pattern into database storage implementation, it makes integration with databases become easier. EDMA supports two databases by default: `RocksDB` and `ReDB`. To integrate with other embedded databases, you can add the implementation in [EDMA storage layer](https://github.com/nomadiz/edma/tree/master/db/src/storage/kvs)
125+
126+
### Interactive terminal UI
127+
128+
<p align="center">
129+
<img width="80%" style="
130+
box-shadow: 0px 4px 59px 22px rgba(0, 0, 0, 0.56);
131+
border-radius: 10px;" src="https://user-images.githubusercontent.com/56880684/206836166-0699e5cd-e954-4499-9a7e-7a4aeb43eabc.png"/>
132+
</p>
133+
134+
EDMA is built using Rust library `tui-rs` which makes it to be an app that can be run directly on your terminal. No startup time needed and it's extremely light weight. Run every where, every time, all at once
135+
136+
### Template management for byte deserializer
137+
138+
<p align="center">
139+
<img width="80%" style="
140+
box-shadow: 0px 4px 59px 22px rgba(0, 0, 0, 0.56);
141+
border-radius: 10px;" src="https://user-images.githubusercontent.com/56880684/206836189-9de85d33-9a07-4e27-a182-d6cd0db83569.png"/>
142+
</p>
143+
144+
Data in embedded database is different from data presented in relational databases. While relational databases label data with specific type and attributes when it is created, embedded database can't do that. The only data type that embedded database displays is byte array. For example, `[0 0 0 1 50 32 20]`. It is not human readable.
145+
146+
Using EDMA, byte data can be converted into human readable data using EDMA byte template system.
147+
148+
Instruction on how EDMA byte deserializer works: [What is EDMA templates?](https://github.com/nomadiz/edma#templates)
149+
150+
### Command editor
151+
152+
Command editor is one core feature of EDMA, it allows you to manage byte data using advanced commands. The image below shows how a database column family can iterated using command editor
153+
154+
<p align="center">
155+
<img width="80%" style="
156+
box-shadow: 0px 4px 59px 22px rgba(0, 0, 0, 0.56);
157+
border-radius: 10px;" src="https://user-images.githubusercontent.com/56880684/206836218-8f115413-4b8d-4c88-a192-06e4eca3a697.png"/>
158+
</p>
159+
80160
## Keymap
81161

82162
| Key | Description |
@@ -91,10 +171,15 @@ OPTIONS:
91171
| <kbd>q</kbd> | Quit |
92172

93173
## EDMA Command
174+
94175
EDMA supports inline command to interact with embedded databases. The list of supported commands are
176+
95177
### `COLUMN` or `TABLE`: Iterate with defined column famility or table
178+
96179
#### Arguments
97-
- `String`: Column family name
180+
181+
- `String`: Column family name
182+
98183
## Configuration
99184

100185
### Databases

0 commit comments

Comments
 (0)