Přeskočit obsah

Fulltextové vyhledávání

Moderní transakční databáze nativně podporují fulltextové vyhledávání a to i přesto, že to je z mnoha technických důvodů velmi nevhodné řešení. Databáze by měla být primárně určena k ukládání dat a práci s nimi. U malých projektů obvykle využívání fulltextu v databázi nezpůsobuje problémy, ale pokud projekt vyroste, začnou se rychle objevovat problémy s výkonem. Databáze se na rozdíl od jiných komponent velmi špatně škáluje a zbytečně jí zatěžovat věcmi které dělat vůbec nemá je velmi špatný nápad.

Optimální řešení je offloadnout fulltextové vyhledávání do vyhrazeného engine, který je průběžně naplňován daty. Velmi populární je Elasticsearch, který i přesto, že je napsaný v Javě nabízí mnohem lepší výkonnost při vyhledávání než transakční databáze a navíc je snadno clusterovatelný. Méně známý, ale násobně výkonější než elasticsearch, je Sphinxsearch. Jeho použití je o něco komplikovanější než u elasticu a zatím mu chybí podpora clusterování (pro vysokou dostupnost je možné balancovat přes více samostatných instancí). Složitější implementace se ale u velkých projektů rychle vrátí na ušetřených nákladech díky mnohem lepšímu výkonu.