SpacetimeDB 2.0: технический обзор сомнительных бенчмарков и глобальной блокировки

SpacetimeDB: A Short Technical Review

SpacetimeDB 2.0: технический обзор сомнительных бенчмарков и глобальной блокировки

SpacetimeDB запустила версию 2.0 своей базы данных, где код приложения выполняется внутри самой БД, что является необычным подходом. Однако опубликованные бенчмарки, по мнению автора, нечестны: они сравнивают продукт с базами данных, работающими в других условиях, и содержат технические ошибки. В основе хранения лежит in-memory хэш-таблица с единой глобальной блокировкой чтения-записи, что упрощает доказательство линейзуемости, но ограничивает параллелизм. Долговечность обеспечивается асинхронным WAL, сбрасываемым на диск каждые 50 мс, что напоминает ранний MongoDB.

Если ваш код приложения выполняется внутри базы данных, а у конкурентов есть отдельное приложение, которое должно выполнять отдельные сетевые запросы для каждого запроса, то да, вы должны опережать их в бенчмарках, измеряющих QPS.
  1. LarsDu88

    Помню, как друг показывал мне кое-что об этом, когда они ещё пытались развивать направление MMORPG, и я удивлён, что эта компания до сих пор жива, учитывая объём ненужного переусложнения, вложенного в эти усилия.

    Модель, при которой логика, подобная ECS, выносится в код, а весь этот код помещается в хранимые процедуры, решает горстку проблем с транзакциями в БД, с которыми у крупных MMORPG не было особых проблем 20 лет назад, когда MMORPG были на пике популярности, а компьютеры были в 100-1000 раз медленнее сегодняшних. Множество инженерных усилий уходит на решение и устранение этих сетевых запросов к БД, которые не были проблемой даже 20 лет назад, и тем более не являются проблемой сегодня.

    С другой стороны, реально сложные части создания многопользовательской игры, такие как откат, физика, коллизии и всё такое, — этому это на самом деле никак не помогает. Если что, это делает всё это ещё сложнее. Предполагаю, что разработчикам этой игры, вероятно, пришлось придумать довольно интересные хаки, которым, скорее всего, не помогала их БД, чтобы заставить хоть что-то, напоминающее физику, работать.

    Вдобавок ко всему этому — известные анти-паттерны использования хранимых процедур в базах данных, которые SpacetimeDB вообще не решает. Вы не можете нормально запускать свои тесты только на клиенте, потому что логика приложения разделена между клиентом и сервером БД, что приводит к спагетти-коду и плохим циклам итераций для гейм-дизайна. Сама база данных также не масштабируется горизонтально за пределы […]

  2. nemothekid

    Видео запуска SpacetimeDB появилось в моей ленте YouTube — и я был удивлён, что видео вообще не рассказывало о том, как это реализовано. Я предположил, что это проприетарная магия, но потом был удивлён, обнаружив, что это open source. Это сбило меня с толку ещё больше: чтобы получить такую семантику, о которой они говорили, я предполагал, что это довольно ново, и если это open source, они должны были бы это подчёркивать.

    Немного расстроен, что по сути это Rust-версия React Flux 2015 года вокруг мьютекса.

  3. Escapado

    Ценю статью с технической точки зрения. Есть ли здесь кто-то, кто использовал это в продакшене, несмотря на критику, и может поделиться взглядом на то, где это на самом деле даёт сбой или в каких ситуациях производительность резко падает? То, что они построили MMO на этом, позволяет предположить, что технические ограничения этого паттерна могут(!) иметь значение только для очень специфических нагрузок или для плохо реализованных редьюсеров — и моё внутреннее чутьё подсказывает, что можно также взять postgres или sqlite и написать очень неэффективные запросы, которые быстро завалят вашу систему. Просто интересно, как это показало себя в реальном мире.

  4. Devont

    Кто-нибудь уже сравнивал его с Volt Active Data?

    Они кажутся сопоставимыми по задумке и дальше продвинутыми в разработке.

    С тех пор как я узнал о SpacetimeDB, задумка казалась полезной, но я не очень доверяю тому, насколько это ново, и всей этой странной маркетинговой шумихе вокруг.

  5. cloutiertyler

    Я разработчик SpacetimeDB, и в этом посте много неточностей. Я попросил Висента исправить их, и он согласился.

    Пожалуйста, прочтите наш ответ на эту и другую критику здесь: https://spacetimedb.com/blog/benchmarking

Ещё за этот день

2026-08-21