Я знаю, что 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
приложением