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ů.

Kategorie: E-commerceAktualizováno

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

  1. 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);
  2. 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

  1. Product(otevře se v novém okně)Schema.org
  2. Product structured data(otevře se v novém okně)Google Search Central
  3. JSON Types(otevře se v novém okně)PostgreSQL Global Development Group

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.