@ Ответ Брайана Мэнселла находится на правильном пути - вы действительно не хотите хранить большие двоичные значения (более 50 МБ) как один объект в Riak (кластер становится необычайно медленным через некоторое время).
Вместо этого у вас есть 2 варианта:
1) Если двоичный объект достаточно мал, сохраните его напрямую.Если он превышает определенный порог (50 МБ - приемлемое произвольное значение для начала, но на самом деле, запустите несколько тестов производительности, чтобы увидеть, каков средний размер объекта для вашего кластера, после чего он начинает сканировать) - разбейтефайл в несколько кусков, и хранить куски отдельно.(На самом деле, большинство людей, которых я видел, идут по этому пути, используют куски размером 1 МБ).Это, конечно, означает, что вы должны отслеживать «манифест» - какие куски были сохранены, где и в каком порядке.И затем, чтобы извлечь файл, вам сначала нужно получить объект, отслеживающий фрагменты, затем извлечь отдельные фрагменты файла и собрать их обратно в исходный файл.Взгляните на проект типа https://github.com/podados/python-riakfs, чтобы увидеть, как они это сделали.
2) В качестве альтернативы вы можете просто использовать Riak CS (Riak Cloud Storage), чтобы сделатьвсе вышеперечисленное, но код написан для вас.Именно так работает RiakCS - он разбивает входящий файл на куски, сохраняет и отслеживает их по отдельности в простом Riak и собирает их, когда приходит время вернуть его.И для вашего удобства предоставляет API Amazon S3 для хранения файлов.Я очень рекомендую этот маршрут (чтобы не изобретать велосипед - разбивать и отслеживать файлы достаточно сложно).Да, CS - платный продукт, но, если вам интересно, ознакомьтесь с бесплатной Developer Trial .