2011-12-28 8 views
1

날씨 정보가 포함 된 Postgres 9.1 데이터베이스가 있습니다. 데이터 세트는 약 310 만 행으로 구성됩니다.postgres 데이터베이스를 대량 갱신하는 방법

CSV 파일에서 데이터를로드하는 데 약 2 분이 소요되며 여러 열 인덱스를 만드는 데는 약간의 시간이 걸립니다.

매 6 시간마다 데이터 세트를 완전히 새로 고침해야합니다. 내 생각에 새로운 데이터 세트를 "weather_imported"와 같은 다른 데이터베이스 이름으로 가져오고 가져 오기 및 색인 작성이 완료되면 원래 데이터베이스를 삭제하고 가져온 데이터베이스의 이름을 바꿉니다.

이론적으로 클라이언트는이 작업 중에 데이터베이스에 계속 쿼리를 보내지 만 부작용이있는 경우 클라이언트가 자동으로 몇 가지 오류를 무시하도록 조치 할 수 있습니다.

질문 :

  1. 것이다 전략 사용할 수 있습니까? 사실 -

  2. 클라이언트가 DB 드롭시에 쿼리를 실행의 과정에서 우연히 경우

    , 내 가정은 데이터베이스가 이 완료 된 쿼리 할 때까지 드롭을 완료 할 것 입니까?

  3. DB를 삭제하고 이름을 바꿀 때 쿼리가 발생하면 어떻게됩니까? "데이터베이스를 찾을 수 없습니다"라고 가정합니다. 오류.

  4. 더 나은 전략이 있습니까?

답변

0

는 대안으로 다음과 같은 전략을 고려

  • 는 기본 테이블에서 "데이터 세트 버전"필드를 포함합니다.
  • 일부 중앙 위치에 "현재 데이터 집합 버전"을 저장하고 현재 데이터 집합 버전이있는 행만 검색하도록 선택 항목을 작성합니다.
  • 데이터 세트를 업데이트하려면
    1. 모든 데이터를 새로운 데이터 세트 버전으로 삽입하십시오. (업데이트 작업의 시작 시간을 버전으로 사용할 수 있습니다.)
    2. "현재 데이터 세트 버전"을 방금 삽입 한 값으로 원자 적으로 업데이트하십시오.
    3. 방금 ​​삽입 한 버전 번호보다 오래된 버전으로 모든 데이터를 삭제하십시오.

프레스토 - 주변의 데이터베이스를 셔플 필요가 없습니다.

+0

하 ... 더 간단합니다. 이봐. – wadesworld

관련 문제