Case study giải quyết bài toán search hơn 300 triệu đơn hàng trong database
Ngữ cảnh:
Bạn cứ thử nghĩ 1 sàn thương mại điện tử lớn tại Việt Nam có hơn 200.000 đơn hàng/ 1 ngày thì trong khoảng 5 năm thôi lượng đơn hàng trong database rất khổng lồ ácmin tính sơ thôi cũng là trên 300 triệu đơn hàng trong database SQL server, vậy khi bạn search 1 đơn hàng thì bạn làm thế nào. Bạn có nghĩ là query 'like', join table hoặc index table chẳng hạn thì search có được không, à thì được đó nhưng bạn nghĩ có nhanh không, thì chắc chờ 5 phút hay 10 phút mới get ra 1 đơn hàng trong đống 300 triệu đơn đó hoặc là đứng hệ thống luôn. Chưa kể bên vận hành nội bộ họ trích xuất database để lấy dữ liệu để làm đối soát các kiểu, rồi shop search đơn hàng...bla...bla.. Tất cả tác động lên con database 300 triệu đơn đó. Hệ thống chịu nổi cái hàm search đó không. Xin thưa với các bạn là không. Vậy có thể tóm tắt ngữ cảnh ngữ như sau:
- Lượng đơn hàng: 300 triệu đơn
- Database dùng SQL server
- Hệ thống chịu không nổi khi search và export
- Chưa kể các bạn còn search có dấu nữa nên phải thiết kế có dấu nên tốc độ search càng chậm hơn.
Nguyên nhân:
Đơn giản là do database SQL server mình không đáp ứng tốt với dữ liệu lớn như 300 triệu đơn.
Giải pháp:
Bởi vậy các chuyên gia của những công ty lớn đó mới ngồi với nhau tìm ra công nghệ phù hợp để tăng hiệu quả search đơn hàng, export đơn hàng nhanh hơn hỗ trợ công việc tốt hơn. Vậy giải pháp là gì. Công nghệ thì khá nhiều nhưng mình sẽ đi sâu vào chi tiết 1 case như công ty thương mại điện tử lớn tầm cỡ ở Việt Nam làm là họ dùng Elasticsearch để làm cái việc lưu đơn hàng trên đó để truy xuất đơn hàng nhanh hơn hiệu quả hơn rất rất nhiều lần bạn query database ở dưới SQL server.
Vậy vậy ElasticsSearch là gì mình sẽ đi cụ thể những bài sau. Nhưng đại khái là ElasticsSearch là một phần của hệ sinh thái Elastic (https://www.elastic.co) nó là công cụ được các chuyên gia nước ngoài tối ưu để làm việc 1 chức năng duy nhất là tìm kiếm. Nên nó cực nhanh và hiệu quả. Mình nói đến đây thôi các bạn có thể search cách tích hợp nó như thế nào cũng đơn giản thôi.
Ứng dụng và thảo luận:
Có rất nhiều công ty lớn tầm cỡ dùng rồi nên anh em yên tâm cứ thế mà triển :