Tại sao tôi sẽ sử dụng ElasticSearch nếu tôi đã sử dụng cơ sở dữ liệu đồ thị?


15

Tôi không tìm thấy bất kỳ lời giải thích sâu sắc nào trên web về việc so sánh giữa ElasticSearch và cơ sở dữ liệu đồ thị.

Cả hai đều được tối ưu hóa để truyền dữ liệu.
ElasticSearch dường như được tối ưu hóa cho các phân tích.
Tuy nhiên Neo4j cũng dựa trên Lucene để quản lý các chỉ mục và một số tính năng toàn văn bản.

Tại sao tôi sẽ sử dụng ElasticSearch nếu tôi đã sử dụng cơ sở dữ liệu đồ thị?

Trong trường hợp của tôi, tôi đang sử dụng Neo4j để xây dựng một mạng xã hội.
Lợi ích thực sự mà ElasticSearch có thể mang lại là gì?

CẬP NHẬT ----------

Tôi vừa tìm thấy đoạn này:

Có vô số trường hợp trong đó elaticsearch là hữu ích. Một số trường hợp sử dụng gọi rõ ràng hơn so với những trường hợp khác. Dưới đây là một số nhiệm vụ mà elaticsearch đặc biệt phù hợp.

  • Tìm kiếm một số lượng lớn các mô tả sản phẩm cho phù hợp nhất cho một cụm từ cụ thể (nói dao đầu bếp của Cameron) và trả về kết quả tốt nhất
  • Lấy ví dụ trước, phá vỡ các bộ phận khác nhau nơi dao đầu bếp của Cameron xuất hiện (xem Faceting sau trong cuốn sách này)
  • Tìm kiếm văn bản cho các từ nghe giống như mùa Mùa hè
  • Tự động hoàn thành hộp tìm kiếm dựa trên các từ được nhập một phần dựa trên các tìm kiếm đã ban hành trước đó trong khi tính toán sai chính tả
  • Lưu trữ một lượng lớn dữ liệu bán cấu trúc (JSON) theo kiểu phân tán, với mức độ dự phòng được chỉ định trên một cụm máy

Tuy nhiên, cần lưu ý rằng trong khi elaticsearch rất tốt trong việc giải quyết các vấn đề đã nói ở trên, nó không phải là lựa chọn tốt nhất cho những người khác. Điều này đặc biệt tệ trong việc giải quyết các vấn đề mà cơ sở dữ liệu quan hệ được tối ưu hóa. Các vấn đề như được liệt kê dưới đây.

  • Tính toán có bao nhiêu mặt hàng còn lại trong kho
  • Tìm ra tổng của tất cả các chi tiết đơn hàng trên tất cả các hóa đơn được gửi trong một tháng nhất định
  • Thực hiện hai hoạt động giao dịch với hỗ trợ rollback
  • Tạo các bản ghi được đảm bảo là duy nhất qua nhiều thuật ngữ đã cho, ví dụ như số điện thoại và tiện ích mở rộng
  • Elaticsearch nói chung là tuyệt vời trong việc cung cấp câu trả lời gần đúng từ dữ liệu, chẳng hạn như chấm điểm kết quả theo chất lượng. Trong khi elaticsearch có thể thực hiện các phép tính thống kê và kết hợp chính xác, nhiệm vụ chính của nó là tìm kiếm là một nhiệm vụ gần đúng.
  • Tìm câu trả lời gần đúng là một thuộc tính tách biệt elaticsearch khỏi cơ sở dữ liệu truyền thống hơn. Điều đó đang được nói, cơ sở dữ liệu quan hệ truyền thống vượt trội về độ chính xác và tính toàn vẹn dữ liệu, trong đó elaticsearch và Lucene có một vài điều khoản.

Tôi có thể khẳng định rằng nếu tôi không cần câu trả lời gần đúng thì ElasticSearch sẽ vô dụng so với cơ sở dữ liệu đồ thị đã sử dụng không?


Câu trả lời:


17

Tôi ngần ngại gọi cho ElasticSearch một cơ sở dữ liệu. Nó không phải là sự thay thế cho cơ sở dữ liệu, nhưng nó là một bổ sung tốt để thêm chức năng, đặc biệt là tìm kiếm văn bản nâng cao, cùng với cơ sở dữ liệu hiện có của bạn.

