개발자

neo4j로 데이터 가져올 때 속도가 너무 느려요

2월 21일조회 46

neo4j 를 도입해 연관성을 찾는 작업을 하고 있어요 데이터가 얼마 없을 경우 문제가 없었지만 현 기준 노드 200만개 관계 6000만 건 으로 한번 검출 할 때 속도가 너무 느려서요 그래서 apoc를 도입을 했고요 메모리, heap 등 용량도 늘려줬습니다. 쿼리도 MATCH (first:Keyword {name: '마우스'}) CALL apoc.path.expand(first, 'RELATED_TO', 'Keyword', 1, 6 ) YIELD path WHERE ANY(n IN nodes(path) WHERE n.name = '게이밍마우스') RETURN path LIMIT 500; 이렇게 apoc와 LIMIT를 적용 했고요 추가로 profile을 찍어보니 한번 검사를 할 경우 500만~1억 번 노드를 조회를 하고 있어요 방법이 없을까요? ps. 데이터는 아직 1%만 쌓였습니다

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 2

포크코딩님의 프로필 사진

옛날에 접했던거라 기억이 흐릿한데 neo4j도 인덱싱이 있을겁니다. 노드랑 관계에 인덱싱 설정하고 인덱스 기반 검색을 진행해 보세요. ps. mz한 그래프 데이터베이스(멀티 패러다임 DB) 추천 (SurrealDB: https://surrealdb.com/)

NickSoon님의 프로필 사진

NickSoon

작성자

스타트업 개발자2월 23일

감사합니다 찾아봐야겠어요

CP님의 프로필 사진

Keyword 노드의 name 필드에 인덱스는 걸려있겠죠? 마찬가지로 관련 있는 노드에서도 name 필드로 필터링 하게 되는데 그 노드들도 전부 name 인덱스가 있는게 좋아보입니다. apoc.path.expand 함수 최대 깊이가 6으로 설정되어 있는데 이렇게까지 필요한가 한번 고민해보시고 가능하다면 최대 깊이를 조정해보면서 성능 다시 확인해보시고, 6뎁스까지 꼭 있어야 유의미한 검색이 된다 하면.. path를 단축시킬 수 있는 새로운 관계를 찾아보는 것도 방법일 것 같습니다

NickSoon님의 프로필 사진

NickSoon

작성자

스타트업 개발자2월 25일

감사합니다 path를 단축을 할 수 있는지 찾아봐야겠네요 지금 연관이 1개이다 보니 단순하게 path의 깊이를 탐색하고 있었습니다

CP님의 프로필 사진

CP

백엔드 to AI 개발자2월 25일

네 새롭게 정의할 수 있는 관계를 찾아보거나 (graphDB 스러운 방식) 아니면 name 말고도 검색 scope를 줄일 수 있는 필드 (카테고리라던가) 를 추가해보는 것도 방법일 것 같습니다 (일반적인 DB 방식)

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!