JSONB'ye Her Şeyi Koymak
Şema ertelemek şemayı silmez

İlk gerekçe doğruydu: seyrek, şekli değişen ayarlar. Üç ay sonra metadata->>'locale' ile filtre, metadata->'tags' ile join taklidi, metadata->>'price' ile sıralama vardı. Hepsi text. Hepsi index isteyince GIN + üç expression btree birikti.
-- locale her satırda var, kolon olmalı
ALTER TABLE posts ADD COLUMN locale text;
UPDATE posts SET locale = metadata->>'locale' WHERE locale IS NULL;
-- tags çoktan çoğa; JSON dizi FK kabul etmez
-- post_tags (post_id, tag_id) ayrı tablo
CREATE INDEX posts_metadata_gin ON posts USING gin (metadata);
GIN, var/yok ve containment için duruyor. Eşitlik ve sıralama için kolon. Fiyatı JSONB'de bırakmak, numeric karşılaştırmayı string'e çevirmek. Çıkardım. JSONB'de kalan: düzenleyiciye özel, sorgulanmayan taslak bayrakları. Her şeyi koymak, şemayı ertelemek değil; şemayı gömmek.
Yorumlar
Yorumlar (0)
Yorumlar üyelere açık. Üye ol · Giriş yap