2011-12-28 9 views
1

気象情報を含むPostgres 9.1データベースがあります。データセットは約310万行から構成されます。postgresデータベースをバルクリフレッシュする方法

CSVファイルからデータをロードするのに約2分かかりますが、多列インデックスを作成するには少し時間がかかります。

6時間ごとにデータセットを完全に更新する必要があります。私の現在の考えは、新しいデータセットを "weather_imported"などの別のデータベース名にインポートすることです。インポートとインデックスの作成が完了したら、元のデータベースを削除し、インポートしたデータベースの名前を変更します。

理論上、クライアントはこの操作中にデータベースにクエリを続行しますが、悪影響がある場合は、クライアントが静かにいくつかのエラーを無視するように調整できます。

質問:

  1. その戦略は動作しますか?

  2. クライアントがDBの落下時にクエリを実行しているの 過程にあることが起こった場合、私の仮定は、クエリが が終了されるまでデータベースがドロップを完了しないでしょう である - 本当?

  3. DBが削除されてから名前が変更されるまでにクエリが発生した場合はどうなりますか?私は "データベースが見つかりません"と仮定します エラー。

  4. より良い戦略はありますか?

答えて

0

代替として、次の戦略を考えてみましょう:

  • を主テーブルに「データセットバージョン」フィールドを含めます。
  • "現在のデータセットバージョン"をいくつかの中央の場所に格納し、現在のデータセットバージョンを持つ行のみを検索するよう選択します。
  • データセットを更新するには
    1. すべてのデータを新しいデータセットバージョンで挿入します。 (更新ジョブの開始時刻をバージョンとして使用することができます)
    2. 「現在のデータセットのバージョン」を、挿入したばかりの値にアトミックに更新します。
    3. 挿入したばかりのバージョン番号より古いバージョンのデータはすべて削除してください。

プレスト - 周りのデータベースをシャッフルする必要はありません。

+0

ハハよりも簡単です。ダー。 – wadesworld

関連する問題