2015-01-23 3 views
1

타이탄 문서에서 찾을 수있는 모든 예는 Rexster 콘솔을 사용하여 색인을 생성합니다. 하나의 Titan 노드에 로그인하여 색인을 만들고 커밋합니다. 잠시 후 전체 클러스터가 인덱스를 인식하고 사용할 수 있습니다.인덱스를 만드는 방법은 무엇입니까?

다른 방법이 있는지 궁금합니다. 예를 들어 코드에서 색인을 만들 때 몇 가지 이점이 있습니다. Rexster 확장 기능에서는 인덱스 생성시 사용할 수있는 toString 메서드를 제공하는 가장자리 키와 속성 키에 ENUM을 사용합니다. 이렇게하면 변경된 값에 대해 걱정할 필요가 없습니다.

언급해야 할 또 다른 측면은 내가 Titan을 벤치마킹하여 클러스터를 아주 자주 다시 초기화한다는 것입니다. 노드에 로그인하여 수동으로 수행하는 것보다 코드가 모든 작업을 처리하도록하는 것이 더 편합니다.

그러나 코드에서 인덱스를 만드는 것이 엉망인 것처럼 보이고 결국 일관성있는 저장소 백엔드를 사용할 때 여러 예외가 발생합니다. 내 동시 노드 시작으로 인해 여러 노드가 인덱스를 만들려고했다고 생각합니다. 자세한 내용은 Titan node does not come up을 참조하십시오.

이러한 문제를 올바르게 처리 할 수있는 방법이 있습니까? 내가 모르는 다른 방법이 있습니까?

답변

1

실제로 많은 사람들이 수작업으로 콘솔에 입력하여 스키마를 작성한다고 생각하지 않습니다. 나는 일반적으로 그 일을 할 수있는 몇 가지 방법을 가지고있는 Schema 클래스를 만든다. 그렇게하면 열거 형, 정적 문자열 변수 등을 설명하는 방식으로 사용할 수 있습니다. 그 Schema 클래스는 정말 유용합니다. 왜냐하면 주어진 시간에 Titan 스키마가 어떻게 보이는지를 버전 화 한 인스턴스를 나타 내기 때문에 많은 부분에서 재사용 할 수 있습니다. (프로덕션 인스턴스를 수동으로 초기화하고 단위 테스트간에 스키마를 구성하고 빌드 서버의 자동화에 사용하는 그루비 스크립트로 변환)

Titan의 경우 Schema 클래스는 사용자 정의 Gremlin DSL을 개발하고 유지 관리하는 개념의 핵심입니다. 당신이 이미 그것을 읽지 않은 경우이 주제에 흥미 blog post 찾을 수 있습니다.

+0

좀 더 구체적으로 알려주시겠습니까? 블로그 포스트는 참으로 흥미 롭습니다. 그러나이 클래스가 어떤 언어로 쓰여 있는지, 어디에 놓을 지/사용법을 알 수는 없습니다. 그것에 관한 문서가 있습니까? –

+0

Groovy에서 항상 그런 코드를 쓰지 만, 당신이 선택한 JVM 언어로 작성할 수없는 이유는 모르겠지만, jar를 빌드하고 필요에 따라 의존하게됩니다. –

+0

그래프 작성 당 한 번 실행되는 초기화 메소드가 있기를 바랬습니다. 이것은 스키마를 생성하기위한 완벽한 포인트가 될 것입니다. 다른 모든 경우에는 Cassandra를 사용하여 노드가 스키마를 동시에 만들지 않으려 고합니다. 하나는 Rexster extension'createGraphSchema'를 생성 할 수 있고, 한 번 호출됩니다. 그러나 이것은 나에게 잔인한 것처럼 보입니다. –