Модель данных Cassandra для хранения 1.000.000 фотографий - PullRequest
1 голос
/ 03 апреля 2012

Это вопрос к опытным пользователям Cassandra.Я хотел бы хранить фотографии в Кассандре.Структура данных очень проста:

UUID : photo_id;
String: filename;
String authorname;

Как хранить эти данные в Кассандре?Использовать photoId в качестве ключа CF или хранить все фотографии в виде столбцов, где photoid - это имя столбца?Мне нужна быстрая итерация и не нужен быстрый доступ к именам авторов.

С уважением

Том

1 Ответ

1 голос
/ 05 апреля 2012

Если вы планируете всегда искать фотографии по photo_id, вы должны рассматривать его как хранилище значений ключа с photo_id в качестве ключа и изображение в качестве значения столбца. Метаданные (имя файла, имя автора) могут храниться в дополнительных столбцах в той же строке, если они обычно нужны одновременно с изображением.

Если ваши изображения очень большие, рассмотрите возможность их разбиения на части по 1–10 МБ, по одному столбцу на фрагмент, чтобы вам не приходилось извлекать их все сразу.

Если вам также необходимо время от времени искать по имени автора, используйте второй CF в качестве индекса, где ключ строки - это имя автора, а столбцы - идентификаторы photo_id. Затем вы можете получить фактические изображения из первого CF по photo_id.

Непонятно, что вы подразумеваете под "быстрой итерацией", но если вы планируете сканировать весь набор данных изображения на 1 м, вы можете сделать это довольно легко с первым описанным CF с помощью get_range_slices .

...