neo4j의 노드 식별자
저는 Neo4j를 처음 사용합니다. 어제 저녁에 게임을 시작했습니다.
모든 노드가 노드 생성 중에 생성되는 자동 증가 정수로 식별되는 것을 확인했습니다. 항상 그렇습니까?
내 데이터 세트에는 자연 문자열 키가 있으므로 Neo4j 할당 ID와 내 ID 사이에 매핑 할 필요가 없습니다. 대신 문자열 식별자를 사용할 수 있습니까?
node-id를 구현 세부 사항으로 생각하십시오 (관계형 데이터베이스의 rowid와 같이 노드를 식별하는 데 사용할 수 있지만 절대 재사용되지 않아야 함).
자연 키를 노드에 속성으로 추가 한 다음 자연 키로 노드를 인덱싱하거나 자동 인덱싱을 활성화합니다.
예 : Java API에서 :
Index<Node> idIndex = db.index().forNodes("identifiers");
Node n = db.createNode();
n.setProperty("id", "my-natural-key");
idIndex.add(n, "id",n.getProperty("id"));
// later
Node n = idIndex.get("id","my-natural-key").getSingle(); // node or null
자동 인덱서를 사용하면 "id"필드에 대해 자동 인덱싱을 활성화 할 수 있습니다.
// via configuration
GraphDatabaseService db = new EmbeddedGraphDatabase("path/to/db",
MapUtils.stringMap(
Config.NODE_KEYS_INDEXABLE, "id", Config.NODE_AUTO_INDEXING, "true" ));
// programmatic (not persistent)
db.index().getNodeAutoIndexer().startAutoIndexingProperty( "id" );
// Nodes with property "id" will be automatically indexed at tx-commit
Node n = db.createNode();
n.setProperty("id", "my-natural-key");
// Usage
ReadableIndex<Node> autoIndex = db.index().getNodeAutoIndexer().getAutoIndex();
Node n = autoIndex.get("id","my-natural-key").getSingle();
참조 : http://docs.neo4j.org/chunked/milestone/auto-indexing.html 및 : http://docs.neo4j.org/chunked/milestone/indexing.html
이것은 도움이 될 것입니다 :
배치 가져 오기 중 자동 인덱싱을 백업 할 인덱스 생성 neo4j.properties에서 자동 인덱싱이 활성화 된 경우 생성되는 각 노드가 node_auto_index라는 인덱스에 추가된다는 것을 알고 있습니다. 자, 여기에 멋진 부분이 있습니다. 원래 수동 인덱스 (일괄 가져 오기시)를 추가하고 이름을 node_auto_index로 지정하고 neo4j에서 자동 인덱싱을 활성화하면 일괄 삽입 된 노드가 자동 인덱싱 된 것처럼 나타납니다. 그리고 거기에서 노드를 만들 때마다 노드도 인덱싱됩니다. **
출처 : 사용자 정의 키로 노드 식별
Neo 문서에 따르면 http://neo4j.com/docs/stable/query-schema-index.html 에는 자동 색인이 있어야 하지만 여전히 많은 제한이 있습니다.
모든 답변 외에도 neo4j는 더 빠르게 작동하고 더 나은 서비스를 제공하기 위해 자체 ID를 만듭니다. 내부 시스템이 ID간에 충돌하지 않는지 확인하십시오. 그러면 동일한 속성을 가진 노드가 생성되고 시스템에 빈 노드로 표시됩니다.
생성 된 ID는 기본값이며 사용자가 수정할 수 없습니다. 사용자는 해당 노드의 속성으로 문자열 식별자를 사용할 수 있습니다.
참조 URL : https://stackoverflow.com/questions/9051442/node-identifiers-in-neo4j
'programing' 카테고리의 다른 글
malloc 구현은 해제 된 메모리를 시스템에 반환합니까? (0) | 2021.01.15 |
---|---|
멤버 이니셜 라이저에서 'this'를 사용할 수없는 이유는 무엇입니까? (0) | 2021.01.15 |
android-콘텐츠 제공자가없는 CursorLoader 및 SQLite (0) | 2021.01.15 |
네임 스페이스 종속성이 필요하지 않습니다. (0) | 2021.01.15 |
`hashCode`의 기본 구현은 무엇입니까? (0) | 2021.01.15 |