Хранение примитивных типов против типов объектов в Кассандре - PullRequest
1 голос
/ 01 марта 2012

Каковы преимущества и недостатки хранения полностью сериализованных объектов в Cassandra по сравнению с хранением только более примитивных типов в объекте в виде столбцов?

Мне кажется, что вы теряете гибкость, но получаете простоту, если вы 'сохраняя весь объект в одном столбце.Разве не было бы невозможно использовать собственный вторичный индекс Cassandra для столбца, если был сохранен полный объект, и вы хотите индексировать один из его членов?(хотя я предполагаю, что здесь вы создадите свой собственный индекс с дополнительным семейством столбцов, используя это значение элемента в качестве ключа строки)

Спасибо за любую информацию, которую вы можете предоставить.Я все еще продолжаю думать о настройке схемы в таком формате.

1 Ответ

2 голосов
/ 01 марта 2012

Как преимущества, так и недостатки полной сериализации объектов кажутся довольно очевидными:

  • Более компактное представление как на диске, так и при передаче данных
  • Возможность использовать инструменты, которые поддерживают эволюцию схемы, напримеркак Thrift или ProtoBuf

И недостатки:

  • Здесь нельзя использовать собственные индексы Cassandra (собственный индекс Cassandra разделен вместе с данными, поэтому он не может бытьмоделируется с другим семейством столбцов)
  • Невозможно использовать общие инструменты, такие как CLI, для запроса отдельных полей объекта
  • Изменение отдельного поля объекта требует загрузки и сохранения полной записи
  • Изменение схемы требует загрузки и обработки полного набора данных (например, невозможно удалить столбец).

Так, например, рекомендуется использовать полную сериализацию объектов при хранении событий просмотра страницы -Компактность экономит много дискового пространства, и эти события никогда не изменяются после записи.Даже если схема изменится (т. Е. Будет добавлено новое поле), нет необходимости трогать старые данные, просто запишите новые события в новом формате и используйте ProtoBuf для правильного чтения как старых, так и новых записей.

С другой стороныплохая идея использовать его при хранении таких объектов, как «изображение с заголовками и тегами» - что-то с большими двоичными данными и небольшими изменяемыми полями.

...