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

StackOverflow https://stackoverflow.com/questions/2212770

  •  19-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

На данный момент они не рекомендуют хранить файлы размером более 50 МБ без их разделения.Видеть: Часто задаваемые вопросы — Riak Wiki

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

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

Другие советы

Ответ @ Брайана Мэнселла на правильном пути - вы действительно не хотите хранить большие двоичные значения (более 50 МБ) как один объект в Riak (через некоторое время кластер становится неприемлемо медленным).

Вместо этого у вас есть 2 варианта:

1) Если двоичный объект достаточно мал, сохраните его напрямую.Если он превышает определенный порог (50 МБ — это приемлемое произвольное значение для начала, но на самом деле запустите несколько тестов производительности, чтобы узнать, каков средний размер объекта для вашего кластера, после чего он начнет сканировать) — разбейте разбить файл на несколько частей и хранить их отдельно.(На самом деле, большинство людей, которых я видел, идут по этому пути, используют фрагменты размером 1 МБ).Это означает, конечно, что вам нужно отслеживать «манифест» — какие фрагменты, где и в каком порядке были сохранены.И затем, чтобы получить файл, вам сначала придется получить объект, отслеживающий фрагменты, затем извлечь отдельные фрагменты файла и снова собрать их обратно в исходный файл.Взгляните на такой проект, как https://github.com/podados/python-riakfs чтобы посмотреть, как они это сделали.

2) Альтернативно вы можете просто использовать Риак КС (Riak Cloud Storage), чтобы сделать все вышеперечисленное, но код написан за вас.Именно так работает RiakCS — он разбивает входящий файл на куски, сохраняет и отслеживает их по отдельности в простом Riak, а затем собирает их заново, когда приходит время вернуть его.И для вашего удобства предоставляет API Amazon S3 для хранения файлов.Я настоятельно рекомендую этот путь (чтобы не изобретать велосипед — разбиение на фрагменты и отслеживание файлов достаточно сложно).Да, CS — платный продукт, но попробуйте бесплатный Пробная версия для разработчиков, если вам интересно.

Как и любая другая ценность.Почему все должно быть иначе?

Используйте либо интерфейс 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, у которого, кажется, тоже есть ответы.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top