Кто-нибудь знает, как я могу хранить большие двоичные значения в Riak? - PullRequest
0 голосов
/ 06 февраля 2010

Кто-нибудь знает, как я могу хранить большие двоичные значения в Riak?

Ответы [ 4 ]

4 голосов
/ 06 августа 2010

Пока что они не рекомендуют хранить файлы размером более 50 МБ без их разделения. См .: FAQ - Riak Wiki

Если размер ваших файлов меньше 50 МБ, продолжайте, как если бы вы хранили недвоичные данные в Riak.

Еще одна причина, по которой можно выбрать Riak, - гибкость в моделировании ваших данных. Riak будет хранить любые данные, которые вы им сообщаете, независимо от содержимого - он не применяет таблицы, столбцы или ссылочную целостность. Это означает, что вы можете хранить двоичные файлы прямо рядом с более прозрачными для программистов форматами, такими как JSON или XML . Использование Riak в качестве своего рода «базы данных документов» (полуструктурированные, в основном не нормализованные данные) и «хранилище вложений» будет иметь разные потребности, чем схема типа ключ / значение, а именно необходимость эффективных онлайн-запросов, конфликт разрешение, увеличенная внутренняя семантика и надежные выражения отношений. Проектирование схемы в Riak - Введение

0 голосов
/ 22 октября 2012

@ Ответ Брайана Мэнселла находится на правильном пути - вы действительно не хотите хранить большие двоичные значения (более 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 .

0 голосов
/ 09 февраля 2010

Используйте либо интерфейс Erlang (http://hg.basho.com/riak/src/461421125af9/doc/basic-client.txt), либо «необработанный» интерфейс HTTP (http://hg.basho.com/riak/src/tip/doc/raw-http-howto.txt). Это должно "просто работать".

Кроме того, вы, как правило, найдете лучший ответ в списке рассылки riak-users, чем здесь. http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com (Не обижайся на z8000, у которого, кажется, тоже есть ответы.)

0 голосов
/ 08 февраля 2010

Так же, как и любое другое значение. Почему это было бы иначе?

...