TGViewer
4gophers 4gophers @gophernews · 3.44K subscribers
Post #1981 1.2K

Forwarded from Код и Капуста

KV на S3

#golang

Статья разбирает, как построить key-value базу данных, у которой основным слоем хранения является объектное хранилище вроде S3, на примере движка IsleDB на Go, и почему наивная замена "файлов на диске" на "объекты в бакете" не работает. СУБД неявно полагается на атомарное переименование, дешевые случайные чтения и понятный ответ на вопрос "записалось ли?".

Ключевая идея в том, что LSM-дерево уже идеально ложится на объектную модель, а видимость состояния задается не перечислением бакета, а маленьким мутабельным объектом заголовком, который обновляется условной записью (используется CAS), дополняется токеном для защиты от "оживших" старых писателей и ограниченным маркером коммита для разрешения ситуации "запись прошла, но ответ потерялся".

Объектное хранилище вот совсем не убирает сложные проблемы СУБД. Наборот, концентрирует их в небольшом наборе протоколов публикации и жизненного цикла, которые и становятся настоящим "транзакционным движком"

https://kodikapusta.ru/news/1175-kv-na-s3

Поддержать проект на boosty и читать в MAX
  • 👍 1
More from @gophernews
  1. Sep 24, 2026Rune #golang Команда Unstable Build заопенсорсила свою нативную IDE Rune, написанную на Go…
  2. Sep 8, 2026Прокси для базы данных #golang Автор пишет простой такой прокси на Go в учебных целях вдох…
  3. Sep 7, 2026У нас отмена! #golang Статья разбирает, как пакет singleflight в Go предотвращает лавину з…
  4. Sep 3, 2026Конкурентный сервер на Go #golang #learn Это восьмая часть серии о конкурентных сетевых се…
  5. Sep 2, 2026Интересные баги #golang Команда sigma star(хз кто это) нашла и исправила давнюю ошибку в р…
  6. Sep 1, 2026GopherCon UK 2026 #golang #video Видосы с GopherCon UK 2026 подоспели. Много всего интерес…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →