PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Защо Solr е много по-бърз от Postgres?

Първо, Solr не използва B-дървета. Индексът на Lucene (основната библиотека, използвана от Solr) е съставен от сегменти . За всеки сегмент Lucene поддържа терминологичен речник, който се състои от списък с термини, които се появяват в сегмента, лексикографски сортирани. Търсенето на термин в този терминологичен речник се извършва чрез двоично търсене, така че цената на търсене с един термин е O(log(t)) където t е броят на членовете. Напротив, използването на индекса на стандартна RDBMS струва O(log(d)) където d е броят на документите. Когато много документи споделят една и съща стойност за дадено поле, това може да бъде голяма победа.

Освен това комитерът на Lucene Uwe Schindler добави поддръжка за много производителен заявки за числов диапазон преди няколко години. За всяка стойност на числово поле , Lucene съхранява няколко стойности с различна точност. Това позволява на Lucene да изпълнява заявки за обхват много ефективно. Тъй като вашият случай на използване изглежда използва много заявки за числови диапазони, това може да обясни защо Solr е много по-бърз. (За повече информация прочетете javadocs, които са много интересни и дават връзки към подходящи научни статии.)

Но Solr може да направи това само защото няма всички ограничения, които RDBMS има. Например, Solr е много лош при актуализирането на един документ наведнъж (предпочита пакетните актуализации).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изберете повече от 1 запис на ден?

  2. Динамично изпълнение на заявки в PL/pgSQL

  3. Liquibase + Postgresql + Spring Jpa:Проблем с автоматично нарастване на идентификатора

  4. org.postgresql.util.PSQLException:Опитът за свързване е неуспешен

  5. PostgreSQL конвертира името на месеца в число