Предложение для базы данных типа Ancestry: MongoDB, Redis и т. Д.? - PullRequest
0 голосов
/ 22 ноября 2010

Я пишу приложение ruby, в котором хранятся данные о происхождении.Т.е. Семейное древо.

Для остальной части приложения я использую MongoDB для хранения, поскольку оно поддается иерархической структуре, однако данные предков не совсем соответствуют этой модели, даже если они иерархичны всмысл.Мне любопытно, есть ли у кого-нибудь предложение о том, следует ли мне обмениваться данными в более подходящем слое базы данных, чтобы справиться с ними?

Т.е. A связан с B (двунаправленный) и имеет родителей C и D. B имеет родителейE и F. A и B имеют дочерние элементы G, H, I. G в паре с H и т. Д.

Так что это не совсем рекурсивно, поскольку один узел имеет 2 родительских узла.Поэтому встраивание не имеет смысла в MongoDB, поскольку оба родителя будут встраивать одно и то же дерево в двух экземплярах.Он ближе к социальному графу, только более жесткий (есть только 2 типа отношений).Я думаю, что наборы Redis будут работать очень хорошо, но прежде чем я усложню стек с постоянством Polyglot, я надеялся получить некоторую обратную связь от других, которые, возможно, разработали подобные структуры.Другая проблема, связанная с Redis - хранение всех этих деревьев в памяти, может быть не очень хорошей идеей, хотя, если бы я только сохранял отношения в Redis с объектными данными в документах MongoDB, вероятно, все было бы в порядке.

1 Ответ

2 голосов
/ 22 ноября 2010

Может быть, вам стоит попробовать графическую базу данных, так как она звучит намного ближе к домену. И есть немало таких, которые можно попробовать http://nosql.mypopescu.com/post/498705278/quick-review-of-existing-graph-databases

...