2013-06-06 32 views
7
của Django

Vì vậy, tôi đã triển khai Haystack bằng ElasticSearch một tuần trước trong ứng dụng BETA của chúng tôi. Một điều tôi có thể nhận thấy là nhận được một số dữ liệu (số tiền lớn) cho người dùng của chúng tôi (ví dụ liệt kê tất cả người dùng trong ứng dụng) nhanh hơn nhiều bằng cách thực hiện Haystack sau đó là ORM của Django. Bây giờ, tôi sẽ phát hành một dịch vụ REST (với TastyPie) để phục vụ các máy tính bảng có thể trong vòng vài tuần tới, vì tôi muốn có thể truy cập thông tin từ iPad, máy tính bảng Nexus và vân vân.Khi nào nên sử dụng Haystack/ElasticSearch vs ORango

Một điều tôi đã tự hỏi, là khi nào tôi nên truy vấn ORM vs Haystack/ElasticSearch? Ví dụ: nếu người dùng trên máy tính bảng đang yêu cầu một nhóm người dùng cụ thể, chúng tôi có nên cho phép TastyPie truy vấn ORM hoặc truy cập ElasticSearch không?

Nếu chúng ta xem câu trả lời này Django: Haystack or ORM, tất cả chúng ta đều có thể đồng ý rằng một DB được thực hiện để truy xuất và ghi dữ liệu. Tuy nhiên, chúng ta có thể nói rằng việc truy xuất nhanh hơn có thể nhanh hơn với Haystack/ElasticSearch khi công cụ tìm kiếm đã được cập nhật không?

Tôi hơi bối rối khi nào, chúng tôi có nên không phải đang truy vấn Haystack nếu nó nhanh hơn nhiều không ?!

Trả lời

6

Để làm rõ mọi việc, tôi đoán bạn đang nói về việc truy vấn Elasticsearch qua Haystack mà không cần sau đó instantiating bất kỳ đối tượng nào cho kết quả tìm kiếm của bạn với dữ liệu từ cơ sở dữ liệu của bạn.

Một số điểm cần xem xét bên cạnh những điểm được đề cập trong the other bài:

  • Một công cụ tìm kiếm như Elasticsearch được tối ưu hóa cao khi giao dịch với các tìm kiếm toàn văn (Khi làm điều gì đó với SQL nó rất phụ thuộc vào cơ sở dữ liệu/động cơ bạn đang sử dụng)

  • Truy vấn có liên quan đến nhiều mối quan hệ/kết nối sẽ dễ xử lý hơn với ORM, nhưng mặt khác, bạn có thể lưu dữ liệu từ các quan hệ khóa ngoài trong không chuẩn hóa thời trang khi sử dụng ES có thể giúp bạn tăng hiệu suất . Tất nhiên bạn cũng có thể không chuẩn hóa các bảng cơ sở dữ liệu của bạn nhưng điều này thường được coi là thực hành không tốt miễn là bạn biết bạn đang làm gì, ví dụ như khi giải quyết một nút cổ chai hiệu suất.

  • ES bằng cách nào đó khá dễ dàng để mở rộng quy mô trong khi mở rộng DB SQL của bạn có thể phức tạp hơn.

  • Rất có thể đây là quyết định phụ thuộc rất nhiều vào trường hợp sử dụng của bạn, lượng dữ liệu cần xử lý và các truy vấn mà bạn dự định chạy. Vì vậy, điều tốt nhất tất nhiên là - như mọi khi - để làm một số điểm chuẩn chính mình và so sánh hai giải pháp này. Nhưng không thực hiện bất kỳ sự tối ưu hóa sớm nào là một lợi thế lớn của ORM là giữ mọi thứ đơn giản - bạn không phải quan tâm nhiều đến tính toàn vẹn của dữ liệu và duy trì một hệ thống bổ sung.

+0

Hoàn hảo! Cảm ơn – abisson