Když nepotřebuji horizontální škálování (a eshop pro střední evropu nic takového nepotřebuje), tak nemám důvod používat NoSQL (když umím SQL).
Myslím si, že v tomhle případě argument obracíte tak, aby seděl do vašeho vidění světa.
Velmi snadno můžete říct "Proč použít SQL databázi, když zákazník, objednávka i produkt jsou vlastně jen objekty/dokumenty."
NoSQL databáze velmi snadno obslouží většinu webových projektů, troufnu si říct, že i s úsporou 2/3 času programátora.
Jistě, pokud používáte věci jako NHibernate ... tak můžete použít SQL databázi. Jenže NHibernate je jen "rovnák na ohýbák", tedy vytváří z SQL databáze NoSQL databázi
A co si budeme povídat, NHibernate je oblíbené právě proto, že spousta lidí chce udělat z SQL databáze NoSQL databázi.
Když si MongoDB zkusíte, zjistíte - alespoň v C# - že se používá snáz a příjemněji než NHibernate a to s velmi podobným výsledkem. Samozřejmě, o nějakém výkonu nemůže být řeč, ale překvapivě velké množství projektů není na rychlost citlivých.
Neberte mě prosím příliš vážně, ale zkuste nad tím popřemýšlet, jestli na tom vlastně není kousek pravdy.
Ano - relační databáze s NHibernete může být stejně pomalá jako Mongo. Ale vaše argumentace je zcestná. Co není objektem, co není dokumentem? Samozřejmě, že můžete použít NoSQL databázi i na účetnictví (ale s ACIDem to bude pomalé, bez ACIDu nezabepečené) , a upíšete se, až budete psát reporty, a navíc vaše aplikace bude šnek - nebo to budete muset honit železem. SQL je jazyk na psaní reportů, na práci s daty. Proč bych měl používat Javascript, který je navržený aby handloval alert, když píšu report.
Uložit data je jednoduché. Na to vám stačí NoSQL databáze - na to mi stačí memcache. Ale pracovat s daty je komplikovanější, a když chcete výsledek nad miliónem řádků do pár vteřin, tak to musíte udělat dobře - nebo musíte horizontálně škálovat - a to vás stojí licence, železo - ono dobré železo na AWSku není zadarmo, a je rozdíl jestli platíte 10 serverů nebo 100 serverů.
Pravda je jen jedna. Ale každý můžeme mít svůj názor :-).
Ono je někdy nemožné odlišit příčinnu a důsledek - MySQL mělo pomalé JOINy (protože to byla primitivní jednoduchá databáze a její autor je bastlíř), jejím uživatelům to bylo jedno, protože stejně neuměli joinovat a vůbec netušili jak a proč joinovat, a joiny nepoužívali, a potom autoři MySQL nebyli nuceni implementovat JOINY. Kruh se uzavřel - v rámci komunity ok. Problém byl, že uživatelé MySQL začali propagovat názor, že JOIN je špatně, protože je pomalý, ... ale nevěděli, že to platí pouze pro MySQL.
Dost lidí se trápí s relačními databázemi, a pak vidíte, že jejich aplikace je debilně navržená, proti samotným principům relačních db. Drtivá většina eshopů, které jsem viděl jsou ukázkou jak se to dělat nemá. A pak dostanou do ruky NoSQL a jsou šťastní. Problém je, že vědí málo, jak o relačních db, tak i o NoSQL. Ale samozřejmě, že mají názor.
Každá technologie by se měla posuzovat objektivně - je to jenom technologie - a ten kdo ji posuzuje, by měl mít znalosti, nikoliv názor nebo jen zkušenost. Názory i zkušenosti jsou subjektivní. V IT chybí znalosti - zatím v IT převládají zkušenosti - tohle mi fungovalo, tohle mi nefungovalo, ale jen málokdo dokáže říct, proč něco funguje a proč něco nefunguje.