sql >> Databáze >  >> RDS >> PostgreSQL

Proč je Solr o tolik rychlejší než Postgres?

Za prvé, Solr nepoužívá B-stromy. Index Lucene (podkladová knihovna používaná Solrem) je vytvořen z segmenty . Pro každý segment spravuje Lucene slovník termínů, který se skládá ze seznamu termínů, které se objevují v segmentu, lexikograficky seřazených. Vyhledávání výrazu v tomto slovníku výrazů se provádí pomocí binárního vyhledávání, takže cena vyhledávání jednoho výrazu je O(log(t)) kde t je počet členů. Naopak, použití indexu standardního RDBMS stojí O(log(d)) kde d je počet dokumentů. Když mnoho dokumentů sdílí stejnou hodnotu pro některé pole, může to být velká výhra.

Komisař z Lucene Uwe Schindler navíc přidal podporu pro velmi výkonný dotazy na číselný rozsah Před několika lety. Pro každou hodnotu číselné pole , Lucene ukládá několik hodnot s různou přesností. To umožňuje Lucene spouštět dotazy na rozsah velmi efektivně. Protože se zdá, že váš případ použití hodně využívá dotazy na číselný rozsah, může to vysvětlit, proč je Solr mnohem rychlejší. (Pro více informací si přečtěte javadocs, které jsou velmi zajímavé a poskytují odkazy na relevantní výzkumné práce.)

Ale Solr to může udělat jen proto, že nemá všechna omezení, která má RDBMS. Například Solr je velmi špatný v aktualizaci jednoho dokumentu najednou (preferuje dávkové aktualizace).



  1. Uložte více obrázků do mysql php z Androidu, ale vloží se pouze jeden obrázek

  2. vzdálené připojení k mysql

  3. PostgreSql:Získání podivného časového razítka s časovým pásmem

  4. VYPOČÍTAT PROCENTO V SQL podle skupiny