-
Neo4j: 그래프 데이터베이스 시작 (Graph)컴퓨터 2024. 4. 1. 21:32728x90반응형
Neo4j Desktop 을 이용해 간단하게 서버를 열고 db를 만든다.
사실 위치 데이터만 갖고 있는 필드들이라 관계가 필요 없는데 Neo4j spatial 과 mysql spatial을
비교해보기 위해 사용하였다.
우선 MySQL에서 데이터를 불러오기 위해, json으로 필드들을 저장했다.
그리고 Neo4j 에서 DB 선택 후 우측 APOC 플러그인을 설치한다.
그리고 로컬 import 폴더에서 파일을 불러오기 위해
여기 설정에서 import에 json 파일을 넣고, configuration에서 apoc.conf 만들고 아래를 입력 후 저장한다.
apoc.import.file.enabled=true
이제 Neo4j Browser로 열어서 커맨드를 입력한다.
불러오면서 노드로 추가하면 된다.
CALL apoc.load.json("file:///markers.json") YIELD value CREATE (:Marker { markerId: value.markerId, latitude: value.latitude, longitude: value.longitude })
markerId 는 유니크를 하고 싶었고,
CREATE CONSTRAINT markerId_unique IF NOT EXISTS FOR (m:Marker) REQUIRE m.markerId IS UNIQUE
모든 노드 보기
MATCH (m:Marker) RETURN m
근처 노드 찾기 (10km)
WITH point({latitude: 37.5681660, longitude: 126.974102}) AS referencePoint MATCH (m:Marker) WHERE point.distance(point({latitude: m.latitude, longitude: m.longitude}), referencePoint) < 10000 RETURN m.markerId, m.latitude, m.longitude
첫 반응은 45ms 정도로 (0.045초) MySQL과 비슷하게 나왔지만,
이후 위치 포인트를 바꿔도 (point로 지정해서 spatial 인덱싱을 한 듯) 결과가 10ms 안에 전부 나왔다.
728x90'컴퓨터' 카테고리의 다른 글
K6/JMeter로 WebSocket 성능 테스트 해보기 (nginx 로드 밸런서) (0) 2023.12.21 AWS EC2 가비아 HTTPS 도메인 503 (1) 2023.12.05 Github Action 로컬에서 돌리기 (running GA locally) (0) 2023.11.05