2014-11-05 3 views
0

Я хотел бы иметь следующий вид базового класса для каждого класса унаследованных узлов.Реализация базового класса NodeEntity, последствия ярлыков

@NodeEntity 
public abstract class NodeEntityBase { 

// id is not used with advanced mapping spring-data-neo4j. 
@GraphId 
protected Long id; 

@Indexed(unique = true) 
@NotNull 
protected String appId; 

....

Но если я реализую, что весна-данных Neo4j создаст NodeEntityBase метку для каждого узла. Я на самом деле не использую этот ярлык для чего-либо, и меня беспокоит, будет ли это позже проблемой производительности (или некоторыми другими проблемами). Я знаю, что для записей в индексе метки есть ограничение на 2 миллиарда (int max), что может стать проблемой, поэтому по этой причине я хотел бы исправить это.

Есть ли у вас обходной путь или дизайн, чтобы достичь этого? Мне очень хотелось бы иметь базовый класс (ы), где я могу поместить свойства (например, созданную временную метку и т. Д.), Которые почти каждый узел наследует. Я знаю, что могу использовать интерфейсы (я еще не тестировал, если интерфейс также помечен), но я просто был бы счастливее, что мне не нужно вводить сеттеры/геттеры в каждый унаследованный класс.

Будет ли снижение производительности, когда будут миллионы узлов? И я повторяю, что я не буду использовать этот ярлык для запросов. 2 миллиарда лимита может быть достаточно большим, поэтому я мог бы просто забыть об этом.

+0

APPID лучше быть @Indexed (уникальный = верно, уровень = INSTANCE), но дело не в этом –

ответ

0

Вы можете попробовать поставить @NodeEntity только на конкретные классы.

В качестве альтернативы использовать реализацию TypeRepresentationStrategy, что только записывает одну метку,

как этот

https://gist.github.com/jexp/8b495cf6c6e81cc2a1c9

Смежные вопросы