Yêu cầu thg 1 12, 2022 1:31 SA 262 0 3
  • 262 0 3
0

API báo cáo với dữ liệu lớn

Chia sẻ
  • 262 0 3

Hiện tại em đang làm chức năng viết api báo cáo cho một dữ liệu tầm hơn 100k record, báo cáo này kết quả trả về là quá trình tính toán của 100k record đó thì api của em đang bị load quá lâu. Có anh chị nào có kinh nghiệm giải quyết vấn đề này có thể giúp em đc k ạ?

3 CÂU TRẢ LỜI


Đã trả lời thg 1 12, 2022 4:33 SA
+2

Với những trường hợp như này process sẽ không chạy trên API bạn nhé Sẽ đẩy trực tiếp vào background job. sau đó kết quả lưu bảng là reports chẳng hạn. còn api sẽ đọc kết quả từ đó. Sẽ có trường hợp hơn 100k thì sao ?....

Còn muốn tính toán bằng lệnh truy vấn khối lượng record nhiều xem dữ liệu có phân theo dòng thời gian được không > ví dụ report 1 tuần, 2 tuần .... thì sử dụng time series database

Chia sẻ
Avatar Dương Siêu @duongdosieu224
thg 1 14, 2022 3:20 SA

cảm ơn a ạ

Đã trả lời thg 1 12, 2022 9:16 SA
+1

Bạn nên đẩy vào queue hay gì gì đó để xử lý và trả ra thông báo cho người dùng là đợi vài phút, Sau khi xử lý xong thì gửi thông báo cho người dùng vào nhận 😃)

Chia sẻ
Avatar Dương Siêu @duongdosieu224
thg 1 14, 2022 3:20 SA

cảm ơn a ạ

Đã trả lời thg 1 26, 2022 4:21 SA
+1

Theo mình có 2 cách giải quyết:

  1. Xem lại code xem đã xử lý tốt nhất chưa(queue, logic code, cache,...)
  2. Nếu đã tốt tầng code thì có cách, tính toán sẳn 100k record (gọi các record này là coll A) sau đó lưu vào một biến một record (gọi là coll B)nào đó và mõi khi có một record mới vào coll A thì lại tính toán cộng thêm trừ bớt gì đó vào trong coll B.
  3. Nếu bắt buộc kiểu tổng kết cả năm hay gì đó chắc chắn sẽ tốn thời gian thì mình cho chạy 1 cái job, worker bên server khi nào có kết quả sẽ thông qua socket hay api gì đó báo về người dùng có thể gửi mail, ... theo mình hay xử lý là vậy á ^^
Chia sẻ
Avatar Dương Siêu @duongdosieu224
thg 1 26, 2022 8:42 SA

cảm ơn a ạ

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í