Skip to content

Commit

Permalink
Reset for new HonuDB
Browse files Browse the repository at this point in the history
  • Loading branch information
bbengfort committed Oct 19, 2024
1 parent 1c44525 commit 7084810
Show file tree
Hide file tree
Showing 76 changed files with 550 additions and 11,686 deletions.
14 changes: 8 additions & 6 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: CD
name: Releases
on:
push:
tags:
Expand All @@ -15,19 +15,21 @@ jobs:
fetch-depth: 0

- name: Set up Go
uses: actions/setup-go@v4
uses: actions/setup-go@v5
with:
go-version: 1.21.x
go-version: 1.23.x

- name: Import GPG key
id: import_gpg
uses: crazy-max/ghaction-import-gpg@v3
uses: crazy-max/ghaction-import-gpg@v6
with:
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
git_user_signingkey: true
git_commit_gpgsign: true

- name: Create Release
uses: goreleaser/goreleaser-action@v5
uses: goreleaser/goreleaser-action@v6
with:
distribution: goreleaser
version: latest
Expand Down
37 changes: 18 additions & 19 deletions .github/workflows/build.yaml → .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
name: CI
name: Tests
on:
push:
branches:
- main
- develop
- "v*"
tags:
- "v*"
Expand All @@ -15,12 +14,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Set up Go
uses: actions/setup-go@v4
uses: actions/setup-go@v5
with:
go-version: 1.21.x
go-version: 1.23.x

- name: Install Staticcheck
run: go install honnef.co/go/tools/cmd/staticcheck@2023.1.3
run: go install honnef.co/go/tools/cmd/staticcheck@2024.1.1

- name: Checkout Code
uses: actions/checkout@v4
Expand All @@ -34,7 +33,7 @@ jobs:
strategy:
fail-fast: true
matrix:
go-version: [1.20.x, 1.21.x]
go-version: [1.22.x, 1.23.x]
env:
GOPATH: ${{ github.workspace }}/go
GOBIN: ${{ github.workspace }}/go/bin
Expand All @@ -44,12 +43,12 @@ jobs:
working-directory: ${{ env.GOPATH }}/src/github.com/rotationalio/honu
steps:
- name: Set up Go
uses: actions/setup-go@v4
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}

- name: Cache Speedup
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ${{ env.GOPATH }}/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
Expand All @@ -62,16 +61,16 @@ jobs:
path: ${{ env.GOPATH }}/src/github.com/rotationalio/honu

- name: Install Protoc
uses: arduino/setup-protoc@v2
uses: arduino/setup-protoc@v3
with:
version: "23.x"
version: "28.x"
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Install Dependencies
run: |
go version
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.31
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.35
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.5
- name: Code Generation
run: go generate ./...
Expand All @@ -90,12 +89,12 @@ jobs:
working-directory: ${{ env.GOPATH }}/src/github.com/rotationalio/honu
steps:
- name: Set up Go
uses: actions/setup-go@v4
uses: actions/setup-go@v5
with:
go-version: 1.21.x
go-version: 1.23.x

- name: Cache Speedup
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ${{ env.GOPATH }}/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
Expand All @@ -108,16 +107,16 @@ jobs:
path: ${{ env.GOPATH }}/src/github.com/rotationalio/honu

