Хранение нескольких графиков в Neo4J

У меня есть приложение, которое хранит информацию о взаимосвязях в таблице MySQL (contact_id, other_contact_id, Strength, loaded_at). Это нормально, если все, что мне нужно сделать, это показать, с кем связаны отношения контакта, или даже создать список общих контактов для двух контактов.

Но теперь мне нужно сгенерировать такую ​​статистику: ' каково было общее количество двусторонних связей силой 3 или выше в январе 2011 года »или (при условии, что каждый контакт является частью группы)« какая группа имеет наибольшее количество связей с другими группами »и т. д.

I быстро обнаружил, что SQL для генерации этой статистики очень быстро стал громоздким.

Итак, я написал сценарий, который для любой заданной даты генерирует график в памяти. Затем я мог запустить любой статистический показатель по этому графику. Гораздо проще для понимания и в целом гораздо более производительно - за исключением создания графической части.

Моей следующей мыслью было кэшировать эти графы, чтобы я мог обращаться к ним всякий раз, когда мне нужно было запустить новый стат (или сгенерировать более поздний график: например, для сегодняшнего графика я беру вчерашний график и применяю все изменения, которые произошли со вчерашнего дня). Я попробовал memcached, который отлично работал, пока графики не выросли более чем на 1 МБ.

Итак, теперь я думаю об использовании базы данных графов, таких как Neo4J.

Единственная проблема в том, что у меня нет только одного графа. Или я, но это тот, который со временем меняется, и мне нужно иметь возможность запрашивать его с разным временем обращения.

Итак, могу ли я:

  • хранить несколько графиков в Neo4J и повторно загружать / взаимодействовать с ними по отдельности? Затем я создавал и сохранял отдельные социальные графы для каждой даты.

или

  • добавлял действительные временные метки к и от каждого края и соответствующим образом отфильтровывал граф: поэтому, если бы мне нужен график для «1 мая», я бы только следил самое новое ребро между двумя узлами, которое было создано до «1 мая» (и если все ребра были созданы после 1 мая, то эти узлы не были бы соединены).

I ' m довольно новичок в графических базах данных, поэтому мы будем благодарны за любую помощь / указатели / подсказки.

16
задан emh 11 May 2011 в 00:26
поделиться