Ano, můžete použít SOLR jako databázi, ale existuje několik opravdu vážných upozornění:
-
Nejběžnější přístupový vzor SOLR, který je přes http, nereaguje zvláště dobře na dávkové dotazování. Navíc SOLR NEstreamuje data --- takže nemůžete líně procházet miliony záznamů najednou. To znamená, že při navrhování vzorů přístupu k datům ve velkém měřítku pomocí SOLR musíte být velmi ohleduplní.
-
Ačkoli se výkon SOLR škáluje horizontálně (více strojů, více jader atd..) i vertikálně (více RAM, lepší stroje atd.), jeho možnosti dotazování jsou ve srovnání s vyspělými RDBMS značně omezené . To znamená, že existují některé vynikající funkce, jako jsou dotazy na statistiky polí, které jsou docela pohodlné.
-
Vývojáři, kteří jsou zvyklí používat relační databáze, často narazí na problémy, když použijí stejné návrhové vzory DAO v paradigmatu SOLR, kvůli způsobu, jakým SOLR používá filtry v dotazech. Pro vývoj správného přístupu k sestavení aplikace, která používá SOLR pro část svých velkých dotazů nebo stavových úprav, proběhne křivka učení .
-
"Podnikové" nástroje, které umožňují pokročilou správu relací a stavové entity, které nabízí mnoho pokročilých webových rámců (Ruby, Hibernate, ...), budou muset být zcela vyhozeny z okna .
-
Relační databáze se mají zabývat komplexními daty a vztahy – a jsou proto doprovázeny nejmodernějšími metrikami a automatizovanými analytickými nástroji. V SOLR jsem zjistil, že píšu takové nástroje a hodně manuálně testuji zátěž, což může být zdlouhavé .
-
Spojení:to je velký zabiják. Relační databáze podporují metody pro vytváření a optimalizaci pohledů a dotazů, které spojují n-tice na základě jednoduchých predikátů. V SOLR neexistují žádné robustní metody pro spojování dat napříč indexy.
-
Odolnost:Pro vysokou dostupnost používá SolrCloud pod sebou distribuovaný souborový systém (tj. HCFS). Tento model je zcela odlišný od modelu relační databáze, která obvykle zajišťuje odolnost pomocí slave a master nebo RAID a tak dále. Takže musíte být připraveni poskytnout infrastrukturu odolnosti, kterou SOLR vyžaduje, pokud chcete, aby byla cloud škálovatelná a odolná.
To znamená, že SOLR má pro určité úkoly spoustu zjevných výhod:(viz http://wiki. apache.org/solr/WhyUseSolr ) -- volné dotazy se spouštějí mnohem snadněji a vracejí smysluplné výsledky. Indexování se provádí standardně, takže většina libovolných dotazů běží docela efektivně (na rozdíl od RDBMS, kde musíte často optimalizovat a denormalizovat až poté).
Závěr: I když MŮŽETE používat SOLR jako RDBMS, můžete zjistit (jako já), že nakonec neexistuje „žádný oběd zdarma“ – a úspora nákladů na super skvělé lucene textové vyhledávání a vysoce výkonné indexování v paměti, jsou často placeny menší flexibilitou a přijetím nových pracovních postupů pro přístup k datům.