Riak-Как отфильтровать объекты одного ведра на основе другого ведра?
Я использую Riak Cluster с 3 узлами с несколькими ведрами. У меня есть корзина с именем user_account, которая содержит информацию о пользователе, такую как имя, адрес и т. Д.
user_account = {"id" => 1,"name"=>"abc", "address"=>"xyz"}
Есть еще одна ячейка user_metadata, которая обновляет эти данные. Запись в нем выглядит так:
user_metadata = {"id" => 1, "created_at"=>"20140304", "updated_at" => "20140304"}
Оба контейнера имеют одинаковый ключ, который является идентификатором. Я хочу запустить map_reduce для группы user_account для всех ключей, которые обновляются в диапазоне дат в user_metadata. Есть ли способ, которым я могу сделать это, также в настоящее время нет индекса для ключа updated_at в корзине user_metadata.
1 ответ
Поскольку в Riak нет объединений, общий способ решения этой проблемы состоит в отмене нормализации вашей модели данных. В вашем случае между этими записями существует отношение 1: 1, что предполагает, что было бы неплохо объединить их. Это также может позволить вам определить вторичные индексы, которые могут повысить производительность вашего задания MapReduce и более эффективно определить подходящий вход для него. Это также может помочь вам более эффективно извлекать данные из Riak, поскольку обычно предпочтительнее извлекать несколько более крупных объектов, чем большое количество более мелких.