Хранение бинарных BLOB-объектов в Cassandra

Я создаю простую службу HTTP, в которой хранятся произвольные двоичные объекты. Сервис поддерживается Cassandra. Это упрощенная версия Amazon S3. Система должна выдерживать большую нагрузку записи и должна быть высокодоступной на пути записи и чтения.

Сохраненные данные являются своего рода неизменяемыми. Его можно удалить, но нельзя обновить. Таким образом, несогласованность данных не является проблемой. Хранилище данных должно иметь возможность эффективно удалять старые данные.

Сервис использует библиотеку Netflix Astyanax, которая предоставляет рецепт для хранения (больших) бинарных объектов в Cassandra.

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

Одна таблица с TTL

Astyanax автоматически разбивает большие объекты на мелкие части и сохраняет их в одной таблице. Каждому большому двоичному объекту назначается TTL, который истечет через определенный период времени. Запуск уплотнения удаляет большие двоичные объекты по истечении срока жизни.

Эти решения работают и довольно просты в реализации. Я начал использовать SizeTieredCompactionStrategy, но думаю, что DateTieredCompactionStrategy может быть лучшим выбором при работе с данными TTL.

Меня больше всего беспокоит: сможет ли уплотнение Кассандры сохраниться? Есть ли у кого-нибудь опыт с подобным вариантом использования?

Разделение данных по времени

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

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

Насколько эффективна Кассандра в удалении стола?


person Zauberfinger    schedule 16.12.2014    source источник
comment
Вы нашли pithos.io во время поиска? Это хранилище объектов, совместимое с S3, использующее Cassandra, написанное на Clojure.   -  person joschi    schedule 17.12.2014
comment
Это выглядит довольно интересно. Я не уверен, насколько хороши данные с автоматическим истечением срока действия.   -  person Zauberfinger    schedule 17.12.2014


Ответы (1)


Правильный вариант для вашего сценария — DateTieredCompactionStrategy и Assign TTL для каждого большого двоичного объекта.

См.: http://www.datastax.com/dev/blog/datetieredcompactionstrategy

person madheswaran    schedule 17.12.2014