2017-05-17 5 views
0

私の質問は非常に一般的であり、建築に関してです。データベースに連続したデータフローを挿入する

多くのデータを継続的に受信します(JSON)。これは一秒間に最大30ジョイントになる可能性があります。

情報をディスパッチするためにさまざまなクエリを使用して、それぞれをデータベースに挿入する必要があります。このデータベースは何でもよいが、私はNeo4jを好む。

私が受け取るとすぐに挿入すると、インサートはますます遅くなります。つまり、500個のjsonファイルがあり、200個が挿入されています(db内のインデックスも含めて)。

私はジョブを分けなければならないと思います。データを受け取るスクリプトと、データベースに挿入するスクリプトまたはスレッドを分けてください。

あなたの経験によれば、この場合の最良の方法は何ですか? temporary_jsonファイルは処理待ちのディスクにありますか?

答えて

0

ほとんどの場合、このような一般的なケースでは、答えはです。これはに依存します。これは、例えば、入ってくる各アップデートの大きさ(およびそれを適用するために必要な処理量)に依存します。また、更新が独立しているかどうかによっても異なります(更新の順序は関係しますか?)。たとえば、受信した更新をキュー/受信トレイに収集し、複数のスレッドで非同期に更新を取得し、それらを並列に実行することができます。

実際の使用状況に関する詳細情報は、より詳細な解決策を提供するために必要とされると思います。

ご希望の場合は、トム

+0

ご注文の内容に関係します。これは、同じタイプのオブジェクトに対して「挿入または置換」されます。クエリは常に同じです。 – Jeff

+0

注文が問題でない場合は、複数の非同期スレッド経由で入力を「ファンアウト」してパラレル更新を実行します(ただし、ロックの問題を調べる必要があります)。あなたの入力とバックエンドのNeo4jとの間に、Apache Kafkaのようなものがあります(ちょっとした例ですが、私は好みを表明していません)。 –

関連する問題