sql >> Databasteknik >  >> RDS >> Mysql

Att använda Solr sökindex som en databas - är det fel?

Ja, du kan använda SOLR som en databas men det finns några riktigt allvarliga varningar:

  1. SOLR:s vanligaste åtkomstmönster, som är över http svarar inte särskilt bra på batchförfrågningar. Dessutom strömmar SOLR INTE data --- så du kan inte lätt iterera genom miljontals poster åt gången. Detta betyder att du måste vara mycket eftertänksam när du designar storskaliga dataåtkomstmönster med SOLR.

  2. Även om SOLR-prestanda skalas horisontellt (fler maskiner, fler kärnor, etc..) såväl som vertikalt (mer RAM, bättre maskiner, etc.), är dess frågemöjligheter kraftigt begränsade jämfört med en mogen RDBMS . Som sagt, det finns några utmärkta funktioner, som fältstatistikfrågor, som är ganska bekväma.

  3. Utvecklare som är vana vid att använda relationsdatabaser kommer ofta att stöta på problem när de använder samma DAO-designmönster i ett SOLR-paradigm, på grund av hur SOLR använder filter i frågor. Det kommer att finnas en inlärningskurva för att utveckla rätt tillvägagångssätt för att bygga en applikation som använder SOLR för en del av sina stora frågor eller tillståndsändringar .

  4. De "enterprisy"-verktyg som möjliggör avancerad sessionshantering och statefulla enheter som många avancerade webbramverk (Ruby, Hibernate, ...) erbjuder måste kastas helt ut genom fönstret .

  5. Relationsdatabaser är avsedda att hantera komplexa data och relationer - och de åtföljs därför av toppmoderna mätvärden och automatiserade analysverktyg. I SOLR har jag kommit på mig själv att skriva sådana verktyg och manuellt stresstesta mycket, vilket kan vara en tidssänkning .

  6. Gå med:det här är den stora mördaren. Relationsdatabaser stöder metoder för att bygga och optimera vyer och frågor som sammanfogar tupler baserat på enkla predikat. I SOLR finns det inga robusta metoder för att sammanfoga data över index.

  7. Resiliency:För hög tillgänglighet använder SolrCloud ett distribuerat filsystem under (dvs HCFS). Denna modell är helt annorlunda än den för en relationsdatabas, som vanligtvis gör resiliens med slavar och masters, eller RAID, och så vidare. Så du måste vara redo att tillhandahålla den resiliensinfrastruktur som SOLR kräver om du vill att den ska vara molnskalbar och resistent.

Som sagt - det finns många uppenbara fördelar med SOLR för vissa uppgifter:(se http://wiki. apache.org/solr/WhyUseSolr ) -- lösa frågor är mycket lättare att köra och ger meningsfulla resultat. Indexering görs som standard, så de flesta godtyckliga frågor körs ganska effektivt (till skillnad från ett RDBMS, där du ofta måste optimera och avnormalisera i efterhand).

Slutsats: Även om du KAN använda SOLR som ett RDBMS, kanske du upptäcker (som jag har) att det i slutändan finns "ingen gratis lunch" - och kostnadsbesparingarna av supercoola lucene textsökningar och högpresterande indexering i minnet, betalas ofta för mindre flexibilitet och användning av nya arbetsflöden för dataåtkomst.



  1. När valde vi DateTime framför Timestamp

  2. Hur man hittar de databassamlingar som stöds av din SQL Server-instans

  3. Databassäkerhet - Backup-kryptering under transport och i vila

  4. PHP:flera SQL-frågor i en mysql_query-sats