JanusGraph 사용하기 시작

JanusGraph는 여러 노드 클러스터에 저장된 그래픽을 처리하는 그래픽 처리 도구입니다.JanusGraph는 대규모 클러스터링, 실시간 스트리밍 및 분석 쿼리를 위해 설계되었습니다.
이 글은 JanusGraph를 처음 설치하고 Gremlin 컨트롤러를 사용할 때 실행하고자 하는 검색어를 소개합니다.나는 어제서야 했기 때문에 기억이 새롭다.나는 이 글을 쓰는 필요성을 보았다. 왜냐하면 나는 공식 문서에서 나의 몇 가지 문제에 대한 답을 찾지 못했기 때문에, 나는 어쩔 수 없이 인터넷상에서 정보를 찾아야 했다. 이것은 고품질의 시간을 소비했다.그럼 시작합시다.

JanusGraph 설치


JanusGraph 설치는 거의 간단합니다.로컬 기기에 서버를 설치하려고 했을 때, 나는 확실히 문제와 곤혹에 부딪혔다.그러나 연구를 통해 나는 많은 사람들이 같은 문제에 직면하고 있다는 것을 발견했다. 이것은 잘못된 것일 수도 있다.나는 잡초 속에 들어갈 시간이 충분하지 않아서, 나는 단지 내가 해야 할 일을 해서 시작할 뿐이다.
우선, 서버를 설치하고 시작하는 방법에 대한 공식 문서는 충분합니다.문제는 Cassandra와 Elasticsearch를 동시에 실행해서 Gremlin 서버를 시작해야 한다는 것입니다.물론, HBase, Google Cloud Bigtable, Berkeley DB 또는 in memory) 와 Elasticserach (예: Lucene, Solr 등) 의 대체 방안을 사용할 수 있지만, 가장 간단한 방법을 선택해서 사용하기 시작했습니다.
문서에서 혼합 인덱스 백엔드 (Elasticsearch, Solr, Lucene 등) 를 건너뛰고 메모리 백엔드만 사용할 수 있지만, 작동하지 않습니다.혼합 인덱스 백엔드와 저장 백엔드가 필요합니다.그래서 나는 그린린 서버를 시작하기 위해 Elasticsearch를 다운로드하고 로컬에서 실행해야만 했다.이것은 좀 불편하지만, 나는 그리 대단한 것은 아니라고 생각한다.모든 운동 부품이 예상대로 움직이는 이상 우리가 처리할 데이터를 살펴보자.

샘플 데이터 세트


여기서, 나는 다시 한 번 JanusGraph에 첨부된 예시 데이터 집합을 사용하는 간단한 방법을 채택했다.이것은 신의 도형이라는 재미있는 도형이다.다음 그림에서 보듯이 이 데이터 모델을 속성도 모델이라고 부른다.이 특수한 속성도 모형은 로마 만신전의 일부 신과 그들의 이름, 나이, 애완동물, 거주지와 기타 관계를 나타낸다.

자료 출처: JanusGraph
너는 도표에 특수한 기호가 매우 적다는 것을 볼 수 있다.물론 그것들은 특수한 의미를 가지고 있다.

이제 우리는 이 그림이 생겨서 서로 다른 변의 뜻을 알게 되었고, 이 그림을 두루 훑어볼 수 있는지 없는지를 봅시다.이 점을 하려면 먼저 출발점, 즉 정점을 얻어야 한다.우리는 그림에서 .has("property", "value") 방법을 사용하여 특정 값을 가진 정점을 찾을 수 있다.나는 이곳의 공식 예시를 다시 사용할 것이다.
우리는 우선 정점의 참고를 얻을 것이다. 그 중에서 '명칭' 은 '토성' 이다이렇게 하려면 다음 질의를 실행합니다.
saturn = g.V().has('name', 'saturn').next()
아주 간단합니다.이제 우리는 saturn 변수 중의 정점에 대한 인용이 생겼다. 토성의 손자 헤라클레스를 어떻게 두루 훑어보는지 보자.토성의 손자를 찾으려면 우선 토성의 아들을 찾아야 한다.그림에서 우리는 목성에서 토성까지'아버지'라는 가장자리를 볼 수 있다.우리는 이 변을 이용하여 한층 더 통과할 수 있다.우리는 전입변이 있기 때문에 in() 변수에 대해 saturn 방법을 사용할 것이다.다음은 이에 대한 조회입니다.
hercules = g.V(saturn).in('father').in('father')
in() 방법은 반드시 옮겨야 하는 매개 변수를 받아들인다.이 예에서 이것은 아버지의 우세이다.그래서 토성에서 우리는 다음 정점으로 간다. 토성은'아버지'옆에 토성으로 들어간다. 이 예에서 목성이다.그곳에서 우리는 다시 같은 역행을 했다in('father').이것은 우리를 목성의 아들로 데려갈 것이다. 그것이 바로 힘의 신이다.
만약 당신이 다른 길을 가고 싶다면, 그것은 장사의 할아버지를 찾는 것이다. 당신은 아래의 조회를 실행할 수 있다.
hercules = g.V().has('name', 'hercules').next()
saturn = g.V(hercules).out('father').out('father')
보시다시피 저희는 out() 방법을 사용했습니다in().이것은 우리가 아버지 가장자리를 두루 돌아다녔기 때문이다. 이것은 hercules 정점에서 시작되었다.나는 언제 어떤 방법을 사용해야 할지 깨닫는 데 시간이 걸렸지만, 일단 내가 깨닫게 되면 이것은 매우 논리에 맞는 것이다.

순환하다


마지막 두 개의 검색에서, 우리는 확실히 두 번 in('father')out('father') 방법을 사용했음을 알 수 있습니다.이것은 이렇게 여러 번 같은 방법을 추적하는 것이 아니라 순환을 사용할 수 있는 뚜렷한 예이다.자누스 그래프가 있으면 할 수 있어.간단한 repeat() 방법이 그것을 매우 쉽게 만들었다.다음은 repeat() 방법으로 다시 쓴 같은 검색어입니다.
hercules = g.V(saturn).repeat(__.in('father')).times(2).next()
saturn = g.V(hercules).repeat(__.out('father')).times(2).next()
나는 이것이 이것보다 더 쉽다고 생각하지 않는다.

여러 교점 선택


때때로, 한 검색에서 여러 개의 정점을 조회하기를 원할 수도 있습니다.예를 들어, 헤라클레스의 부모를 조회하고 싶다면, 먼저 한 부모를 조회한 다음에 다른 부모를 조회해야 한다.분포식 도형을 사용할 때 속도가 느려진다고 상상할 수 있습니다.일을 더욱 간단하고 빠르게 하기 위해서 out() 방법으로 쉼표로 구분된 테두리 목록을 전송할 수 있으며, 그 안에 옮겨다니는 테두리가 포함되어 있다.만약 당신이 장사의 부모에게 묻고 싶다면, 당신은 이렇게 할 수 있다.
g.V(hercules).out('father', 'mother').values('name')
너무 우아해.
내가 본문 첫머리에 언급한 바와 같이 이제 막 시작되었다.JanusGraph와 Gremlin은 아직 많이 있습니다.내가 새로운 것을 배울 때, 나는 이 두 방면에 관한 더 많은 정보를 발표할 것이다.그러니 흥미가 있다면 이 공간에 주의하세요.
만약 당신이 이곳이나 나의 personal 또는 Medium 블로그에서 본 내용을 좋아하고 장래에 이런 유용한 기술 게시물을 더 많이 보고 싶다면 PatreonGithub에서 나를 지지하는 것을 고려해 주십시오.

좋은 웹페이지 즐겨찾기