PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mengapa Solr jauh lebih cepat daripada Postgres?

Pertama, Solr tidak menggunakan B-tree. Indeks Lucene (pustaka dasar yang digunakan oleh Solr) terbuat dari segmen . Untuk setiap segmen, Lucene memelihara kamus istilah, yang terdiri dari daftar istilah yang muncul di segmen, diurutkan secara leksikografis. Mencari istilah dalam kamus istilah ini dibuat menggunakan pencarian biner, jadi biaya pencarian istilah tunggal adalah O(log(t)) di mana t adalah jumlah suku. Sebaliknya, menggunakan indeks RDBMS standar biaya O(log(d)) di mana d adalah jumlah dokumen. Ketika banyak dokumen berbagi nilai yang sama untuk beberapa bidang, ini bisa menjadi kemenangan besar.

Selain itu, Lucene committer Uwe Schindler menambahkan dukungan untuk kueri rentang numerik beberapa tahun yang lalu. Untuk setiap nilai bidang numerik , Lucene menyimpan beberapa nilai dengan presisi berbeda. Ini memungkinkan Lucene menjalankan kueri rentang dengan sangat efisien. Karena kasus penggunaan Anda tampaknya banyak memanfaatkan kueri rentang numerik, ini mungkin menjelaskan mengapa Solr jauh lebih cepat. (Untuk informasi lebih lanjut, baca javadocs yang sangat menarik dan berikan tautan ke makalah penelitian yang relevan.)

Tetapi Solr hanya dapat melakukan ini karena tidak memiliki semua batasan yang dimiliki RDBMS. Misalnya, Solr sangat buruk dalam memperbarui satu dokumen pada satu waktu (lebih suka pembaruan batch).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Situasi di mana ActiveRecord dan SQL tidak mengembalikan hasil yang sama karena OID yang tidak dikenal diperlakukan sebagai String

  2. Ambil catatan yang bukan nol setelah titik desimal di PostgreSQL

  3. Mendapatkan kesalahan berikut - Tidak ditemukan driver yang cocok untuk jdbc:postgresql://localhost:5432/testDBMS

  4. Bagaimana cara mendapatkan catatan Pertama dan Terakhir dari kueri sql?

  5. Rails:Tidak ada kumpulan koneksi untuk ActiveRecord::Base