이 단계에서 가능한 최소한의 가정 (웹 앱이 실제로 어떻게 진화하는지에 대한 가정)으로 데이터베이스 디자인을 결정하려고합니다.
JOINS가 비싸다는 것을 이해하는 첫 번째 단계로, 표준화 된 작은 테이블이 아닌 소수의 모 놀리 식 테이블을 고려하고 있습니다. 두 번째 요점으로 hstore 대 일반 테이블 대 JSONB (GiST 색인 사용)를 사용하는 것이 혼란 스럽습니다.
AFAIK (자유롭게 수정하십시오) :
일반적으로 Postgres에서 hstore는 다른 데이터 유형보다 성능이 우수한 것으로 알려져 있습니다. FOSDEM PGDAY의 프레젠테이션에는 흥미로운 통계가 있습니다 (슬라이드 후반). https://wiki.postgresql.org/images/b/b4/Pg-as-nosql-pgday-fosdem-2013.pdf
hstore의 장점은 빠른 인덱싱 (GiN 또는 GiST)입니다. 그러나 JSONB를 사용하면 GiN 및 GiST 인덱싱을 JSON 데이터에도 적용 할 수 있습니다.
2 사분면에서 전문에서이 블로그는 (끝까지 스크롤) "이 시점에서 모든 새로운 애플리케이션에 jsonb와 hstore 사용을 대체 아마 가치"라고 : http://blog.2ndquadrant.com/postgresql-anti-patterns-unnecessary -jsonhstore- 동적 열 /
따라서 다음을 결정하고 싶습니다.
- 데이터의 주요 (구조화 된) 부분 : 몇 개의 관계형 테이블 (상대적으로 열이 많음)에 두어야합니까, 아니면 hstore를 사용하는 여러 키-값 저장소 여야합니까?
- 임시 (사용자 제공 / 구조화되지 않은) 데이터의 경우 hstore의 JSON 또는 임시 키 값 저장소에 있어야합니까 (주 관계형 테이블 중 하나에 키가 저장된 상태)?
JSON(B)
과hstore
(와 EAV) 알 수없는 구조를 가진 데이터에 좋다.