Ampbase полностью отказалась от базы данных в пользу объектного хранилища Tigris
Object storage is all you need

Основатель Ampbase JP рассказывает, как его команда заменила традиционную базу данных на объектное хранилище Tigris, построенное поверх FoundationDB. Вместо реляционной СУБД они реализовали поверх объектного хранилища четыре ключевых примитива: уникальные ограничения, транзакции, индексы и таблицы истории. Автор подробно разбирает, как условные записи, строгая согласованность после записи и сортировка ключей ULID позволяют обойтись без Postgres, и честно говорит о цене такого решения.
Всё, что вам нужно от базы данных (и от объектного хранилища), — это: строгая согласованность после записи, условные записи, ограничение уникальности, транзакции, индексы и таблицы истории.
- dullcrisp
В этой статье не приводится особых причин, зачем это делать.
По мне, это немного напоминает историю о том, как мы строили офис без столов: оказывается, если поставить два стула друг на друга, можно поставить ноутбук на верхний, а внизу у тебя ещё будет полка для вещей.
- shrubble
«Главный недостаток в том, что объектное хранилище не поддерживает транзакции, поэтому нельзя гарантировать, что и добавление события, и обновление состояния мира произойдут как одна атомарная операция. Мы сначала записываем состояние, а потом событие, так что если процесс умрёт между этими действиями, состояние останется корректным, а в истории будет пропущена запись. Ничто этого не обнаружит, потому что для обнаружения нужно, чтобы что-то читало лог и сравнивало его с состоянием, а весь смысл в том, что этого никто не делает. Так что каждая запись в логе действительно произошла. Чего вы не получаете — гарантии, что всё, что произошло, в нём есть».
То есть они построили штуку, которая притворяется, но на самом деле не умеет нормально обрабатывать транзакции?
Пожалуй, стоит радоваться, что они не финтех-стартап...
- ryanbrunner
Такие статьи напоминают мне ту статью про Innovation Tokens.
Твоё время и внимание как разработчика бесценны. Я абсолютно уверен, что можно самому реализовать ограничения уникальности, транзакции, индексы и историю, но действительно ли это самое ценное применение твоего времени? Скорее всего, тебе не нужно уникальное решение, так что ты буквально просто изобретаешь заново то, что у кого-то уже было, и получаешь немного выгоды.
Не лучше ли потратить время на решение проблем, которые должно решать то, что ты создаёшь?
- arpinum
Это раздражает при чтении. Tigres построен на FoundationDB, но не предоставляет все операции FoundationDB, такие как транзакции, range reads и get mapped range. Они идут на всевозможные усложнения, чтобы справиться с этими проблемами, включая базу данных для кэширования (и они не учитывают проблемы thundering herd).
А что если просто запустить FoundationDB?
- randito
> используя движок базы данных, который мы построили поверх FoundationDB: распределённое key-value хранилище
было бы интересно увидеть их опыт использования FoundationDB. кажется, это технология, которая была бы потрясающей, если бы только было больше информации и практических примеров того, как её использовать, задействовать и управлять ею. клиент сложный и требует экспертизы для правильного использования. хотелось бы, чтобы было больше информации обо всём этом.