- name: Install Protoc
uses: arduino/setup-protoc@v2
uses: arduino/setup-protoc@v3
with:
version: "23.x"
version: "28.x"
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Install Dependencies
run: |
go version
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.31
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.35
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.5
- name: Code Generation
run: go generate ./...
Expand Down
18 changes: 9 additions & 9 deletions .goreleaser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ project_name: honu
dist: dist
builds:
# Define multiple builds as a yaml list, specify by a unique id
- id: "cmd-honu-build"
- id: "cmd-honudb-build"
dir: .
main: ./cmd/honu
binary: honu
main: ./cmd/honudb
binary: honudb
flags:
- -v
ldflags: -s -w -X github.com/rotationalio/honu.GitVersion={{.Commit}} -X github.com/rotationalio/honu.BuildDate={{.Date}}
Expand All @@ -31,7 +31,7 @@ archives:
- id: "honu-archive-tgz"
format: tar.gz
builds:
- "cmd-honu-build"
- "cmd-honudb-build"
name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
wrap_in_directory: true
files:
Expand Down Expand Up @@ -62,11 +62,11 @@ release:
footer: |
### About
Honu is distributed key-value store that is intended for large systems of replicas
that are distributed across the globe. Honu provides an eventually consistent
replication semantic that uses reinforcement learning to optimize replication to
lower both costs and the instances of stale reads and write forks. If you're
interested in this project, please see https://geodistributed.systems for more.
The Honu Database is an eventually consistent replicated document database that
is intended for large systems that are distributed globally. Honu uses reinforcement
learning with anti-entropy replication to enhance consistency and decrease costs.
Honu provides data governance with access controls, privacy, and provenance tracking
so that the use of your database complies with laws like GDPR.
# If set to true, will not auto-publish the release.
disable: false
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
BSD 3-Clause License

Copyright (c) 2021, Rotational Labs, Inc.
Copyright (c) 2024, Rotational Labs, Inc.
All rights reserved.

Redistribution and use in source and binary forms, with or without
Expand Down
23 changes: 4 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,10 @@
# Honu

[![Go Reference](https://pkg.go.dev/badge/github.com/rotationalio/honu.svg)](https://pkg.go.dev/github.com/rotationalio/honu)
[![Go Report Card](https://goreportcard.com/badge/github.com/rotationalio/honu)](https://goreportcard.com/report/github.com/rotationalio/honu)
![GitHub Actions CI](https://github.com/rotationalio/honu/actions/workflows/build.yaml/badge.svg?branch=main)
![GitHub Actions CI](https://github.com/rotationalio/honu/actions/workflows/tests.yaml/badge.svg?branch=main)

**HonuDB is a replicated key-value store intended for large systems that are distributed globally. Although HonuDB uses an eventually consistent gossip protocol for replication, it uses reinforcement learning with multi-armed bandits to optimize replication. Adaptive consistency reduces costs (ingress and egress data transfer) as well as improves consistency by lowering the likelihood of stale reads or forked writes.**
The Honu Database is an eventually consistent replicated document database that intended for large systems that are distributed globally. Honu uses smart anti-entropy replication to quickly replicate collections across multiple nodes.

## Benchmarks
Smart anti-entropy uses reinforcement learning with multi-armed bandits to optimize replication. Adaptive consistency reduces costs (ingress and egress data transfer) as well as improves consistency by lowering the likelihood of stale reads or forked writes.

Baseline comparison of honu database vs. pure leveldb performance to determine the overhead that honu adds:

```
BenchmarkHonuGet-8 466665 2405 ns/op
BenchmarkLevelDBGet-8 1243785 955.3 ns/op
BenchmarkHonuPut-8 21448 55125 ns/op
BenchmarkLevelDBPut-8 24276 52422 ns/op
BenchmarkHonuDelete-8 42298 25136 ns/op
BenchmarkLevelDBDelete-8 76857 16101 ns/op
BenchmarkHonuIter-8 63772 18349 ns/op
BenchmarkLevelDBIter-8 255319 4271 ns/op
BenchmarkHonuObject-8 480555 2362 ns/op
```

[![Baseline Benchmarks](docs/benchmark.png)](docs/benchmark.png)
The goal of the database is to provide scalable data retrieval both in terms of number of nodes (e.g. scale to 100s of nodes) and amount of data (hundreds of terabytes). In addition to scale, this database provides data access controls, privacy and provenance, and other security related features. In short, HonuDB is a distributed data governance database for machine learning and artificial intelligence workloads.
3 changes: 0 additions & 3 deletions api/generate.go

This file was deleted.

24 changes: 0 additions & 24 deletions api/generate.sh

This file was deleted.

Loading

0 comments on commit 7084810

Please sign in to comment.