2010-03-26 2 views
1

여러 머신에서 실행중인 자동화 테스트 스위트를 구축 중입니다. 모두 자동으로 postgresql 데이터베이스에 상태를보고합니다. 우리는 다음과 같은 정보가 저장됩니다있는 자동화 된 테스트의 숫자 실행됩니다 :자동화 테스트 결과를 저장하기위한 PostgreSQL 테이블

  • 테스트 ID (GUID를)
  • 테스트 이름을
  • 테스트 설명
  • 상태 (완료, 실행에 대기 시험의
  • 종료 시간) 시험의
  • 진행 (%)
  • 시작 시간을 실행할 수
  • 테스트 결과 (30 초마다 업데이트) 실행중인 테스트

이 테스트의 수는 큰되지 않습니다 (몇 수천 말)와 각 시스템 (예를 들어, 그 중 50)의

  • 최신 스크린 샷은 서비스를
  • 데이터베이스를 검사하고 해당 시스템에서 새로운 자동 테스트를 시작할 시간인지를 파악합니다.

    모든 정보를 저장하려면 SQL 테이블을 어떻게 구성해야합니까? 속성마다 열이있는 단일 테이블이 있습니까?

    나중에 속성을 추가해야하지만 이전 데이터베이스 형식과의 호환성을 유지하려는 경우 (예 : 더 많은 열이있는 새 테이블을 삭제하고 새로 만들지는 않을 수도 있음) 어떻게 진행해야합니까? 새로운 속성이 다른 테이블에 있어야합니까?

    나는 또한 데이터베이스를 복제하려고합니다. 실패한 경우, 최신 스크린 샷이 슬레이브 데이터베이스에 백업되지 않았는지 상관하지 않습니다. 복제를 단순화하기 위해 자체 스크린에 스크린 샷을 저장해야합니까? 당신이

    INSERT INTO TABLE (Col1, Col2,..) VALUES (1, 2, ...) 
    

    처럼 삽입 목록에서 열을 지정하면 나중에 열을 추가하는 경우

    답변

    0

    단일 테이블이 좋을 것입니다.

    중복 데이터가있는 경우 (예 : 테스트 상태 등) 자신의 작은 테이블로 데이터를 분할 할 수 있습니다 (따라서 "합격"대신 1 또는 2를 저장 "" 실패 "상태 테이블에 참여할 수 있음).

    열을 추가하면 큰 문제가되지 않습니다.이전 버전과의 호환성을 유지하려면 항상 다음과 같이 열 이름을 사용해야합니다.

    select cola, colb, colc from table... 
    
    insert into table(cola, colb, colc) values ('x', 'y', 'z') 
    

    물론 새 열에 null을 허용해야합니다.

    수천 개의 행이 포스트그레스에 아무 것도 없습니다.

    0

    이 잘 될 것입니다. 유일한 문제는 열 제거를 시작한 경우 일 수 있습니다.

    이미 열을 지정 했으므로 업데이트해야합니다.

    궁극적으로는 속성 테이블로 시작할 수 있지만 명시 적 열 유형을 잃어 버리면 테이블에서 선택하는 것이 주요 편의 및 성능 혼란이 될 것입니다.

    그래서 테이블을 생성 한 다음 삽입 할 때 열 이름을 지정했는지 확인한 다음 테이블 구조를 변경 (새 열 추가)하면 설정하지 않으면 문제가되지 않습니다. null가 아닌 경우, 디폴트 값을 지정해야 할 수도 있습니다.