Большая объем запрашиваемой и проходимой структуры данных - PullRequest
1 голос
/ 16 января 2010

Я создаю приложение и мне нужна структура данных взаимосвязанных объектов, которые можно запрашивать и просматривать. Связи между объектами могут быть произвольными и не обязательно известны заранее. Мне нужно, чтобы эта структура данных была запрашиваемой (что обеспечивает обычный SQL), а также проходной (что предоставляет новая графовая база данных, такая как neo4j). Я пытаюсь получить что-то, что делает оба и эффективно работает с очень большими наборами данных. Давайте назовем эту структуру данных дао. Мне понадобятся следующие примитивные методы:

// dealing with the objects
dao.save(s);
Something s = dao.load(Something.class, 5);
dao.update(s);
dao.delete(s);

// dealing with the relations
dao.relate(s, t);
dao.unrelate(s, t);

// the tricky methods
dao.querier(Something.class).filter(...).sort(...).values();
dao.traverser(Something.class).start(s).path(...).filter(...).sort(...).values();

Фильтр будет выглядеть как предложение sql where, sort будет выглядеть как предложение sql order, start будет начальным узлом для обхода, а путь будет определять такие вещи, как обход BFS и DFS, а также когда прекратить поиск.

Я пытался смоделировать это как вершины со списком смежности, но должен быть лучший способ. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 17 января 2010

Да, Neo4j будет хорошим вариантом. Помимо необработанного использования Java, Jo4neo обеспечивает постоянство на основе аннотаций для вашей объектной модели на графике. Для запросов вы можете использовать высокоскоростной Java Traversers для Neo4j или использовать такие вещи, как JRuby Wrapper , который обеспечивает очень удобные абстракции для запросов из JRuby. Кроме того, Gremlin специализируется на глубоких обходах графа, но еще не оптимизирован для скорости.

0 голосов
/ 16 января 2010

возможно, с помощью sparql обработчика запросов для neo4j?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...