1

これは、私が作業していないコードに関する質問ではなく、問題を解決する方法についてのガイダンスを探しています。あなたがよく知っているプログラミング言語またはスクリプト言語があれば、この問題をどのように解決しますか?

夜間にリモート システムから取得される JSON オブジェクトと、その JSON オブジェクト内のデータを追跡する MySQL データベースの 2 つのデータ セットが提供されます。JSON オブジェクトには数百のレコードが含まれる場合があり、データベースはそれらの個々のレコードをすべて追跡し、それらのレコードへの変更も追跡します。JSON オブジェクト内のレコードの順序も変更されることがあります。各レコードには、JSON オブジェクトと MySQL データベースの両方で関連付けられた UID があります。

ただし、場合によっては、このリモート システムでレコードが削除されることがあります。JSON は、オブジェクトで削除済みまたは非アクティブとしてマークすることによって、この削除を反映しません。代わりに、このレコードは単に欠落しています。

JSONオブジェクト内のレコードの順序が夜ごとに変わる可能性があるという事実を考慮して、不足しているレコードがあることを検出する最良の方法と、正確にどのレコードが不足しているかを検出する最良の方法は何ですか?

編集

誰かが私にアプリケーションとは何かと尋ねました。私は大学でソフトウェア開発者をしています。生徒のスケジュール データ (JSON) の夜間ダンプを受け取ります。スケジュール データの変更を追跡し、生徒にスケジュールの変更を通知したい。

MySQL データベースは、これまでスケジュールに含まれていたすべてのイベントの記録を保持しており、現在、約 10,000 レコードの大きさです。

編集 2

基本的に、マスター データベースが与えられ、それをそのデータベースのサブセットと比較して、サブセットにないアイテムを探しています。

4

3 に答える 3

1

最良の方法は、いくつかのアーチを変更することだと思います)

これが不可能な場合は、次のクエリを使用できます

UPDATE...WHERE UID NOT IN (UIDS のリスト)

長いリスト、長いクエリですが、それほど遅くはありません (UID でインデックスを作成していますか?)

追加: また、最新の json (または UID のみ) を保存して、データベース更新前の新しいものと比較し、差分を収集して MYSQL に適用することもできます。

于 2013-10-08T17:47:36.720 に答える
1

おそらく、次のような単純なワークフローから始めるでしょう。

  1. json をループしてアクティブな UID を収集する
  2. を使用してmysqlからワーキングセットを取得しますwhere ID in(...)
  3. ワーキング セットをループして違いを探し、変更を適用する
  4. を使用して新しく削除されたレコードをマークする
    set Removed = 1 where ID not in(...) and Removed = 0
于 2013-10-08T17:57:10.827 に答える