Janusgraph 기능 및 미래

Aug 25 2020

현재 작업중인 프로젝트는 Neo4j 커뮤니티를 사용합니다. 현재 우리는 5 ~ 2 천만 개의 가장자리가있는 1 ~ 5 백만 개의 정점을 처리하지만 50 ~ 1 천만 개의 가장자리가있는 10 ~ 2 천만 개의 정점을 처리하는 것을 목표로합니다. 우리는 이러한 비율로 확장 할 수있는 그래프 데이터베이스 오픈 소스 프로젝트로 전환하는 아이디어를 논의하고 있습니다. 현재 우리의 마음은 카산드라와 함께 Janusgraph에 설정되어 있습니다.

Janusgraph의 기능과 개발에 대해 몇 가지 질문이 있습니다. 누군가 답변 해 주시면 기쁩니다! (아마 Misha Brukman 또는 Aaron Ploetz일까요?)

Janusgraph 기능 :

  • 자바 프로그램을 통해 실행되는 쿼리 인 Janusgraph 즉시 사용할 수있는 도커 이미지를 사용하여 몇 가지 실험을 수행했습니다. Java 프로그램과 Docker 이미지는 동일한 시스템에서 실행됩니다. 50k-100k 가장자리가 삽입 된 10k-20k 정점의 크기에서 give 속성을 소유 한 모든 정점에 대한 쿼리는 8-10 초가 걸립니다 (평균 10 개의 동일한 쿼리에 대한 시간, Java 프로그램의 명령 전후에 경과 한 시간). ). 명령 자체는 정말 간단합니다.

    g.V().has("secText", "some text").inE().outV();

    또한 더 많은 레코드를 삽입하려고하면 (10 만 정점으로 확장) 도커 이미지가 깨지는 것 같습니다.

    Docker 이미지의 제한된 특성 때문인지, 문제가 있는지 아니면 정상인지 궁금합니다. 어쨌든 정말, 정말 느린 것 같습니다.

  • 우리는 마을에 Janusgraph를 사용하여 2 개의 노드 Cassandra 클러스터 (2 개의 다른 VM에)를 설정했지만 결과는 상당히 느 렸습니다.

  • 내가 인터넷에서 읽은 내용을 보면 사람들은 프로덕션에서 수백만 개의 정점이있는 Janusgraph 배포를 사용하는 것처럼 보이므로 밀리 초 내에 간단한 쿼리를 실행할 수 있다고 생각합니다. 거기에 비밀이 무엇입니까? 모든 것이 올바르게 수행 되려면 128GB의 RAM이 필요합니까? 아니면 내가 알지 못하는 모범 사례를 따라야 할 가이드가 있습니까? 나는 Janusgraph 공식 문서와 여기와 같은 포럼의 사용자 의견을 사용하여 최선을 다했지만 그다지 두렵지 않습니다 : /

Janusgraph 미래에 :

  • Janusgraph는 처음 몇 년 동안 (2016-2018과 같이) 매우 빠르게 진화하는 것처럼 보였지만 지난 몇 달 동안 Janusgraph 커뮤니티에서 몇 달 전 버전 0.5의 릴리스를 제외하고는 많은 활동을 보지 못했습니다. 예를 들어, 작년 이후 회의가 없습니다. 그래서 저는 궁금합니다. Janusgraph는 올바른 길을 가고 있으며 앞으로 몇 년 동안 유지 될 것입니다. COVID로 인해 상황이 약간 느려졌습니까? 아니면 문제가 있습니까?
  • Janusgraph에서 이전 버전과의 호환성을 고려합니까? 문서에서 읽을 수있는 것에서 많은 것이 버전 0.2 / 0.3에서 0.4 및 0.5로 변경되었습니다. 예를 들어 많은 사람들이 Cassandra Thrift와 같이 나오고 임베디드는 더 이상 사용되지 않습니다. 따라서 매년 버전을 업데이트 할 여유가없는 프로덕션 환경에서 일부 구성 요소가 더 이상 사용되지 않는 경우 코드 수정을 제쳐두고 Janusgraph 개발자는 조만간 이전 버전과의 호환성을 달성 할 것이라고 생각합니까, 아니면 여전히 기다려야할까요? 1.0 버전을 위해?

이 모든 것을 읽어 주셔서 감사합니다. 여러분이 나에게 줄 수있는 모든 답변을 기대하고 있습니다.

Mael

답변

BradSchoening Aug 25 2020 at 10:42

Cassandra가 포함 된 JanusGraph는 스토리지 계층에 설계 제한이있어 성능이 저하됩니다. 실제로 Cassandra의 복제 및 중복 이점을 제공하는 크고 확장 가능하지만 느린 그래프 데이터베이스입니다.

Cassandra는 데이터를 분할하고 클러스터 전체에 데이터를 무작위로 배포하는 데 매우 능숙하지만, 이로 인해 순회를 빠르고 효율적으로 만드는 데 필요한 데이터 지역성이 파괴됩니다. JanusGraph는 또한 Cassandra 외에도 여러 백엔드 스토리지 옵션을 지원하므로 특정 스토리지 아키텍처에 엄격하게 조정되지 않았습니다.

메모리가 차이를 만들 수 있으므로 각 노드에서 JVM에 할당 한 메모리 양을 확인하고 G1GC를 사용하고 스왑을 비활성화하십시오. VisualVM은 메모리 여유 공간을 프로파일 링하는 데 유용합니다.