Альтернатива 1: зачем идти на Кассандру, если вы хотите хранить сериализованный объект?MongoDB или аналогичный продукт лучше справится с этой задачей, если я правильно ее решу (на самом деле я никогда не пробовал основывать документы на NoSQL, поэтому исправьте меня, если я ошибаюсь в этом).Во всяком случае, я попробовал эту альтернативу один раз в MySQL 6 лет назад, и сегодня все еще трудно поддерживать ее.
Альтернатива 2: Извините, мне еще не приходилось играть с суперболу.Использовал бы это, только если бы мне приходилось часто показывать много информации о многих пользователях (т.е. гораздо больше, чем просто их имя пользователя и несколько квалификаторов) и их соответствующие события в одном запросе.Также может сделать запрос на основе заданного промежутка времени немного сложным, если есть условия и для самого пользователя, поскольку в строке пользователя, скорее всего, есть столбцы событий, которые соответствуют размеру других столбцов, которые этого не делают.
Альтернатива 3: в большинстве случаев, безусловно, будет моим выбором.Вы вряд ли будете писать события и создавать пользователя в одной транзакции, поэтому не беспокойтесь о последовательности.Используйте само имя пользователя в качестве стандартного столбца событий (не забудьте его проиндексировать), чтобы ваши звонки были довольно быстрыми.Подробнее об этом типе модели данных можно узнать по http://www.datastax.com/docs/0.8/ddl/index. Да, это чтение двух вызовов, но в любом случае это два разных семейства данных.
Что касается лучших практик, то это поле довольно новое, не уверен, что есть какие-либо широко одобренные.