У меня есть веб-служба, которая поддерживает состояние «запроса». Возможными состояниями являются «Active» и «InActive». Я сохраняю информацию запроса в БД Cassandra. У меня две таблицы - одна для активных запросов, другая - для запросов InActive. Оба они имеют одну и ту же схему.Получение записи в базу данных при выполнении операции удаления в Cassandra
Моя схема выглядит следующим образом:
ActiveRequests{
UserId text,
RequestId int,
RequestData text
PRIMARY KEY(UserId, RequestId)
}
Мне нужно реализовать API, который будет двигаться запрос из активного состояния в неактивное состояние. Я планирую сделать это, удалив запись из таблицы Active, а затем добавив удаленную запись в таблицу InActive.
В Кассандре кажется, что операция DELETE
фактически не возвращает данные, которые были удалены. Итак, я должен сделать SELECT
в записи запроса (чтобы я мог получить все данные запроса для добавления в таблицу InActive), а затем выполнить операцию DELETE
. Есть лучший способ сделать это?
EDIT
Вы можете спросить, почему я поддерживаю активные и неактивные запросы в виде отдельных таблиц. Я мог бы объединить их в одну таблицу и столбец IsActive
. Мое рассуждение о поддержании отдельных таблиц выглядит следующим образом:
Я хочу, чтобы мои запросы к активному столу были очень быстрыми. Если я хочу запросить все активные запросы в таблице, в которой есть как запросы Active, так и InActive, которые не будут оптимальными. РазделKey является userId, и я ожидаю, что таблица InActive имеет несколько 1000 запросов для данного UserId. Но, Active должен иметь только 10 или более запросов на UserId.
Зачем беспокоиться о наличии двух таблиц? Если вы используете отдельную таблицу, это становится проблемой переворачивания флага с простым на CQL. Но интересный вопрос: –
Sreekar
Я хочу, чтобы мои запросы к Active Table были очень Если я хочу запросить все активные запросы в таблице, в которой есть как запросы Active, так и InActive, которые не будут оптимальными.РазделKey является userId, и я ожидаю, что таблица InActive имеет несколько 1000 запросов для данного UserId. Но, Active должен иметь только 10 или более запросов на UserId. – AndroidDev93