2014-10-15 4 views
0

사용자의 뉴스 피드를 가져 오기 위해 그래픽 시스템을 만들려고합니다.Neo4j, Cypher : Graphity System

사용자는 해당 사용자의 ID을 저장하는 Ego 관계로 친구와 연결됩니다. 하지만 Neo4j는 노드가 삭제되면 노드의 ID를 재사용한다는 것을 알게되었습니다.

그래프 시스템을 만들고 Ego 관계를 추적하는 다른 방법이 있습니까? user id을 저장하지 마십시오. relationship 대신 Ego 노드를 만들면 뉴스 피드를 순회하는 것이 쉬워집니다.

예를 들어이

MATCH (u:User), (f:User) 
WHERE ID(u)=4084079 AND ID(f)=4105710 
MATCH (x1)-[r1:Ego{user_id:ID(u)}]->(f)-[r2:Ego{user_id:ID(u)}]->(x2) 
FOREACH (s IN CASE WHEN r1 IS NULL THEN [] ELSE [r1] END | 
    FOREACH (t IN CASE WHEN r2 IS NULL THEN [] ELSE [r2] END | 
    CREATE (x1)-[:Ego{user_id:ID(u)}]->(x2) 
    DELETE s, t 
    ) 
) 
WITH u, f 
MATCH (u)-[r:Follow]->(f) 
DELETE r 

답변

1

은 아마 당신은 또한 외부 사용자 ID를 저장할 수 있습니다 후 매장 하나에 대한 사용자 ID를 확인 사용자에게 팔로우를 취소 할 수있는 쿼리는 무엇입니까?

그렇지 않으면 id를 통해 조회하지 말고 user-id를 사용하십시오.

+0

흠, 당신의 요점이 있습니다. 그러나 속성을 ID로 사용하면 예기치 않은 방식으로 RAM 사용량이 증가 할 수 있다는 우려가 있습니다. 이것으로 인해 발생하지 않으면 사용자가 삭제되지 않으므로이 문제를 해결할 수 있습니다. 사실이 질문은 http://stackoverflow.com/questions/26344479/neo4j-server-consuming-ram-excessively/26345908?noredirect=1#comment41413719_26345908 http://stackoverflow.com/questions/에 대한 확장 26189351/neo4j-server-clear-the-cache-in-ram 이유는 아직 나에게 미해결입니다. –