2012-01-09 16 views
0

異なるレコードが異なるオブジェクトに格納されています。 8つのオブジェクトがあり、各オブジェクトにそのオブジェクトに固有のレコードがいくつかあるとします。 各オブジェクトには、変更可能な属性を持つ100万レコードが含まれています。今度はすべてのレコードを同期しようとしています。 初期アプローチ: 各オブジェクトを別々にロックして(一度に1つずつ)、他のオブジェクトのレコードを読み取って要求を処理できるようにし、内部のレコードを同期させます。レコードの属性の同期アルゴリズム

リクエスト処理を最大限にし、オブジェクトロックの時間を短縮できる方法はありますか?だから、

+0

多分あなたはオブジェクトの変更を追跡できますか?そうであれば、変更を確認するだけです。 – duedl0r

答えて

0

レコードがどのような方法でsort()することができた場合、レコードのセットをIEは半順序集合である、そしてセットが指定されたとの項目を見つけることがO(log)を取るBST(Binary Search Tree)、に整理することができますキー。

したがって、オブジェクトのすべてのレコードについて、他のすべてのオブジェクトでそのレコードを見つけて更新します。

N個(N = 8)のオブジェクトがあり、それぞれにM(M = 1,000,000)個のレコードがあります。全体のアルゴリズムは、確かに受け入れられるO(N*N*M*Log(M))となります。

Btw、すべてのものがデータベースにある場合は、列挙して更新するだけです。

+0

異なるオブジェクトレコードにレコードを同期させる必要はありません。それぞれのオブジェクトには一意です。 尋ねるの主な目的は、オブジェクトをロックする時間を減らすことができますか、または何らかの重要な要求を遅滞なく処理できる方法です。 – gold

+0

私はプロセス全体が四半期で完了できることを意味するので、変更を適用するときにプロセスをロックすることができます。そうでなければ、私は知らない – Topro

関連する問題