Yêu cầu thg 9 9, 4:22 SA 102 0 2
  • 102 0 2
+1

Database Fulltextsearch, Redis Fulltextsearch, hay là Elastic Search

Chia sẻ
  • 102 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 CÂU TRẢ LỜI


Đã trả lời thg 9 21, 3:58 SA
+2

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!

Chia sẻ
Đã trả lời thg 9 10, 3:58 SA
+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

Chia sẻ
Avatar Dương Quang Nhất @JuangWangZhatt
thg 10 19, 9:48 CH

Cảm ơn vì phản hồi của bạn

Fulltext search trong database có hỗ trợ ví dụ như mysql thì nó có giới hạn ví dụ như là nó khá cứng nhắc, không cho phép sai số

ES chuyên dụng hơn, rất nhiều cấu hình

Mình nghĩ lại là nên dùng db để lưu trữ dữ liệu, redis để cache, kết hợp ES để làm fulltext search

"Right tool for the right job"

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí