2012-03-01 3 views
2

Вот пример прецедента:Как реализовать фиксированное число столбцов (timeuuid) в cassandra (с CQL)?

Вам необходимо сохранить последние пользовательские действия N (допустим, 1000 в виде фиксированного размера) со всеми деталями в столбцах, основанных на timeuuid.

Обычно действия каждого пользователя уже находятся в семействе столбцов «UserAction», где идентификатор пользователя в виде строки строки и действия в столбцах timeuuid. У вас также может быть семейство столбцов AllActions, которое хранит все действия с одинаковым временем, как имя столбца и идентификатор пользователя, как значение столбца. Это в основном семейство столбцов отношений, но, к сожалению, без каких-либо подробностей действий пользователя. Полагаю, что запрос с этим семейством столбцов дорог, из-за случайного partioner. С другой стороны, если вы храните все детали в «AllActions» CF, то cassandra не может правильно обрабатывать эту большую строку в одной точке. Вот почему я хочу хранить последние N пользовательских действий со всеми подробностями в фиксированном количестве столбцов, основанных на timeuuid.

Может быть, вы можете иметь лучшее дизайнерское решение для этого случая использования ... Я хотел бы услышать, что ...

Если нет, вопрос в том, как реализовать фиксированное количество (timeuuid) столбцов в Кассандре (с CQL)?

После вставки мы могли удалять старые (переполненные) столбцы, если бы у нас была некоторая поддержка диапазона в DELETE cql. AFAIK нет никакой поддержки для этого.

Итак, любая идея? Спасибо заранее ...

ответ

2

IMHO, это то, что C * должно обрабатывать как уплотнение. Это не очень хорошая идея, чтобы справиться с этим на стороне клиента.

Возможно, нам нужны некоторые параметры конфигурации (хранения) для семейств столбцов, чтобы они соответствовали «самым последним данным».

+0

Это своего рода [КАССАНДРА-3929] (https://issues.apache.org/jira/browse/CASSANDRA-3929). –