Riak: список карт с возможностью поиска (с CRDT) - PullRequest
0 голосов
/ 20 июня 2019

У меня есть сценарий использования, который заключается в хранении нескольких карт под атрибутом.Это эквивалентный список JSON:

[
{"tel": "+33123456789", "type": "work"},
{"tel": "+33600000000", "type": "mobile"},
{"tel": "+79001234567", "type": "mobile"}
]

Кроме того, я бы хотел, чтобы он был доступен для поиска на уровне объекта.Например: - поиск записей с номером мобильного телефона - поиск записей с номером мобильного телефона, номер которых начинается со строки «+7»

, поскольку Riak не поддерживает наборы карт (но только наборырегистрируется), мне было интересно, есть ли хитрость для ее достижения.До сих пор у меня было 2 идеи

Карта карт

Идея состоит в том, чтобы генерировать (случайным образом?) Ключи для объектов и сохранять каждый объект списка в родительской карте, чьи ключиявляются сгенерированными для этой единственной цели, чтобы иметь ключ.

Мне кажется, что он не позволяет искать объект (карты внутри родительской карты), потому что поиск Riak Solr требует полного пути кприписывать.Нельзя просто написать следующий запрос Solr: phone_numbers.*.tel:+7*.Также сложный поиск (например, поиск записей с номером мобильного телефона, номер которого начинается со строки «+7») кажется труднодостижимым.

Наборы с имитированными многозначными атрибутами

ThisРешение состоит в использовании набора и вставке всех значений объекта в виде одной строки с разделителями между ними.Да, это взлом.Значение атрибута будет выглядеть следующим образом: $tel:+79001234567$type:mobile$ с : в качестве разделителя имя-значение атрибута и $ в качестве разделителя атрибута.

Поиск может быть осуществим с использованием подстановочного знака * (некрасиво, новсе еще), за исключением проблемы с выходом из разделителей: что, если атрибут type включает :?Являются ли они некоторыми разделителями, которые приняты Riak и не были бы приемлемы в строке (я имею в виду управляющие символы)?

В двух словах

Я ищу решение, какое быхакерство, пока оно работает.Любая идея приветствуется.

...