Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/abbychau/usize-kv
The fastest, 64-bit data-chunk only, one-to-many key-value storage.
https://github.com/abbychau/usize-kv
Last synced: 18 days ago
JSON representation
The fastest, 64-bit data-chunk only, one-to-many key-value storage.
- Host: GitHub
- URL: https://github.com/abbychau/usize-kv
- Owner: abbychau
- Created: 2019-10-14T04:48:42.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-20T22:14:12.000Z (almost 2 years ago)
- Last Synced: 2024-10-11T12:51:06.171Z (about 1 month ago)
- Language: Rust
- Homepage:
- Size: 72.3 KB
- Stars: 4
- Watchers: 4
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# usize-kv
The fastest, 64-bit data-chunk only, one-to-many key-value storage.## use-case
It is specialized for one-to-many relation for NOSQL / key-less structure of data-storage.## features
1. Compact and hashmap-level performance.
2. Theoriotically most compact data-store.
```
Offset: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000: 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 02 ................
00000010: 00 00 00 00 00 01 86 A0 00 00 00 00 00 03 0D 40 ...............@
00000020: 00 00 00 00 00 01 86 A0 00 00 00 00 00 03 0D 40 ...............@
00000030: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
00000040: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
00000050: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
00000060: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
00000070: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
00000080: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
00000090: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
000000a0: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
000000b0: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
000000c0: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
000000d0: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
000000e0: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
000000f0: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
00000100: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
00000110: FF FF FF FF FF FF FF FF 00 00 00 00 00 03 0D 40 ...............@
00000120: 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 ................
```
3. Read Lock-less and Read-Write isolation. That writing will never produce locks to harm reading performance.
![Read throughput](https://cdn0.zkiz.com/file/realblog/user_files/733/603f36a395f45image-1614755490809.png)
4. Total binary transaction from internal to TCP communication.## usage
### start
`cargo run`### API
- A client connects to a usize-kv server by creating a TCP connection to the port 9123.
- Servers receive 64*3=192-bit commands.
- The first 64 bits are reserved for command.
- The second 64 bits are reserved for key.
- The third 64 bits are reserved for value.
- Read: `00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00` is to read the value of key `INT_MAX`
- Append: `00 00 00 00 00 00 00 01 FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 02` is to append the value of key `INT_MAX` as value `2`
- Update(remove before write): `00 00 00 00 00 00 00 02 `
- Remove: `... 03 ...`
- Empty the Database and store files: `... 04 ...`
- Dump The database as a readable format: `... 05 ...`
- Manually Rebuild the store file: `... 09 ...`## warning
This project is under development. It may not be even usable.
Issues:
- Broken TCP test and server
- Getting slower when map is getting large