2014-12-30 3 views
1

레이블의 모든 노드에 몇 가지 공통 속성이 있는지 확인하는 방법은 무엇입니까?레이블 속성이 있습니까 - 레이블에 Neo4j 스키마가 있습니까?

예를 들어, 나는

+0

이것은 응용 프로그램 수준 IMHO에서 처리해야합니다. Neo4j는 스키마가 없습니다. 어쩌면 트랜잭션에 연결하여 관리되지 않는 확장을 작성하여이를 달성 할 수 있습니다. 어쩌면이 예제가 도움이 될 것입니다. https://github.com/graphaware/neo4j-uuid –

답변

3
(예를 들어! namee) 나는 속성 이름의 서면 실수를 할 수있는 레이블이 "사람"의 모든 노드에 대해,하지만 속성 " 이름을"만들려면

오늘 Neo4j에 내장 된 메커니즘이 없습니다 (작성 당시 Neo4j의 현재 버전은 2.1.6입니다). 설명하는 것은 일종의 스키마입니다 (예 : RDBMS의 경우 DDL을 비교 한 경우). Neo4j는 기본적으로 스키마가 없습니다. 이러한 유형의 구조적 무결성은 quite often handled in the application layer for NoSQL databases입니다.

오늘 Neo4j에서 사용할 수있는 스키마 작업은 here입니다.

현재 그들은 다음과 같습니다

  • 고유 - 예를 CREATE CONSTRAINT ON (p:Person) ASSERT p.name IS UNIQUE
  • 색인 - 라벨에 색인을 만듭니다. CREATE INDEX ON :Person(name)

Neo4j는 이상의 제약이 미래에 Neo4j을 위해 사용할 수 있음을 나타냅니다 뒤에 팀의 일부입니다 Michael Hunger에서이 답변에 코멘트. 또한, 마이클은 다음과 같은 대안을 가리키는 :

  • Structr에서 무엇보다도 엄격한 스키마
  • SylvaDB을 (스키마 문서 here 확인)를 적용하는 것이 Neo4j 위의 레이어를 살펴 보자, 쉬운 - 투 - 스키마를 지원하는 Neo4j 위의 레이어를 사용하십시오. 매우

이 외에도, FrobberOfBits은 데이터베이스에 대해 아주 간단한 사이퍼 쿼리를 실행하고 요약 통계를 제공하는 대부분의 프로파일 러의 숫자가 들어있는 도구 NeoProfiler 지적 보인다. 일부 프로파일 러는 실제로 그래프에서 데이터를 발견 한 다음 나중에 실행할 다른 프로파일 러를 생성합니다. 예를 들어 데이터에서 "Person"이라는 레이블이 발견되면 해당 레이블이있는 노드 채우기를 검사하기 위해 레이블 프로파일 러가 실행 대기열에 추가됩니다.

+1

여기서 뻔뻔한 플러그 - neo4j에 내장 된 메커니즘이 없지만 neo4j의 스키마 정의를 돕는 몇 가지 다른 도구가 있습니다. 기존 그래프의 데이터를보고 그래프가 함께 연결되는 방식과 그 뒤에 오는 규칙을 설명하는 "메타 문트"를 유도합니다. https://github.com/moxious/neoprofiler – FrobberOfBits

+1

Neo4j 위에 더 엄격한 스키마 정보를 추가하는 structr.org와 sylvadb도 있습니다. 미래에는 Neo4j에 더 많은 제약이 추가 될 것입니다. 또한 Java에서 트랜잭션 이벤트 핸들러를 사용하여 스스로 할 수도 있습니다. 시작한 것은 PoC입니다. –

관련 문제