Индексирование Neo4j (с Lucene)-Хороший способ упорядочить «типы» узлов?

На самом деле это скорее вопрос Lucene, но в контексте база данных neo4j.

У меня есть база данных, которая разделена примерно на 50 типов узлов (, так что «коллекции» или «таблицы» в других типах БД). У каждого есть подмножество свойств, которые необходимо проиндексировать, некоторые из них имеют одно и то же имя, некоторые — нет.

При поиске я всегда хочу найти узлы определенного типа, а не все узлы.

Я вижу три способа организации этого:

  • Один индекс для каждого типа, свойства естественным образом сопоставляются с полями индекса:index 'foo', 'id'='1234'.

  • Единый глобальный индекс, каждое поле сопоставляется с именем свойства, чтобы различать тип, либо включать его как часть значения ('id'='foo:1234'), либо проверять узлы после их возврата (Я ожидаю, что дубликаты будут очень редкими ).

  • Отдельный индекс типа является частью имени поля:'foo.id'='1234'.

После создания база данных доступна-только для чтения.

Есть ли преимущества у одного из них с точки зрения удобства, размера/эффективности кэш-памяти или производительности?

Насколько я понимаю, для первого варианта neo4j будет создавать отдельный физический индекс для каждого типа, что кажется неоптимальным. Что касается третьего, я получаю, что большинство документов Lucene имеют только небольшое подмножество полей, не уверен, влияет ли это на что-либо.

5
задан Dmitri 26 March 2012 в 20:39
поделиться