Это для всех ниндзя Кассандры здесь. Заранее спасибо за вашу помощь!
Я пытаюсь сделать что-то тривиальное, дайте мне знать, возможно ли это вообще
Цель
Для каждой сделки, которую совершает пользователь, я хотел бы обновить другую таблицу/cf positions, чтобы отразить новую сделку, и сохранить эти действия атомарными и синхронизированными.
i.e.
каждый раз, когда выполняется запрос INSERT
INSERT INTO mykeyspace.trades (stockID, quantity) VALUES ("AAPL", 100)
Я хочу, чтобы соответствующая таблица позиций увеличилась на количество += 100.
(по сути, запрашивая текущее значение позиции AAPL и добавляя к нему 100)
Что я исследовал до сих пор
Если бы это была традиционная СУБД, это был бы стандартный вариант использования триггеров.
Поэтому я был рад видеть, что Cassandra предоставляет интерфейс ITrigger.
Однако вся документация о том, как реализовать ITrigger, похоже, использует более старый API, где контракт интерфейса
Collection<Mutation> augment(ByteBuffer key, ColumnFamily update);
Однако в 3.11.0 я вижу, что контракт
Collection<Mutation> augment(Partition update);
На официальном веб-сайте DataStax я вижу пример реализации AuditTrigger ЗДЕСЬ
Однако обратите внимание на строку
TableMetadata metadata = Schema.instance.getTableMetadata(auditKeyspace, auditTable);
TableMetadata не является классом по крайней мере на cassandra-all-3.11.0
Любые указатели или документы будут очень признательны здесь! Заранее спасибо!