#1 Search engines: Elasticsearch
#1 Document stores: MongoDB
Trong lúc đi tìm hiểu về Elasticsearch, mình loay hoay một câu hỏi “Ứng dụng đang sử dụng db là Mongo, vẫn có thể search xịn, chạy phà phà dư xăng, độ search bằng cách đánh index luôn. Vậy khi nào cần sử dụng Elasticsearch?” Data của hệ thống ngày càng nhiều? Nhiều cỡ bao nhiêu? Thôi mình dựng thử một demo nhỏ để so sánh tốc độ vậy.
1. Chuẩn bị data
Mình sử dụng tập public data Danh sách giá cả thị trường. Tập data có 2000 records được lưu dạng csv, sau đó convert về json. Cuối cùng dựng model Product, đánh index theo tên và bắt đầu ghi vào MongoDB.
2000 là số records được insert ; 2 indexes đã đánh: _Id (mặc định) và ten
Làm tương tự cho ES, mình đi dựng index với tên product và insert tập 2000 record. Sau đó đi check lại số lượng có match 2000 hay không.
Ref: https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/bulk_examples.html
2/ Test tốc độ
Tiếp theo, mình chuẩn bị 2 api search tương ứng cho Mongo và ES. Cùng một giá trị tìm kiếm, cùng tập 2000 record, mình nhận ra tốc độ search của Elasticsearch nhanh hơn xấp xỉ 20 lần so với MongoDB.
MongDB:
Elasticsearch:
Dù kết quả ra sao, MongoDB vốn sinh ra không mang sứ mệnh là search như Elasticsearch, xứng đáng là ưu tiên hàng đầu để cân được các loại dự án khác nhau. Nhưng nếu gia đình có điều kiện thì đúng Elasticsearch là một lựa chọn cool ngầu.
Nguồn tham khảo:
DB Engine: https://db-engines.com/en/system/Elasticsearch%3BMongoDB
Elastic doc: https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html
Chân thành cảm ơn mọi người đã đọc bài viết của mình.
*** Bài chia sẻ cũng còn nhiều thiếu sót, mình rất mong nhận được góp ý từ mọi người. ^^