Tôi thấy nơi bạn có thể khiến họ bối rối. Họ thực sự có thể phù hợp với cùng một nhu cầu, nhưng không phải lúc nào cũng vậy. ElasticSearch thực hiện chính xác những gì nó nghe, tìm kiếm . Cơ sở dữ liệu đồ thị không chỉ định các mối quan hệ hoặc chỉ mục, giống như tính năng Tìm kiếm đàn hồi. Vì vậy, về cơ bản họ làm việc khá khác nhau. Ví dụ, ElasticSearch phân tích các tài liệu với máy phân tích tiếng Anh. Những gì nó sẽ làm từ và phân tích các biến thể khác nhau của từ đó hoặc thậm chí từ đồng nghĩa. Ví dụ, digsẽ được anaylened như dig,digs,dug,digging,digger .... Khi bạn chạy một truy vấn trên elaticsearch, các truy vấn của bạn cũng có thể được phân tích, sau đó những từ đó được truy vấn và có thể được ghi điểm theo mức độ liên quan.

ElasticSearch là một công cụ tuyệt vời, vì nó thực sự linh hoạt. Bạn có thể tìm thấy một loạt các nội dung tương đối, hoặc bạn có thể tìm thấy một cây kim trong đống cỏ khô, và nó tương đối dễ dàng.

Cơ sở dữ liệu đồ thị cũng có lợi thế của họ. Tìm kiếm sự liên quan / mối quan hệ giữa những thứ như thẻ băm chẳng hạn, hoặc những thứ có nhiều mối quan hệ có thể thay đổi. Chúng là những phần công nghệ tuyệt vời và thú vị, tuy nhiên tôi phải nói rằng nó không mạnh bằng tính năng Tìm kiếm đàn hồi. Chủ yếu là vì ElasticSearch hướng đến loại điều này và nó xử lý phân tích cho bạn để bạn có thể thực hiện tìm kiếm toàn văn. Tuy nhiên, nếu bạn đang muốn sử dụng một hệ thống giống như tìm kiếm của twitter dựa trên việc gắn thẻ / từ khóa được xác định trước, thì bạn nên sử dụng Cơ sở dữ liệu đồ thị mà bạn đã sử dụng.

Câu hỏi là bạn muốn tìm kiếm của bạn mạnh đến mức nào? Nếu bạn có nhu cầu thực hiện các tìm kiếm thực sự tốt (toàn văn) tôi sẽ sử dụng elaticsearch. Nếu không, bạn luôn có thể thực hiện tìm kiếm tương đối dễ dàng trên cơ sở dữ liệu đồ thị. Khi bạn đã thực hiện tìm kiếm, không thể chuyển sang elaticsearch nếu sau này bạn cần một công cụ tìm kiếm mạnh mẽ hơn, chỉ cần thực hiện tìm kiếm của bạn với ý nghĩ đó.


3

Cả hai cơ sở dữ liệu này đều có nhu cầu cụ thể để giải quyết vấn đề cụ thể ở mức độ yêu cầu ứng dụng nhất định. Mặc dù chúng tôi chưa sử dụng Cơ sở dữ liệu đồ thị. Nhưng chúng tôi đang sử dụng elaticsearch với MySQL trong một trong những dự án của chúng tôi từ 5 năm trước. Dự án đó có một dữ liệu lớn được tìm kiếm thông qua 6m tài liệu và có mối quan hệ lớn giữa các thực thể đó (tài liệu quan hệ 10m).

Ca sử dụng: Thích tìm kiếm thông qua các khách sạn đã được bạn bè tôi thích và sắp xếp tất cả các khách sạn với số lượt thích họ có. Và nếu bạn nhìn thấy nó một cách chặt chẽ. trường hợp này có liên quan đến 2 mối quan hệ (Bạn bè, Thích). Vì vậy, tôi cần tìm kiếm thông qua tàu quan hệ Like giữa Khách sạn và Bạn bè của tôi và sau đó các khách sạn nên được sắp xếp theo tổng số lượt thích mà họ có. Vì vậy, đối với các tìm kiếm như vậy, cơ sở dữ liệu đồ thị là tốt.

Elaticsearch đang làm rất tốt cho việc tìm kiếm thử nghiệm đầy đủ trong các tài liệu nhưng khi tìm kiếm thông qua các mối quan hệ như trên thì điều đó không tốt. Liệt kê tài liệu (thực thể) là người hâm mộ của tôi và sắp xếp chúng theo số lượng người hâm mộ của họ. Nhưng đây là một cấp độ sâu và khi tìm kiếm sâu hơn. Elaticsearch là không đủ tốt.

Vì vậy, hiểu yêu cầu ứng dụng của bạn và sau đó đi cho cơ sở dữ liệu. Bạn có thể cần phải có cả hai.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.