Я тестирую Кассандру и пытаюсь выяснить, как управлять версиями камер. Я храню ценовые тики финансовых инструментов - с завихрением - поток сообщений, который я читаю, дельта-основан. Значение Я получу сообщение для некоторого ключа (скажем, Символ Акции и Дата). Первое сообщение дня имеет время сообщения, все теги (скажем, это цена предложения, цена запроса и многие другие части информации). В течение дня я получаю сообщения, в которых есть ТОЛЬКО те теги/поля, которые были изменены, и время сообщения. Поэтому, возможно, следующим сообщением будет «Символ запаса», «Дата», «Время сообщения» и «Спросить цену», затем изменилось другое сообщение для этого ключа с другими тегами. Ни одно из значений, которые не были изменены, повторяется в последующих сообщениях. Было бы неприемлемо хранить первое сообщение, а затем дополнительные строки только для измененных тегов. Это заставило бы клиента полностью восстановить состояние в любой момент времени.Редактирование столбцов/ячеек в Cassandra
Пользователи должны видеть, что полное состояние этого ключа в какой-то момент времени или последние N тиков (полное состояние всех тегов) или все тики за определенный промежуток времени. Вот пример того, что обмен сообщениями будет выглядеть следующим образом:
клавиша * Сообщение является StockSymbol и дата
4 (то есть каждое сообщение, которое имеет тот же StockSymbol и дата является обновлением клеща Допустим, это цена.) Получено сообщений:
StockSymbol = 1, AskPrice = 1,00, BidPrice = 1,05, Date = 2016-08-15, MessageTime = 1
StockSymbol = 1, AskPrice = 1,05, BidPrice = 1,10, Date = 2016- 08-15, MessageTime = 2
S tockSymbol = 1, BidPrice = 1,15, Date = 2016-08-15, MessageTime = 3
StockSymbol = 1, AskPrice = 1,10, Date = 2016-08-15, MessageTime = 4
Итак, есть 4 сообщения с одним и тем же ключом. Я хотел бы, чтобы db выглядел так (обратите внимание, что поля, которые не менялись, присутствуют на вставках:
Строка 1: StockSymbol = 1, AskPrice = 1.00, BidPrice = 1.05, Date = 2016-08-15 , MessageTime = 1
Строка 2: StockSymbol = 1, AskPrice = 1,05, BidPrice = 1.10, дата = 2016-08-15, MessageTime = 2
Строка 3: StockSymbol = 1, AskPrice = 1,05, BidPrice = 1,15, дата = 2016-08-15, MessageTime = 3
Ряд 4: StockSymbol = 1, AskPrice = 1.10, BidPrice = 1,15, дата = 2016-08-15, MessageTime = 4
... или у вас есть возможность просто добавить новую версию в столбцы, которые были изменены в одной строке. Это похоже на то, что делает HBase.
Существует миллиарды этих сообщений в день. Не все на одном ключе, поэтому не будет миллиардов версий любого столбца. Может быть, несколько тысяч.
Я вникаю в кучу вариантов моделирования, но я думал, что это хорошая идея для публикации в сообществе.
Надеюсь, это имеет смысл ...
спасибо.
И до сих пор единственным реальным способом, с которым я столкнулся, является чтение N сообщений в пакете, выбор существующих строк по ключу, обновление/наложение измененных значений и повторная вставка в пакетном режиме, копия. У самой последней копии будет флаг LATEST = 'Y' (возможно) – James