Możesz podesłać linka? Z chęcią bym przeczytał, bo również jestem na tym etapie.
Z Mongo korzystamy w jednym z projektów, gdzie pobieramy i analizujemy dane dotyczące nieruchomości oraz tzw. “contractors” (podwykonawców wszelkiego typu). Mongo spisuje się tam świetnie dzięki swoim atrybutom (możwliość szybkiego i dowolnego kształtowania dokumentów, agregacje, sharding etc).
Oczywiście moglibyśmy użyć SQLowej bazy i mongo (a może bardziej Mongoid/Moped) mają swoje wady (np. uparliśmy się by przechowywać dokumenty jako embedded objects a nie osobne kolekcje), ale naszym zdaniem Mongo jest bardzo fajne w takim zastosowaniu (tzn. gdzie dane traktowane są jako dokument i mogą być tak zapisane).
Apropos, wczoraj został naprawiony błąd w Mongo, który (mam nadzieję) poprawy zapisywanie dokumentów o zagnieżdżeniu większym niż 1.
Każde narzędzie ma swoje przeznaczenie. Ja akurat skorzystałem z Mongo jako datastore przy write-once danych z integracji z obcym systemem. Nie ma schematu i dane nie idą w kosmos jeśli są niekompletne/nadmiarowe/padnie transakcja.
Następnie w osobnym procesie takie dane są obrabiane i wrzucane do relacyjnej bazy, to co nie jest poprawne idzie do “kolejki” reklamacyjnej jako dowód w sprawie niekompetencji strony trzeciej :). W przyszłości przy rozbudowie aplikacji można przejechać jeszcze raz po starych danych z Mongo i uzupełnić relacje.
Ale uwaga, dziś można mieć SQL i NOSQL w jednym, czyli ACID+SQL+JSON(B) w świetnym wykonaniu PostgreSQL 9.4+ : http://lwn.net/Articles/599705/ . Korzystam i polecam!
Nie nazywałbym hstore rozwiązaniem NoSQL, schema free to jednak za mało.
BTW jeżeli jesteśmy przy skalowalnych wysoko dostępnych bazach danych - Amazon pokazał swoją bazę RDS Aurora kompatybilną z MySQL - https://aws.amazon.com/rds/aurora/ .
Bo samo określenie NoSQL to taki nowomodny buzzshit, BerkleyDB był już dużo wcześniej w tym duchu bez szumu. SQL jest niby be bo nieskalowalny, a tu co nagle? Z RDSem świetny przykład dałeś, dzięki! Teraz nosqle przebijają się na funkcjonalność swoich QLi. Ha, nie mogę się doczekać JOINów w Mongo, już widzę tę rzeszę wyznawców w uniesieniu. Koło się toczy
Wracając do tematów, HSTORE ma trochę więcej niż się wydaje, warto się nad tym pochylić http://www.postgresql.org/docs/9.4/static/hstore.html . Przetestowane na produkcji.
Obawiam się że się trochę zagalopowałeś, RDS Aurora to niewątpliwie fajna sprawa ale olbrzymiego ruchu raczej nie utrzyma ( chyba że mówimy tylko o odczytach ).
Na joiny w mongo też bym nie liczył, architektura mocno to utrudnia. Ale zawsze można to zrobić w zapytaniu map reduce w zależności od potrzeb.
To był raczej sarkazm niż galop. Co do RDS, to “raczej” ani marketing Amazona do mnie nie przemawia, już widziałem kolapsy i surprisy najróżniejszych technologii w swoim życiu, przekonają mnie tylko twarde dane RDS wpadło na moją listę do perftestów. Mam nadzieję że przy ich budżecie to tylko interfejs MySQL jako warstwa kompatybiności a pod spodem mają cos na miarę Google Spannera
Z tymi joinami to oczywiście też żart, choć kto wie… narazie tak jak piszesz map-reduce lub hash join+prefetch po stronie aplikacji… Od BDB już to przerabiałem, tylko inny marketing - nosql w praktyce = implementujesz na tym pełnego DBMSa albo synchronizujesz się z bazką OLTP/OLAP. Życie.