사용자가 편집 할 수있는 콘텐츠가 포함 된 웹 프로젝트를 진행 중이며 데이터베이스에있는 실제 콘텐츠의 버전 추적을 수행하고 싶습니다. 기본적으로 위키 스타일 변경 기록을 구현하고 싶습니다.
몇 가지 배경 조사를 통해 데이터베이스 스키마의 버전을 관리하는 방법에 대한 많은 문서를 볼 수 있지만 (실제로 이미 제어되고 있음) 데이터베이스 버전 변경 사항 을 추적하는 방법에 대한 기존의 전략은 적어도 스키마 버전 관리 작업에서 눈에 띄지 않습니다. 내 검색에서.
내 변경 추적을 구현하는 몇 가지 방법을 생각할 수 있지만 모두 다소 거친 것처럼 보입니다.
- 각 변경 사항에 전체 행을 저장하고 기본 키를 사용하여 행을 소스 ID와 다시 관련시킵니다 (현재 내가 기대하는 것, 가장 간단합니다). 그러나 많은 작은 변화는 많은 테이블 팽창을 일으킬 수 있습니다.
- 변경 사항을 관련 열과 다시 관련시키기 위해 열 이름과 함께 각 변경 전 / 후 / 사용자 / 타임 스탬프를 저장하십시오.
- 각 열에 대한 테이블로 이전 / 이후 / 사용자 / 타임 스탬프를 저장하십시오 (너무 많은 테이블이 생성 될 수 있음).
- 각 변경 사항에 대해 diffs / user / timestamp를 열로 저장하십시오 (이는 특정 날짜로 돌아가려면 전체 개입 변경 히스토리를 걸어야 함을 의미합니다).
가장 좋은 방법은 무엇입니까? 내 자신을 굴리는 것은 아마도 다른 사람 (더 나은) 코드베이스를 재발 명하는 것처럼 보입니다.
PostgreSQL의 보너스 포인트.