2013-08-26 1 views
1

그럼 시나리오는 다음과 같이이다 : Neo4j 및 PHP는 핸들 카운터는

내가 counter node라는 하나 개의 노드를 만듭니다. 초기 값은 0이며 사용자가 내 웹 사이트에서 계정을 만들 때 증가합니다.

그래서 세 가지 작업이 운영하는 일이 있습니다 :
는 PHP에서 몇 가지 논리를 수행

읽기 counter node 값. 여기에 카운터 노드의 이전 값으로 하나처럼

이제 카운터 노드의 새로운 값을 쓰기 문제, 둘 이상의 사용자가 정확히 같은 시간을오고 이러한 조건을 만드는 경우 그

첫 번째 사용자 쓰기 전에 새로운 값을 카운터 노드에 보내면 두 번째 사용자가이를 읽습니다. 따라서 이것은 내 '카운터 노드'의 가치를 불안정한 상태로 남겨 둡니다.

희망이 있으신가요?

Any Solution ??

내가 neo4j 1.9.5과 PHP

빌 Jadell을 사용하고 있습니다 :

https://github.com/jadell/Neo4jPHP

나는 일괄 처리 들어 있지만 작동 여부를 확인하지. 어떤 해결책이라도 있으면 간단한 예를 들어 주시겠습니까?

감사합니다. Amit Aggarwal

답변

1

순수 REST API로는이를 수행 할 수 없습니다. 나는 어쩌면 뭔가처럼, 사이퍼와 함께 노력할 것이라고 :

START n=node(123) 
SET n.noOfUsers = n.noOfUsers + 1 
RETURN n.noOfUsers 

http://console.neo4j.org/?id=tnkldf

+1

안녕하세요 조쉬, 글쎄, 내가 왜 이것을 때때로 그렇지 않으면 정확한 숫자를 업데이 트하는지 모르겠다. 다음은 코드입니다 https://gist.github.com/0xvoila/6349357 – voila

0

Neo4j 2.0 필수 트랜잭션을 가지고 사이퍼 의 최신 버전에서 작동합니다. 트랜잭션에서 카운터 등록 정보 noOfUsers을 증가 시키면 동시성 문제에 도움이 될 것이라고 생각합니다.

그냥 생각하지만 먼저 질문 : 카운터의 목적은 무엇입니까? 그것은 사용자 ID를 할당하는 것입니까, 아니면 엄격하게 정보입니까? 후자의 경우 정확히 계산해야합니까? 예를 들어 트위터 또는 페이 스북 사용자의 총 수를 원한다면 몇 명이 줄었다면 중요할까요? 이것은 또한 당신이 거래를 도움이 될

MATCH n:User 
return count(*) 

: 카운트 (시간에 특정 인스턴스 또는 정확한) 정확히 할 필요가없는 경우와 같이, 사용자 노드의 수를 반환하는주기적인 프로세스를 실행할 수 삭제 된 노드.

+0

Hello David, 그 목적은 userIds를 생성하는 것입니다. 그래서 어떤 불일치가 큰 문제로 착륙 할 수 있습니다 .. :(.. – voila