GitDB,一个基于 Git 的分布式可嵌入数据库
基于 git 的分布式嵌入式数据库,GitDB 只是一个库,需要调用 git 来操作远程数据库。类似下面的操作:
Git pull
拉远程数据Git push
提交本地数据到远程
但这是由程序去做,程序 API 也比较简单
db, err := gitdb.Open(cfg)
db.Insert(account)
gitdb.Id(account)
db.Get("Accounts/202003/0123456789", &account)
db.Fetch("Accounts")
db.Fetch("Accounts", "b0", "b1")
db.Delete("Accounts/202003/0123456789")
searchParam := &db.SearchParam{Index: "AccountType", Value: "Savings"}
records, err := dbconn.Search("Accounts", []*db.SearchParam{searchParam}, gitdb.SearchEquals)
tx := db.StartTransaction("AccountUpgrade")
tx.AddOperation(accountUpgradeFuncOne)
tx.AddOperation(accountUpgradeFuncTwo)
tx.AddOperation(accountUpgradeFuncThree)
terr := tx.Commit()
使用
package main
import (
"fmt"
"log"
"github.com/gogitdb/gitdb/v2"
)
func main(){
cfg := gitdb.NewConfig("/tmp/data")
db, err := gitdb.Open(cfg)
if err != nil {
log.Fatal(err)
}
defer db.Close()
records, err := db.Fetch("Accounts")
if err != nil {
log.Print(err)
return
}
accounts := []*BankAccount{}
for _, r := range records {
b := &BankAccount{}
r.Hydrate(b)
accounts = append(accounts, b)
log.Print(fmt.Sprintf("%s-%s", gitdb.ID(b), b.AccountNo))
}
}
0
See Also
- 从数据库删贴和删除分类有什么副作用吗?
- 虚拟主机下数据库出错
- Vald:用Go语言编写高度可扩展、分布式的近似最近邻密集向量搜索引擎
- 360开源的完全支持Redis协议的数据库——pika
- gkvdb:新的高性能KV 嵌入式数据库
Nearby
- 上一篇 › 使用 CSS 的类似着色器实现的全息效果
- 下一篇 › 编程音乐,边写程序边听