Titan Graph: схема данных. Куда поместить состояние на графике

У меня есть вершина «продукта», которая имеет несколько отношений / ребер с вершинами «пользователя» (несколько возможных ролей). Эти роли / ребра имеют состояние (например, NON, IN_PROGRESS, DONE). Где лучше всего сохранить эти состояния в Titan Graph setup? В граничных свойствах? Состояния являются временными во время последовательности транзакций, но они должны быть сохранены для внутреннего хранилища, если пользователь прерывает последовательность транзакций или отключается из-за сбоя сети или около того. (клиенты, которые делают запрос, поступают из мобильных соединений с потерями)

Итак, у меня есть свои собственные «состояния» для моих вершин и ребер, которые имеют значение как события и для моего журнала, и я ищу лучший способ сохранить (временно) и сохранить (постоянно) эти состояния? Кто-нибудь, кто может посоветовать мне проблему (работает с настройкой titan graph-DynamoDB, теперь локально, предназначенной для удаленного / облачного управления)? Очень признателен!


person Monique De Haas    schedule 22.03.2016    source источник


Ответы (1)


Поскольку эти состояния связаны с ролями / ребрами, они должны переходить в край как свойство ребра. Свойства края могут изменяться, и вам следует обновлять эти состояния, когда они меняются с «нет» на «готово».

person Alaa Mahmoud    schedule 23.03.2016
comment
Спасибо Алаа Махмуд! Сначала это было мое предположение, приятно видеть, что оно подтвердилось. Я также пытаюсь использовать центральную вершину для продукта и собирать там состояния ... например, STATEOFTITLEOFOBJECT, когда пользователи меняют их, то есть они добавляют заголовок для загружаемого объекта, я хочу сохранить состояние, чтобы, когда они откажутся от задачи и вернуться к нему позже, он знает, с чего начать. Может быть, это переборщить ... - person Monique De Haas; 24.03.2016
comment
Прохладный! Вы всегда можете пометить задачу / ребро, например, как «неактивную» и оставить ее частью графика. Таким образом, вы всегда сможете вернуть его позже. Вы можете отфильтровать его при просмотре графика - person Alaa Mahmoud; 26.03.2016
comment
Ага! Это очень эффективное элегантное решение. Всякий раз, когда соединение теряется (преднамеренно, пользователем или из-за сбоя сети), все состояние меняется на «неактивное». После повторного подключения мы просматриваем отношения для «неактивного» состояния и получаем последние сохраненные состояния для продолжения. Большой! Еще раз спасибо за ваш совет! - person Monique De Haas; 27.03.2016
comment
Обратите внимание, что изменение кромки Титана на самом деле является удалением + созданием (обратите внимание, как изменится идентификатор кромки). При использовании Cassandra это может привести к большому количеству надгробий, если слишком часто мутировать много краев. По возможности избегайте видоизменения краев. - person jbmusso; 02.04.2016
comment
Хорошо, это веский аргумент для пересмотра этого маршрута. Не использую Cassandra, а ES и AWS Dynamo DB для внутреннего индекса и хранилища. А как насчет обновления метки периферии? Это тоже видоизменяет край? Или я могу просто обновить этикетку, и край останется неизменным. Поскольку я хочу, чтобы у меня была постоянная связь между «пользователем» и «продуктом». - person Monique De Haas; 11.05.2016