내 레거시 데이터베이스 (Postgres 9.1)에는 다양한 종류의 문서가 들어있는 여러 개의 테이블이 있습니다 ('부모'테이블이라고 가정 해 봅시다). 갱신 된 데이터 모델에서 hstore를 사용해야합니까?
create table params (
kind integer,
docid integer,
parname text,
parvalue text,
constraint params_pk primary key (kind, docid, parname));
많은
(parname, parvalue)가있을 수 있습니다 하나 개의 문서에 대한쌍 : 또한,이 문서에 대한 다양한 매개 변수가있는 테이블이 있습니다.
종류은 다른 테이블을 가리키며 외래 키로 사용할 수 없습니다.
매개 변수은 문서 인쇄용으로 만 사용되었습니다. 이제이 테이블에는 5 백만 개의 행이 포함되어 있으며 다른 목적으로도 데이터가 필요합니다. 그래서이 모델을 갱신해야 할 때가 왔습니다.
기본적으로 매개 변수은 문서에 대해 한 번 삽입되며 거의 업데이트되지 않습니다. 그것들은 전체적으로 읽혀질 것입니다 (문서 용). 특정 을 검색 할 필요가 없습니다.
변형의 A. 분할 테이블의 부모 테이블에 외국 키로 DOCID를 사용에 따라 여러 테이블에 PARAMS :
나는 세 가지 아이디어가 있습니다.
변형 된 B. 분할 테이블 A의 변형으로서 PARAMS 및 (parname, parvalue) hstore 같은 저장한다.
변형 C 12. 모든 부모 테이블에 hstore 필드를 추가하고 추가 테이블을 잊어 버리십시오.
나는 hstore에 대한 경험이 없습니다. 각 변형의 죄수 및 찬성은 무엇입니까? 어느 것을 선택 하시겠습니까? hstore는 이상한 무엇인가 나를 당황시킬 수 있습니까?
완료! 현재 개발 환경. 내가 기대할 수있는 것보다 쉬웠다. 시간을 절약 할 수있는 코드를 위해 klin을 모두 주셔서 감사합니다! –