Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Это всё неправда. Я постоянно их использую, и НЛО меня только один раз отправило на специальную страницу, где надо было проклинать где-то 20 или 30 чекбоксов с лейблами "Я больше не буду злоупотреблять смайликами", причём активировались они по очереди, с интервалом около 10 или 30 секунд после прощёлкивания предыдущего.
В общем, интересная штука, рекомендую попробовать!
var conn *grpc.ClientConn
var err error
var f = "db/1.db"
conn, err = grpc.Dial(":7777", grpc.WithInsecure())
if err != nil {
log.Fatalf("did not connect: %s", err)
}
defer conn.Close()
c := api.NewOkdbClient(conn)
// Set
_, err = c.Set(context.Background(), &api.CmdSet{File: f, Key: []byte("1"), Val: []byte("1")})
// Get
b, err := c.Get(context.Background(), &api.CmdGet{File: f, Key: []byte("1")})
}
cp db /tmp; dosmth /tmp/db ; cp /tmp/db ./ надёжности не добавляли.Как показывает практика — чем более сложна архитектура базы данных, тем с бОльшим количеством проблем предстоит столкнуться с ростом базы. Так как ничего на бывает бесплатно.Как показывает практика, чем проще архитектура, чем с худшей производительностью предстоит столкнуться с ростом базы… Например, у вас на каждый вызов Keys делается вызов sort.SliceIsSorted, у которого, на минуточку, линейная сложность. Ладно, пофиксите… А после каждого Sot лениво вызываете sort.SortSlice… Даже в лучшем случае это тоже как минимум линейно… Зато архитектура простая!
сортировку вставкой, что должно привести к очень быстрой вставке новых ключей в отсортированный массивДа хоть сортировку пупыркой =)
Если неконсистентность в том, что потратится единица счетчика, то даНеконсистентность в том, что в slowpoke нету транзакций. Например, UserName может записаться, а вот Email уже нет.
Но вообще я не рекомендую смотреть на примеры серии realworld.io, там очень до фига тупо за рамками здравого смысла.Так а
Все верно прям на 100%. Полный хардкор. Гораздо проще написать чтоть типа gorm, unique и не париться)Гораздо проще взять, почитать что такое и зачем нужны транзакции… И попробовать их реализовать поверх slowpoke :) И уже потом говорить «я успешно заменил реляционную БД на свою key-value».
slowpoke — не самая быстрая база данных