Jsou databáze orientované na dokumenty vyvinuty tak, aby byly příští generací databází a v podstatě zcela nahradily relační databáze?
Ne. Databáze orientované na dokumenty (jako MongoDB) jsou velmi dobré v typu úloh, které obvykle vidíme na moderních webových stránkách (rychlé vyhledávání jednotlivých položek nebo malých sad položek).
Ale dělají velké kompromisy s relačními systémy. Bez věcí, jako je soulad s ACID, nebudou schopny nahradit určité RDBMS. A když se podíváte na systémy jako MongoDB, nedostatek souladu s ACID je velkým důvodem, proč je to tak rychlé.
Je možné, že by pro projekty bylo lepší používat jak dokumentově orientovanou databázi, tak relační databázi vedle sebe pro různá data, která se lépe hodí pro jedno nebo druhé?
Ano. Ve skutečnosti provozuji velmi velký produkční web, který využívá obojí. Systém byl spuštěn v MySQL, ale část jsme převedli na MongoDB, b/c potřebujeme úložiště Key-Value a MySQL prostě není moc dobré při hledání jedné položky ve 150 milionech záznamů.
Pokud dokumentově orientované databáze nemají nahradit relační databáze, má někdo příklad struktury databáze, která by byla absolutně lepší v relační databázi (nebo naopak)?
Dokumentově orientované databáze jsou skvělé pro ukládání dat, která jsou snadno obsažena ve vztazích „klíč-hodnota“ a jednoduchých lineárních vztazích „rodič-dítě“. Zde jsou jednoduché příklady věcí jako Blogy a Wiki.
Nicméně relační databáze stále mají pevnou nohu ve věcech, jako je zpravodajství, které má tendenci být založeno na množinách.
Upřímně, vidím svět, kde většinu dat „zpracovává“ databáze orientovaná na dokumenty, ale kde se hlášení provádí v relační databázi, která je aktualizována úlohami Map-reduce.