как реализовать откат в Кассандре или я должен реализовать откат в Кассандре - PullRequest
0 голосов
/ 12 апреля 2020

Я знаю, что cassandra не предлагает функцию отката, и я также прочитал, что для каждого типа запроса должна быть создана отдельная таблица. Например, я создаю приложение, которое позволяет пользователям загружать recipes.

Я могу подумать о следующих операциях, которые понадобятся моему приложению: 1) все recipes должны храниться со своими recipe id. Поэтому мне нужна таблица с recipe id как partition key и recipe подробностями для остальных столбцов. 2) recipe будет принадлежать cuisine, так что user может искать recipe на основе cuisine. Поэтому мне нужна таблица с типом cuisine в качестве partition key и recipe id в качестве оставшихся данных. 3) user должен видеть созданные им recipes (своего рода портфель). Поэтому мне нужна таблица с user id как partition key как recipe id как оставшиеся данные

В моем приложении scala я создал следующие четыре функции, которые вставляют данные

val res = for {recipeSavedInRecipeDB <- saveRecipe(recipe)
                   recipeSavedInCuisineDB <- saveRecipeInCusineDB(recipe)
                   userPortfolioUpdated <- saveRecipeInUserPortofolio(recipe)
yield {
...
}

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

Каков рекомендуемый способ реализации rollback, например, если один из db операция не удалась? Стоит ли даже пытаться реализовать rollback, так как я подозреваю, что это усложнит логи приложения c. Как db сбои операций обрабатываются в cassandra приложением

...