Bu aşamada, veritabanı tasarımına karar vermeye çalışıyorum (web uygulamasının gerçekte nasıl geliştiği).
İlk adım olarak, JOINS'in pahalı olduğunu anlamak, çok sayıda normalize edilmiş küçük masanın aksine az sayıda monolitik masayı düşünüyorum. İkinci bir nokta olarak, hstore ile normal tabloları vs JSONB (GiST indeksleme ile) kullanmak arasında kafam karışık.
AFAIK (düzeltmek için çekinmeyin):
Genellikle Postgres'te hstore'un diğer veri türlerinden daha iyi performans gösterdiği bilinmektedir. FOSDEM PGDAY'ın bu sunumunda bazı ilginç istatistikler var (slaytların ikinci yarısında). https://wiki.postgresql.org/images/b/b4/Pg-as-nosql-pgday-fosdem-2013.pdf
Hstore ile bir avantaj hızlı indeksleme (GiN veya GiST). Bununla birlikte, JSONB ile, JSON verilerine GiN ve GiST indekslemesi de uygulanabilir.
2. Çeyrek'teki bir profesyonelden gelen bu blog "Bu noktada muhtemelen tüm yeni uygulamalarda hstore kullanımını jsonb ile değiştirmeye değer" ( http://blog.2ndquadrant.com/postgresql-anti-patterns-unnecessary) -jsonhstore devingen sütun /
Bu yüzden aşağıdakilere karar vermek istiyorum:
- Verilerin ana (yapılandırılmış) kısmı için: Birkaç ilişkisel tabloya mı girmeli (birçok sütunla nispeten büyük) veya hstore'u kullanan bir kaç anahtar-değer depoda mı olmalı?
- Özel (kullanıcı katkısı yapılmış / yapılandırılmamış) verileri için, hstore'da JSON'da mı yoksa geçici anahtar değeri depolarında mı (ana ilişkisel tablolardan birinde saklanan anahtarlarla) olmalıdır?
JSON(B)
vehstore
(ve EAV) bilinmeyen bir yapıya sahip veriler için iyidir.