TakéProduktový katalog, PIM katalog, Katalog zbožíPokročilý
Definice
Katalog produktů je strukturovaná databáze zboží a služeb e-shopu, která pro každou položku drží identifikátory, názvy, popisy, parametry, varianty, ceny, dostupnost a obrázky. Katalog produktů tvoří jádro elektronického obchodu: z něj čerpají výpisy kategorií, vyhledávání, filtry, objednávkový proces i exporty do srovnávačů a reklamních systémů.
Co katalog produktů obsahuje
Katalog produktů se skládá z několika vrstev dat, které se často pletou dohromady. První vrstvou je identita položky: SKU nebo interní kód, EAN či GTIN, značka a zařazení do kategorií. Druhou vrstvou je marketingový obsah: název, krátký i dlouhý popis, obrázky a videa. Třetí vrstvou jsou strukturované parametry (barva, velikost, materiál, výkon), podle kterých se staví filtrace. Čtvrtou vrstvou jsou obchodní údaje: cena, měna, sazba DPH, skladová dostupnost a dodací lhůta.
Produkt versus varianta
Nejčastější zdroj potíží v datovém modelu je vztah nadřazeného produktu a jeho variant. Tričko je jeden produkt, ale prodává se ve dvanácti kombinacích barvy a velikosti, přičemž každá kombinace má vlastní SKU, cenu a stav skladu. Když se varianty modelují jako samostatné produkty, rozpadne se stránka produktu i vyhledávání; když se naopak nemodelují vůbec, nelze korektně skladovat ani expedovat. Osvědčený model drží společný obsah na rodiči a rozlišovací parametry plus zásoby na potomcích.
Proč se katalog rozjíždí s výkonem
Výpis kategorie s filtry je dotaz nad mnoha atributy najednou, a právě tady katalog nejčastěji zpomalí. Relační model typu entita-atribut-hodnota je pružný, ale filtrace přes něj znamená mnoho spojení tabulek. Praxe proto obvykle kombinuje transakční databázi jako zdroj pravdy s odděleným vyhledávacím indexem, do kterého se katalog denormalizuje. Připomeňme, že denormalizace jde přímo proti pravidlům, která popisuje normalizace databáze: je to vědomý kompromis mezi konzistencí zápisu a rychlostí čtení.
Kudy katalog opouští e-shop
Katalog zřídka žije jen uvnitř obchodu. Ven odchází třemi kanály: jako feed produktů do srovnávačů a reklamních systémů, jako strukturovaná data ve formátu schema.org Product přímo v HTML stránky produktu, a jako API pro mobilní aplikaci, pokladní systém nebo marketplace. Každý kanál má vlastní požadavky na povinná pole, takže katalog musí být dostatečně bohatý na to, aby z něj šlo odvodit všechny výstupy bez ručního dopisování.
Datová kvalita jako provozní téma
Chybějící EAN, prázdný popis nebo obrázek v malém rozlišení nejsou kosmetická vada. Reklamní systémy takové položky odmítají, vyhledávače je hůř zařazují a zákazník je nenajde ve filtru. Větší provozy proto nad katalogem měří pokrytí atributů a blokují publikaci položek pod stanovenou hranicí úplnosti.
Kdy nasadit PIM
Samostatný systém pro správu produktových informací dává smysl, jakmile data vznikají na více místech současně: nákup dodává ceny, marketing texty, sklad dostupnost a firma prodává ve více jazycích nebo zemích. PIM se pak stává zdrojem pravdy a e-shop jen konzumentem. Pro jeden obchod s několika stovkami položek je vlastní PIM zbytečná režie a stačí katalog uvnitř e-shopové platformy.
Příklady z praxe
Datový model produktu s variantami
Obchod s oblečením drží společný obsah na rodičovském produktu a skladové položky na variantách. Každá varianta má vlastní SKU a zásobu, ale sdílí popis i galerii. Objednávka odkazuje vždy na variantu, nikdy na rodiče, jinak by sklad nevěděl, co má vyskladnit.
CREATE TABLE product ( id bigserial PRIMARY KEY, slug text UNIQUE NOT NULL, name text NOT NULL, description text, brand_id bigint REFERENCES brand(id) ); CREATE TABLE product_variant ( id bigserial PRIMARY KEY, product_id bigint NOT NULL REFERENCES product(id) ON DELETE CASCADE, sku text UNIQUE NOT NULL, ean text, price_cents integer NOT NULL, stock_qty integer NOT NULL DEFAULT 0, attributes jsonb NOT NULL DEFAULT '{}'::jsonb ); CREATE INDEX ON product_variant USING gin (attributes);Strukturovaná data na stránce produktu
Stránka produktu vystaví údaje z katalogu i strojově, aby vyhledávače mohly zobrazit cenu a dostupnost. Pokud se hodnota v JSON-LD rozejde s cenou vykreslenou na stránce, jde o nesoulad, který vyhledávače penalizují. Generovat proto oba výstupy z jednoho zdroje.
{ "@context": "https://schema.org", "@type": "Product", "name": "Běžecká bunda Alpine", "sku": "ALP-JKT-M-BLK", "gtin13": "8594001234567", "brand": { "@type": "Brand", "name": "Alpine" }, "offers": { "@type": "Offer", "price": "2490", "priceCurrency": "CZK", "availability": "https://schema.org/InStock" } }
Časté omyly
- MýtusKatalog produktů je prostě tabulka zboží, tu si nadefinuju za odpoledne.
- Ve skutečnostiKatalog musí současně zvládnout varianty, vícejazyčnost, ceníky pro různé skupiny zákazníků, historii cen a rozdílné požadavky exportních kanálů. Právě tyhle rozměry rozhodují o tom, jestli se e-shop dá po roce rozšířit, nebo se přepisuje.
- MýtusFulltext ve vyhledávacím enginu nahradí databázi katalogu.
- Ve skutečnostiVyhledávací index je odvozená kopie optimalizovaná pro čtení a nemá transakční záruky. Zdrojem pravdy pro ceny a zásoby zůstává databáze, index se z ní jen průběžně naplňuje.
- MýtusPopisy stačí zkopírovat od dodavatele, jsou přece správné.
- Ve skutečnostiIdentické texty sdílí desítky e-shopů, takže se stránka obtížně odlišuje ve vyhledávání a chybí v nich parametry potřebné pro filtry. Vlastní strukturované atributy mají větší hodnotu než převzatý odstavec.
Časté dotazy
- Jak velký katalog produktů zvládne běžná relační databáze?
- Relační databáze typu PostgreSQL zvládne stovky tisíc až miliony položek bez potíží, pokud jsou dotazy dobře indexované. Problém obvykle nedělá počet řádků, ale kombinace filtrů nad mnoha volitelnými atributy a řazení podle relevance. Jakmile výpis kategorie potřebuje deset spojení tabulek a fasetové počty u každého filtru, vyplatí se katalog denormalizovat do vyhledávacího indexu a databázi nechat jako zdroj pravdy pro objednávky a zásoby.
- Kdy se vyplatí oddělit PIM od e-shopové platformy?
- Oddělený PIM se vyplatí tehdy, když produktová data vznikají v několika odděleních nebo systémech, prodává se ve více jazycích a zemích, případně přes více prodejních kanálů současně. PIM pak drží jednu verzi pravdy, řeší schvalovací proces a překlady a do e-shopu i marketplace posílá hotová data. U jednoho obchodu s několika stovkami položek a jedním jazykem je samostatný PIM zbytečná vrstva navíc, kterou musí někdo provozovat a synchronizovat.
- Jak řešit v katalogu produktů více ceníků a měn?
- Cena nepatří jako jediné číslo přímo k variantě, jakmile existují velkoobchodní skupiny, akce nebo více zemí. Osvědčený model zavádí samostatnou tabulku cen s vazbou na variantu, ceníkovou skupinu, měnu a časovou platnost. Aplikace pak při zobrazení vybírá nejkonkrétnější platný záznam. Tenhle model navíc umožňuje připravit budoucí akci dopředu a zpětně doložit, za jakou cenu se položka v daný den prodávala, což je užitečné při reklamacích i kontrolách.
- Co dělat s produkty, které se přestaly prodávat?
- Vyřazené položky se z katalogu nemažou. Historické objednávky na ně odkazují, stránky mohou mít zpětné odkazy a návštěvnost z vyhledávačů. Doporučený postup je označit položku jako neaktivní, skrýt ji z výpisů a exportů, ale stránku ponechat dostupnou s informací o nedostupnosti a odkazem na alternativu. Pokud produkt nahradil nástupce, dává smysl trvalé přesměrování. Úplné smazání záznamu z databáze vede k nekonzistentním objednávkám a ztrátě reportingu.
Zdroje
- Product(otevře se v novém okně)
- Product structured data(otevře se v novém okně)
- JSON Types(otevře se v novém okně)