Nano Hash - криптовалюты, майнинг, программирование

CockroachDB как Eventstore — хорошая идея?

Я ищу EventStore для системы EvenSourcing и CQRS, которую я планирую разработать в ближайшем будущем. Я начал знакомиться с CockroachDB и впечатлен масштабируемостью, имея при этом все те гарантии, которые хороши для Event Store и запросов к нему.

Я думаю здесь об одном (?) Столе для мероприятий. Что-то похожее на это:

Столбцы в таблице

  • Совокупный идентификатор [Guid]
  • Данные [большой двоичный объект]
  • Порядковый номер [длинный]
  • Версия [Int]

Итак, у меня есть два вопроса:

  1. Является ли CockroachDB хорошим выбором в качестве EventStore?
  2. Будет ли это соответствовать моей производительности и масштабным расходам в этом сценарии. Например, будет ли он масштабироваться, как ожидалось, при увеличении данных с течением времени и при большем чтении трафика/операций записи?

  • Взгляните на мой ответ: stackoverflow.com/questions/43408599/ 14.07.2017
  • Вы спрашиваете, будет ли это соответствовать вашей производительности и затратам на масштабирование, но вы не сказали, каковы они. 16.07.2017
  • @MichalBorowiecki - в основном БД тараканов заявляет об очень хороших атрибутах масштабирования с увеличением в среднем количества узлов. Итак, в основном я спрашиваю, подрывает ли одна большая таблица событий предположения CockroachDB или нет. 17.07.2017
  • Опять же, это очень абстрактно. Насколько велик большой, какую пропускную способность вы ожидаете? Нет смысла обсуждать производительность без конкретных цифр. 17.07.2017
  • Он должен быть абстрактным. Учтите, что я бы начал с одного экземпляра CockroachDB, и когда дела пойдут хорошо, у меня будет 3 или, может быть, 10 экземпляров за 2 года... Не знаю заранее. И я ожидаю, что производительность (задержка и пропускная способность) масштабируется линейно (это звучит как в документе Таракан, но они не точны в этом) с каждым новым узлом. 17.07.2017

Ответы:


1

Cockroachdb — хороший выбор в качестве магазина событий. Одна вещь, на которую следует обратить внимание, — это то, как вы выбираете свой первичный ключ. Например, если вы используете временную метку в качестве первичного ключа, вы увидите, что все записи попадают в один и тот же узел, поэтому лучше выбрать такой ключ, чтобы записи, сделанные близко по времени, распределялись равномерно по всем узлам. Выбор случайного числа в качестве идентификатора события и использование его в качестве ключа будет работать.

CockroachDB пока не поддерживает (скоро) уведомления об изменениях в базе данных, которые могут быть полезны при использовании ее в качестве хранилища событий.

14.07.2017
  • Большое спасибо за подсказку с PrimaryKey! И да, если уведомление не встроено, мне нужно сделать это самостоятельно. Но, может быть, они прибудут раньше, чем я продвинусь;) 17.07.2017

  • 2

    CockroachDB теперь поддерживает уведомления об изменениях в базе данных в виде каналов изменений Change Data Capture (CDC). Вот документация:

    https://www.cockreachlabs.com/docs/stable/stream-data-out-of-cockroachdb-using-changefeeds.html

    и пара соответствующих сообщений в блоге:

    На YouTube также есть записанная презентация/демонстрация каналов изменений CRDB:

    https://www.youtube.com/watch?v=UTaRWpNcOgk

    23.04.2021
  • Спасибо, интересный аддон. Похоже, можно использовать кластер тараканов и в EventStore. 09.05.2021
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..