У меня есть приложение, которое хранит информацию о взаимоотношениях в таблице MySQL (contact_id, other_contact_id, Strength ,hibited_at). Это нормально, если все, что мне нужно сделать, это показать, с кем связаны отношения контакта, или даже создать список общих контактов для двух контактов.
Но теперь мне нужно сгенерировать такую статистику, как: «каково было общее количество двусторонних соединений силой 3 или выше в январе 2011 года» или (при условии, что каждый контакт является частью группы) «какая группа имеет наибольшее количество подключений. другим группам и т. д.
Я быстро обнаружил, что SQL для генерации этой статистики очень быстро стал громоздким.
Итак, я написал сценарий, который для любой даты будет генерировать график в памяти. Затем я мог запустить любой статистический показатель по этому графику. Гораздо проще для понимания и, в целом, гораздо более производительно - за исключением создания графической части.
Моей следующей мыслью было кэшировать эти графики, чтобы я мог вызывать их всякий раз, когда мне нужно было запустить новую статистику (или сгенерировать более поздний график: например, для сегодняшнего графика я беру вчерашний график и применяю любые изменения, которые произошли со вчерашнего дня). Я попробовал memcached, который отлично работал, пока графики не выросли более чем на 1 МБ.
Итак, теперь я думаю об использовании графической базы данных, такой как Neo4J.
Проблема только в том, что у меня нет только одного графика. Или да, но он меняется со временем, и мне нужно иметь возможность запрашивать его с разным временем обращения.
Я тоже могу:
- хранить несколько графиков в Neo4J и повторно загружать / взаимодействовать с ними по отдельности? Затем я создавал и сохранял отдельные социальные графики для каждой даты.
or
- добавить действительные временные метки до и от каждого ребра и соответствующим образом отфильтровать граф: поэтому, если бы мне нужен график для «1 мая», я бы следил только за новейшим ребром между двумя узлами, которые были созданы до «1 мая» (и если все ребра были созданы после 1 мая, то эти узлы не будут подключены).
Я новичок в графических базах данных, поэтому буду благодарен за любую помощь / указатели / подсказки.