2012-02-22 1 views
4

큰 테이블 (~ 2 백만 행)이 있는데, 각 행은 하나의 이미지를 나타냅니다. 각 이미지에 대해 JSON 형식으로 EXIF ​​메타 데이터를 저장하려고합니다. 이 JSON blob은 이미지 당 약 6KB입니다.대형 PostgreSQL 테이블 : 메타 데이터를 저장할 열을 추가하거나 새 테이블을 만드는 것이 좋습니다.

이 EXIF ​​메타 데이터는 매우 자주 쿼리되거나 사용되지 않으며 두 개의 열 (imageid, exifjson)이있는 별도의 테이블에 PostgreSQL을 저장하는 것이 훨씬 더 효율적인지 궁금합니다. 이 테이블을 기존 테이블의 text 열로 처리하면됩니다. 필자는 컬럼을 추가하여 테이블에 대한 일반적인 쿼리를 느리게하거나 PostgreSQL을 늪지 (fog)하기 위해 수백만 개의 6KB 텍스트 값을 줄이는 것을 원하지 않습니다.

+0

나머지 행이 blob의 6K보다 작 으면 exif-blob을 별도의 테이블에 넣으면 exif를 사용하지 않는 일반적인 쿼리의 "작업 집합"의 크기가 상당히 작아집니다. 이는 버퍼 공간을보다 효율적으로 활용할 수 있음을 의미합니다. (당신이 필요로하지 않는 것들로 홍수 대신에) – wildplasser

답변

4

는 그 열이 TOAST -ed 만들 것입니다.

ALTER TABLE ... ALTER <column> SET STORAGE <EXTERNAL|EXTENDED>; 
-- EXTERNAL - out-of-line storage, not compression[1] 
-- EXTENDED - both compression and out-of-line storage 

PostgreSQL은 이미 ~ 2kB보다 큰 데이터에 사용하려고합니다.

[1] "사용 된 압축 기술은 압축 기술의 LZ 계열 중에서 상당히 간단하고 매우 빠릅니다."

2

별도의 테이블을 사용하는 것이 더 좋지만 기존 테이블에서는 괜찮습니다. 기존 "select * from"쿼리를 사용하여이 필드를 검색하지 않으면 거의 영향을받지 않습니다.

  • 최대 데이터베이스 크기 무제한
  • 최대 테이블 크기 32 TB
  • 최대 행 크기 1.6 TB
  • 최대 필드 크기 : 거의 무한 임계 값을 가지고 있기 때문에 그리고 당신은 이러한 데이터와 포스트 그레스를 채울 수 없을거야 1기가바이트
  • 250 표 당
  • 최대 열 무제한 테이블 당
  • 최대 행 - 1600
  • 최대 인덱스는 퍼가기 열 유형에 따라 그들은 짧은 컬럼에 대한 신속한 접근을 방해하지 않도록

    매우 긴 값은 배경은 테이블에 저장됩니다 : 다른 열 데이터의 선택시 방해에 대해

http://www.postgresql.org/about/

무제한 R 표 값.

http://www.postgresql.org/docs/current/static/datatype-character.html

+0

고마워. 그게 맞을지 모르겠지만 그걸 뒷받침 할만한 언급이 있니? –

+0

오케이, 거기 있네) –

관련 문제