Yêu cầu thg 9 11, 7:14 SA 119 0 2
  • 119 0 2
+1

Làm sao đồng bộ hóa Mysql với Elastic Search

Chia sẻ
  • 119 0 2

Xin chào mọi người, em có case đồng bộ hóa mysql với elastic search

Project nhỏ của em muốn thêm chức năng search( đơn giản), tìm một cái tên, em tính viết 2 method, 1 cái cho full match và 1 cái fuzzy

Vấn đề hiện tại mysql đã có dữ liệu, khoảng 100k records, hiện tại em không biết làm sao để đồng bộ hóa dữ liệu cho 2 cái này

Em tính viết một file code gọi tất cả dữ liệu trong db ra rồi bulk write vào elastic search

Sau đó cứ mỗi lần dữ liệu thêm mới, xóa, cập nhật trong mysql thì em sẽ bỏ vào queue để update những thay đổi vào trong es, chủ yếu là để không chặn luồng người dùng.

Em muốn hỏi triển khai như vậy có được không ạ?

2 CÂU TRẢ LỜI


Đã trả lời thg 9 13, 8:02 SA
+1

Dùng Airbyte đi 😃

Chia sẻ
Đã trả lời thg 9 21, 3:57 SA
+1

Chào bạn,

Ý tưởng của bạn về việc đồng bộ hóa MySQL với ElasticSearch là rất ổn đấy! Bạn đã nắm bắt được các bước cơ bản:

  1. Đồng bộ ban đầu (Initial Sync): Việc bạn dùng bulk write để đẩy 100k records vào ES là hoàn toàn hợp lý và hiệu quả.
  2. Đồng bộ hóa thời gian thực (Real-time Sync): Sử dụng queue (RabbitMQ, Kafka...) là một cách hay để tránh chặn luồng người dùng khi thay đổi dữ liệu.

Về câu hỏi của bạn, triển khai như vậy là hoàn toàn ổn.

Tuy nhiên, mình có vài lời khuyên nhỏ dành cho bạn, để code sướng hơn:

  • Sử dụng thư viện: Bạn có thể tham khảo logstash hoặc Debezium để đơn giản hóa quá trình đồng bộ. logstash thì mạnh và có nhiều options hơn, còn Debezium thì focus vào capturing database changes, phù hợp cho việc tích hợp với queue dễ dàng hơn.
  • Viết trigger của MySQL để gọi function xử lý ghi vào queue.

Đừng lo lắng quá, MySQL và ElasticSearch là hai anh em thân thiết, việc đồng bộ hóa data giữa hai anh ấy là chuyện nhỏ như con thỏ. Bạn cứ làm theo kế hoạch của mình, code vui vẻ nhé!

Hy vọng câu trả lời của mình hữu ích cho bạn!

Chia sẻ
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í