↓Přeskočit na hlavní obsah

NoSQL hype skončil. Default je Postgres

·2 min
NoSQL hype skončil. Default je Postgres

Kolem roku 2010 se půlka IT světa rozhodla, že relační databáze jsou mrtvé. Google, Amazon a Facebook publikovali, jak škálují na stovky milionů uživatelů, a najednou všichni chtěli “web scale”. Vznikly MongoDB, Cassandra, CouchDB a JSON dokumenty bez schématu vypadaly jako budoucnost.

O pár let později Google sám přešel z Bigtable na Spanner. Distribuované SQL se silnou konzistencí.

Většina firem totiž “web scale” nikdy nepotřebovala. Hardware mezitím zrychlil a zlevnil - NVMe disky, stovky GB RAM, desítky jader. Jeden pořádný Postgres s replikou dnes utáhne drtivou většinu aplikací, které firmy reálně provozují.

“Schemaless” v praxi znamená, že schéma máte rozházené v kódu aplikace a nikdo ho nevynucuje. Po pár letech je v jedné kolekci pět verzí stejného dokumentu. A data jsou stejně relační - zákazník, objednávka, faktura. Dřív nebo později potřebujete JOIN nebo transakci a programátor to pak lepí v aplikaci, pomalu a s chybami. Kyle Kingsbury navíc svými Jepsen testy ukázal, že řada distribuovaných databází při výpadku sítě ztrácí data, i když marketing sliboval opak.

Mezitím se obě strany potkaly. Postgres od verze 9.4 ukládá a indexuje JSON, MongoDB má od verze 4.0 transakce. Hlavní argument “potřebuju ukládat dokumenty” tím z velké části odpadl.

NoSQL má svoje místo: Redis na cache a fronty, Elasticsearch na fulltext a logy, Cassandra tam, kde zapisujete obří objemy dat. Teď se celý příběh opakuje s vektorovými databázemi pro AI - a pgvector v Postgresu většině firem zase stačí.

Výchozí volba je proto Postgres. Specializovanou databázi přidejte, až máte konkrétní problém, který Postgres prokazatelně neřeší. Ne proto, že je zrovna v módě.

Jak vybírat technologie podle reálné potřeby a neplatit za módní vlny, rozepisuju v newsletteru “Sám sobě ajťákem”. Chodí zhruba jednou měsíčně, žádné výplňové e-maily. martinkonicek.eu/newsletter/