PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tại sao Solr lại nhanh hơn Postgres rất nhiều?

Đầu tiên, Solr không sử dụng B-tree. Chỉ mục Lucene (thư viện cơ bản được Solr sử dụng) được tạo bằng một chỉ mục chỉ đọc phân đoạn . Đối với mỗi phân đoạn, Lucene duy trì một từ điển thuật ngữ, bao gồm danh sách các thuật ngữ xuất hiện trong phân đoạn, được sắp xếp theo từ điển. Việc tra cứu một thuật ngữ trong từ điển thuật ngữ này được thực hiện bằng cách sử dụng tìm kiếm nhị phân, do đó, chi phí tra cứu một thuật ngữ là O(log(t)) trong đó t là số lượng các số hạng. Ngược lại, việc sử dụng chỉ mục của một RDBMS tiêu chuẩn sẽ tốn O(log(d)) trong đó d là số lượng tài liệu. Khi nhiều tài liệu có cùng giá trị cho một số trường, đây có thể là một chiến thắng lớn.

Hơn nữa, người cam kết Lucene Uwe Schindler đã bổ sung hỗ trợ cho truy vấn phạm vi số vài năm trước. Đối với mọi giá trị của trường số , Lucene lưu trữ một số giá trị với các phân khu khác nhau. Điều này cho phép Lucene chạy các truy vấn phạm vi rất hiệu quả. Vì trường hợp sử dụng của bạn dường như tận dụng các truy vấn phạm vi số rất nhiều, điều này có thể giải thích tại sao Solr nhanh hơn nhiều. (Để biết thêm thông tin, hãy đọc javadocs rất thú vị và cung cấp liên kết đến các tài liệu nghiên cứu có liên quan.)

Nhưng Solr chỉ có thể làm điều này bởi vì nó không có tất cả các ràng buộc mà một RDBMS có. Ví dụ:Solr rất tệ trong việc cập nhật một tài liệu tại một thời điểm (nó thích cập nhật hàng loạt hơn).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL - Xóa dữ liệu cũ hơn một giờ, sau đó chèn dữ liệu mới vào cùng một bảng

  2. Tên Ràng buộc Mặc định trong PostgreSQL là gì?

  3. Chuyển đổi động cho giá trị hàng không xác định thành tên cột trên postgres

  4. Có an toàn để sắp xếp lại các cột trong schema.rb cho Rails 4 / Postgres không?

  5. Làm thế nào để cài đặt postgres với NSIS với tất cả các tham số?