![image](https://private-user-images.githubusercontent.com/24975318/240971758-44725331-7b8e-4b6f-9c0a-28b735b3f4b9.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjExODY2ODcsIm5iZiI6MTcyMTE4NjM4NywicGF0aCI6Ii8yNDk3NTMxOC8yNDA5NzE3NTgtNDQ3MjUzMzEtN2I4ZS00YjZmLTljMGEtMjhiNzM1YjNmNGI5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzE3VDAzMTk0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWU1MDA5YmI3MDUxZTY1ZTA4ZDJjYjIwZjUzYTAyNzZjZDQ2NGVmZDhhOTY4YTcwZGQ5OTI5ZTc3ZWNlYmY3OTkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.S9zUeqYtDXqwqQ7zRkbKHoydgMw46v-G_lFzwT01NMs)
![Screen Shot 2023-05-25 at 8 35 35 PM](https://private-user-images.githubusercontent.com/24975318/240915752-29bb7042-5511-4fb4-a607-48932cb318ca.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjExODY2ODcsIm5iZiI6MTcyMTE4NjM4NywicGF0aCI6Ii8yNDk3NTMxOC8yNDA5MTU3NTItMjliYjcwNDItNTUxMS00ZmI0LWE2MDctNDg5MzJjYjMxOGNhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzE3VDAzMTk0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc2YzJmZDJlNDYzYWU2NGI3ZTgwOGUyZTY2MTc5OGI4YzEzNTIwZDYxNjY1MmQ2YmMwNDE2MDYyY2JiNGZkM2EmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.fCovfAQ5eKAyxAu_mpBUgYA4vRBVWBPPGkcr4YDdTnw)
clonetone, which is made with Golang, offers a user-friendly and easy-to-configure key-value store system with the following features:
- It incorporates an append log-based persistence system to ensure fast write operations.
- It automatically prunes data files to minimize disk usage.
- It is easily configurable, allowing users to adjust the size of each data file and the frequency of pruning.
- It supports several data persistence formats, including CSV, JSON(WIP), and Protobuf(WIP).
Compare with append to a csv file everytime when do set operation:
![image](https://private-user-images.githubusercontent.com/24975318/240960423-545335b5-c359-4479-9278-4d8bc0925dc4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjExODY2ODcsIm5iZiI6MTcyMTE4NjM4NywicGF0aCI6Ii8yNDk3NTMxOC8yNDA5NjA0MjMtNTQ1MzM1YjUtYzM1OS00NDc5LTkyNzgtNGQ4YmMwOTI1ZGM0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MTclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzE3VDAzMTk0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTEwNjdjM2U0Njk5ZDlkNmMxYzhlZTY1MWNlM2QyMTA4NjE4NTIzYzAyZWVjODRhNTc2NzNiNzAwOTRhNGM5YjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.wGJIyThWHIvlizOSRQErJs2E5GxDdBOM3l592KSwuww)
Read will be the same because both are from memory (use map to do index)
go get github.com/kadai0308/cleantone
package main
import (
"github.com/kadai0308/cleantone"
"log"
)
func main() {
dataPath := "FOLDER_PATH_YOU_WANT"
eachDataFileSize := 10 * cleantone.FileSize.MB
dataFileFormat := cleantone.DataFormat.CSV
config := cleantone.DBConfig{
RotateThreshold: eachDataFileSize,
DataPath: dataPath,
DataFormat: dataFileFormat,
}
DB := cleantone.NewDB(config)
// In order to persistence the data in memory,
// remember to call DB.Close() before func return
defer DB.Close()
_, err := DB.Get("haha")
if err != nil {
log.Fatal(err)
}
}
cleantone is under the Apache 2.0 license. See the LICENSE file for details.