Я поддерживаю небольшую программу, которая проходит через документы в базе данных Neo4j и выгружает JSON-кодированный объект в базу данных документа. В Neo4j — по соображениям производительности, я думаю, — нет реальных данных, только ID.Алгоритм для рекурсивно связанных объектов
Представьте себе что-то вроде этого:
posts:
post:
id: 1
tags: 1, 2
author: 2
similar: 1, 2, 3
Я понятия не имею, почему это было сделано, как это, но это то, что мне приходится иметь дело с. Затем программа использует идентификаторы для извлечения информации для каждой структуры данных, что приводит к правильной структуре. Вместо author
это всего лишь int
, это объект Author
, с именем, адресом электронной почты и т. Д.
Это хорошо работало до тех пор, пока не была добавлена функция similar
. Similar
состоит из ссылок на другие сообщения. Поскольку в моем цикле я создаю фактические объекты сообщений, как я могу эффективно их использовать? Единственное, что я мог представить, это создать кеш с сообщениями, которые я уже «преобразовал», и, если ссылочный идентификатор не находится в кеше, поместите текущую запись в нижнюю часть списка. В конце концов, все они будут обработаны.
Что делать, если «подобное» поле нуждается в подмножествах структуры Post? Например, меньше полей. Вместо того, чтобы ссылаться, я должен создать картограф? – vinnylinux
Если «похожие» данные представляют собой список значений, я думаю, вы определенно захотите представить значения с помощью среза. То, что вы вкладываете в кусочек, зависит от вас. Например, каждый элемент может быть «map [string] bool', который хранит набор имен полей. –