1

シナリオは次のようになります。

という 1 つのノードを作成しますcounter node。初期値は 0 で、ユーザーが自分の Web サイトでアカウントを作成すると増加します。

したがって、これを操作するには 3 つの操作があります。

counter node値の読み取り
php でいくつかのロジックを実行します。ここではカウンタノードの前の値に +1 のように カウンタノード
の新しい値を書き込みます

問題は、2 人以上のユーザーがまったく同じ時間に来て、そのような状態を作り出している場合です。

最初のユーザーがカウンター node に新しい値を書き込む前に、2 番目のユーザーによって読み取られています。したがって、これにより、「カウンターノード」の値が不安定な状態になります。

あなたが私が意味したことを理解したと思います..

解決策はありますか??

私はneo4j 1.9.5とphpを使用しています

Phpジャデル:

https://github.com/jadell/Neo4jPHP </p>

バッチ処理について聞いたことがありますが、それが機能するかどうかはわかりません。解決策があれば、短い例を教えてください。

ありがとうアミット・アガルワル

4

2 に答える 2

0

Neo4j 2.0 には必須のトランザクションがあります。トランザクションでcounter プロパティをインクリメントnoOfUsersした場合、同時実行の問題に役立つと思います。

考えただけですが、最初に質問があります。カウンターの目的は何ですか? ユーザー ID を割り当てるためのものですか、それとも厳密に情報を提供するためのものですか? 後者の場合、正確な数が必要ですか? たとえば、Twitter や Facebook のユーザーの総数が必要な場合、数が少しずれていても問題になるでしょうか? カウントが正確である必要がない場合 (または特定の時点で正確である必要がない場合)、定期的なプロセスを実行して、次のようにユーザー ノードの数を返すことができます。

MATCH n:User
return count(*)

これは、削除されたノードの処理にも役立ちます。

于 2013-08-26T19:15:43.127 に答える