Asked Sep 9th, 4:22 a.m. 66 0 2
  • 66 0 2
+1

Database Fulltextsearch, Redis Fulltextsearch, hay là Elastic Search

Share
  • 66 0 2

Xin chào mọi người em là newbie backend,

Mấy ngày hôm nay em cũng có tìm hiểu về tìm kiếm, em thấy khá nhiều thứ hỗ trợ fulltext search, ví dụ mysql, redis, elastic search, mà em không hiểu cách hoạt động của những thứ này, ưu và nhược điểm của nó, và khi nào nên dùng cái nào, em thấy trong Elastic Search nó có một thứ gọi là fuzzy search cho phép chúng ta tìm ra kết quả gần đúng, có phải nó được sử dụng nhiều là vì vậy( kèm theo combo ELK của nó)

2 ANSWERS


Answered Sep 10th, 3:58 a.m.
+1

Redis sẽ lưu data trong cache ở ram và search với tốc độ nhanh , els thì lại lưu vào disk có một số thuật toán giúp cho nó search rất nhưng , hiện tại một số db cũng hỗ trợ search fulltext rất nhanh như Mongo.

Mà dùng db + redis sẽ hợp lý hơn so với dùng với els mình nghĩ thế , do khi chạy project bắt buộc phải lưu data đồng bộ vào cả els . Mình nghĩ thế không biết đúng không

Share
Answered Sep 21st, 3:58 a.m.
+1

Chào bạn newbie backend,

Haha, câu hỏi của bạn hay đấy! Như một chú chim non mới tập bay vào thế giới tìm kiếm vậy.

Nói ngắn gọn:

  • MySQL/PostgreSQL (Fulltext Search): Cơ bản, sẵn có, dùng cho những database đơn giản và nhu cầu tìm kiếm không phức tạp. Tưởng tượng như một chú gà con, chạy nhảy trong vườn nhà thôi, đơn giản mà dễ thương.
  • Redis (Fulltext Search): Nó nhanh hơn MySQL nhưng không phải chuyên dụng cho fulltext search, thường dùng cho caching hoặc những trường hợp cần lấy dữ liệu cực nhanh. Như một chú thỏ, nhảy nhót nhanh nhưng không chuyên săn mồi.
  • Elasticsearch: Siêu xe trong thế giới tìm kiếm. Nhanh, mạnh, nhiều tính năng, đặc biệt là Fuzzy search (tìm kiếm gần đúng) như bạn nói. Elasticsearch + Kibana + Logstash (ELK) thì như một đội đua xe chuyên nghiệp, xử lý được lượng lớn dữ liệu phức tạp.

Ưu nhược điểm:

Feature MySQL/PG Redis Elasticsearch
Tốc độ Trung bình Siêu nhanh Siêu nhanh
Tính năng Cơ bản Hạn chế Siêu nhiều
Phức tạp Dễ Dễ Khá phức tạp
Chi phí Thấp Trung bình Có thể cao

Khi nào nên dùng?

  • MySQL/PG: Website nhỏ, lưu trữ dữ liệu ít, tìm kiếm đơn giản.
  • Redis: Cần cache kết quả tìm kiếm, hoặc tìm kiếm nhanh trên tập dữ liệu nhỏ.
  • Elasticsearch: Website lớn, dữ liệu nhiều, cần tìm kiếm phức tạp, phân tích dữ liệu.

Fuzzy Search: Đúng rồi, Fuzzy search là điểm mạnh của Elasticsearch, cho phép tìm kiếm gần đúng, rất hữu ích khi người dùng nhập sai chính tả.

Lời khuyên cho bạn: Nếu đang là newbie thì hãy tập trung làm quen với MySQL/PG trước đã, sau đó thử sức với Elasticsearch lúc nào bạn thấy cần một "siêu xe" trong project của mình.

Hy vọng là bạn hiểu thêm một chút về thế giới tìm kiếm rồi nhé! Cố gắng lên!

Share
Viblo
Let's register a Viblo Account to get more interesting posts.