- PR -

タイムスタンプがないデータの差分抽出について

1
投稿者投稿内容
虎ノ門
常連さん
会議室デビュー日: 2006/10/11
投稿数: 22
お住まい・勤務地: 埼玉県
投稿日時: 2006-10-12 10:34
あるシステムのデータ移行で、ちょいと困った問題があります。

システムの切替日に全データを一括して移行できればよいのですが、
データが大量にあるためサービス停止の許容時間3時間以内で、
全データを移行するのは不可能です。
そこで、特に大きなデータを5日前に移行しておき、その後、切替日
までの間、差分だけを毎日移行したいと考えました。
ところが、そのデータにタイムスタンプや更新日時を表す項目がない
ことが判明し「差分が取れないじゃないか!」となり...

ここで質問です。
SQL Serverでタイムスタンプや更新日時を表す項目がない場合、
ある時点から現時点までの間に追加・更新されたデータだけを抽出する
ことは可能でしょうか。(CSVで出力)
ご存知でしたら教えて下さい。

正直言って「無理だろ・・・」と思っていますが、あまり詳しくないので、
お尋ねする次第です。宜しくお願い致します。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-10-12 11:53
5日前に移行したデータをDBにインポート。プライマリキーを比較して、5日前のデータに含まれていないデータを抽出すれば良いです。・・・けど、素直に全データをインポート&エクスポートするほうが早い予感。

なので、そのほかの方法を・・・

1.トランザクションログを利用してデータベースをインポートする。もちろん新旧のサーバーのトランザクションログに互換性がある事が前提ですけど。

2.レプリケーションの機能を使って、切替日前から同じ状態に保っておく。もちろん旧データベースがレプリケーションに対応しているのが前提ですけど。

3.ストアドプロシージャを登録して、データに対して行われた操作をCSVファイルなどに出力する。もしかしたら、旧データベースのパフォーマンスが著しく低下するかも。

4.十分な停止時間を確保できる日まで、切り替え日を伸ばす。もしかしたら、永遠に切り替えできないかも。
虎ノ門
常連さん
会議室デビュー日: 2006/10/11
投稿数: 22
お住まい・勤務地: 埼玉県
投稿日時: 2006-10-12 13:33
甕星さま、ご指導ありがとうございます。

>5日前に移行したデータをDBにインポート。プライマリキーを比較して、
>5日前のデータに含まれていないデータを抽出すれば良いです。・・・
>けど、素直に全データをインポート&エクスポートするほうが早い予感。

  → 同感です。

>1.トランザクションログを利用してデータベースをインポートする。
>もちろん新旧のサーバーのトランザクションログに互換性がある事が前提ですけど。

  → 調査検討してみます。(実現性あり)

>2.レプリケーションの機能を使って、切替日前から同じ状態に保っておく。
>もちろん旧データベースがレプリケーションに対応しているのが前提ですけど。

  → 調査検討してみます。(実現性低い)

>3.ストアドプロシージャを登録して、データに対して行われた操作をCSVファイル
>などに出力する。
>もしかしたら、旧データベースのパフォーマンスが著しく低下するかも。

  → 直感的にこれは難しいと思われます。(旧DB負荷大)

>十分な停止時間を確保できる日まで、切り替え日を伸ばす。

  → 停止時間は3時間以内 ・・・ これは上層部からの御達し。
    現実的には6時間まではOKかなと。・・・

 ありがとうございました。
 
oracle
常連さん
会議室デビュー日: 2003/12/04
投稿数: 29
お住まい・勤務地: さいたま
投稿日時: 2006-10-12 14:12
差分バックアップを使用してしまうというのはどうでしょう?

一旦全データバックアップを取得する
移行先にnorecoveryで復元
翌日後、差分バックアップを取得
移行先にnorecoveryで復元
。。。。。。。(繰り返し)
最終日、差分バックアップを取得
移行先にrecoveryで復元

未テストなのでなんともいえませんが、途中の日で移行先がDownしたり
DatabaseのServiceが停止したとき、どうなるかが、ちょっと不明です。

ちなみに五日前ってのは取り込み時間が、五日かかるってことですか?
どの方法を選択するにしても一日で済むなら、差分の移行も一回(計二回)
で済むとおもいますが、、、






1

スキルアップ/キャリアアップ(JOB@IT)