Neo4j은 매우 견고한 그래프 DB이며 유연한 (조금 복잡한 경우) 라이센스가 있습니다. Blueprints API를 구현하며 PHP를 비롯한 모든 언어에서 사용하기가 쉽습니다. 그것은 또한 REST API을 가지고 있습니다. 이것은 얻을 수있는만큼 융통성이 있으며, 적어도 PHP에서는 one good example이 사용됩니다.
보유하고있는 데이터에 따라 데이터를 저장하는 방법에는 여러 가지가 있습니다.
포인트가 이미 특정 경로를 통해 서로 연결되어있는 (즉, 한 지점에서 다른 지점으로 직접 이동할 수없는) "경로"데이터가있는 경우 각 지점을 노드로 만들고 경로상의 점 사이에있는 연결은 노드 사이의 가장자리이며 해당 가장자리의 속성으로 거리가 있습니다. 이렇게하면 고전적인 "여행 세일즈맨"처럼 보이는 그래프를 얻을 수 있으며 노드 간의 거리를 계산하는 것은 가중치가있는 폭 우선 검색을 수행하는 것입니다 (최단 경로를 원한다고 가정).
데이터 세트가있는 곳으로 이동하려는 경우 그래프가 fully connected입니다. 분명히 이것은 많은 양의 데이터이고 더 많은 목적지를 추가 할 때 2 차적으로 커지지만 관계형 DB보다 그래프 DB가 더 잘 처리 할 것입니다. 거리를 저장하려면 그래프에 노드를 추가 할 때 노드의 속성 중 하나로서 미리 계산 된 거리를 사용하여 기존 노드 각각에 가장자리를 추가합니다. 그런 다음 한 쌍의 노드 사이의 거리를 검색하려면 두 노드 사이의 가장자리를 찾고 거리 속성을 가져옵니다. 당신이 완전히 연결된 노드의 큰 수있는 경우
그러나, 당신은 아마 그 노드의 좌표를 저장하고 필요에 따라-의 거리를 계산하고, 선택적으로 일을 가속화하는 결과를 캐싱 더 나을 것 . 당신이 Gremlin 및 Rexter 같은 청사진 API와 그 스택의 다른 도구를 사용하는 경우
마지막으로, 당신은 당신이 다른 구현 함께 놀러 수/아웃 어떤 호환 그래프 데이터베이스에서 교환 할 수 있어야 을 Cassandra/Hadoop 클러스터 상단에 사용하는 등 더 나은 서비스를 제공 할 수 있습니다.
PostGIS –
이를 위해 MySQL에서 이동해야합니다. –
현재 MySQL을 사용하고있는 PostgreSQL에 응용 프로그램을 포팅해야한다는 것을 의미합니다. –