Ja, u kunt SOLR als database gebruiken, maar er zijn enkele serieuze kanttekeningen:
-
SOLR's meest voorkomende toegangspatroon, dat over http gaat, reageert niet bijzonder goed op batchquery's. Bovendien streamt SOLR GEEN gegevens --- dus u kunt niet lui miljoenen records tegelijk doorlopen. Dit betekent dat je heel goed moet nadenken wanneer je grootschalige datatoegangspatronen ontwerpt met SOLR.
-
Hoewel SOLR-prestaties zowel horizontaal (meer machines, meer cores, enz..) als verticaal (meer RAM, betere machines, enz.) schalen, zijn de querymogelijkheden ernstig beperkt in vergelijking met die van een volwassen RDBMS . Dat gezegd hebbende, er zijn enkele uitstekende functies, zoals de veldstatistieken, die best handig zijn.
-
Ontwikkelaars die gewend zijn om relationele databases te gebruiken, zullen vaak problemen tegenkomen wanneer ze dezelfde DAO-ontwerppatronen gebruiken in een SOLR-paradigma, vanwege de manier waarop SOLR filters gebruikt in query's. Er zal een leercurve zijn voor het ontwikkelen van de juiste aanpak voor het bouwen van een applicatie die SOLR gebruikt voor een deel van zijn grote zoekopdrachten of statefull-aanpassingen .
-
De "enterprisy"-tools die geavanceerd sessiebeheer en statefull-entiteiten mogelijk maken die veel geavanceerde webframeworks (Ruby, Hibernate, ...) bieden, zullen volledig uit het raam moeten worden gegooid .
-
Relationele databases zijn bedoeld om met complexe gegevens en relaties om te gaan - en ze gaan dus vergezeld van state-of-the-art metrische gegevens en geautomatiseerde analysetools. In SOLR heb ik gemerkt dat ik dergelijke tools schrijf en veel handmatig stresstesten, wat een tijdrovende klus kan zijn .
-
Meedoen:dit is de grote moordenaar. Relationele databases ondersteunen methoden voor het bouwen en optimaliseren van weergaven en query's die tupels samenvoegen op basis van eenvoudige predikaten. In SOLR zijn er geen robuuste methoden om gegevens over indices samen te voegen.
-
Veerkracht:voor hoge beschikbaarheid gebruikt SolrCloud een gedistribueerd bestandssysteem eronder (d.w.z. HCFS). Dit model is heel anders dan dat van een relationele database, die meestal veerkrachtig is met behulp van slaves en masters, of RAID, enzovoort. U moet dus klaar zijn om de veerkrachtige infrastructuur te bieden die SOLR vereist als u wilt dat deze schaalbaar en resistent in de cloud is.
Dat gezegd hebbende - er zijn tal van duidelijke voordelen voor SOLR voor bepaalde taken:(zie http://wiki. apache.org/solr/WhyUseSolr ) -- losse zoekopdrachten zijn veel gemakkelijker uit te voeren en leveren zinvolle resultaten op. Indexeren wordt standaard gedaan, dus de meeste willekeurige zoekopdrachten worden behoorlijk effectief uitgevoerd (in tegenstelling tot een RDBMS, waar je vaak achteraf moet optimaliseren en de-normaliseren).
Conclusie: Ook al kun je SOLR als een RDBMS gebruiken, je zult (zoals ik heb) ontdekken dat er uiteindelijk "geen gratis lunch" is - en de kostenbesparingen van supercoole lucene-tekstzoekopdrachten en krachtige, in-memory indexering, worden vaak betaald door minder flexibiliteit en acceptatie van nieuwe workflows voor gegevenstoegang.