Bucket Pattern Mongodb - Một mô hình paging (phân trang) rất hiệu quả nhưng khi nào nên sử dụng?

Nội dung bài viết

Video học lập trình mỗi ngày

Với việc sử dụng Bucket Pattern thì chúng ta sẽ tiết kiệm được thời gian so với 2 cách trước đây khi truy vấn dữ liệu cấp triệu. Đây là một mô hình Group rất hiệu quả khi phân trang nhưng vẫn còn có những nhược điểm cho nên bạn nên cân nhắc khi sử dụng mô hình này.

Bucket Pattern Mongodb

Nếu bạn đã xem những videos giải thích các cách phân trang sử dụng mongodb trước kia. Thì đây là một trong những cách đó. Rất tiện lợi khi truy vấn dữ liệu. Thay vì chúng ta xây dựng cơ bản dữ liệu comments như thế này:

{
    "ticker" : "TTF", 
    "customerId": 50234,
    "type" : "buy", 
    "qty" : 9.00, 
    "date" : ISODate("2021-10-26T15:47:03.434Z") 
},
{ 
    "ticker" : "VND",
    "customerId": 50234, 
    "type" : "sell", 
    "qty" : 29, 
    "date" : ISODate("2021-11-30T09:32:57.765Z") 
 }

Trên đây là lịch sử của một giao dịch chứng khoán của một người. Bình thường chúng ta sẽ lưu với định dạng như thế. Nhưng khi xem giải thích về ưu và nhược của các cách phân trang trước kia thì chúng ta thấy cách trên cũng có một số nhược điểm. (Xem video để hiểu rõ hơn). Và bây giờ chúng ta sẽ thay đổi theo mô hình Bucket Pattern như sau:

{
  "_id": "50234_time",
  "customerId": 50234,
  "count": 2,
  "history": [
    {
        "ticker" : "TTF", 
        "type" : "buy", 
        "qty" : 9.00, 
        "date" : ISODate("2021-10-26T15:47:03.434Z") 
    },
    { 
        "ticker" : "VND",
        "type" : "sell", 
        "qty" : 29, 
        "date" : ISODate("2021-11-30T09:32:57.765Z") 
     }
  ]
}

Theo mô hình trên thì chúng ta sẽ truy vấn nhanh gọn chỉ với một query và lấy ra được tất cả các giao dịch theo time của _id. Chúng ta để ý những fields sau: count_id. count chính là số lượng documents mà chúng ta muốn lưu trữ và truy vấn...

Cách triển khai Bucket Pattern Mongodb với Nodejs và Expressjs

Nếu các bạn muốn biết cách thực hiện một cách phân trang như trên thì có thể click vào video này để xem hoặc trên đầu bài viết tôi cũng đã để video trên đó. Hy vọng đó cũng là một cách để bạn có thể tham khảo và rút ngắn thời gian học Mongodb.

Đương nhiên mỗi cách có ưu và nhược. Cho nên chính Mongodb cũng gợi ý cho chúng ta 12 mô hình để có thể áp dụng trong một dự án. Chứ không nhất thiết là phải mọi cách thực hiện bằng được một mô hình cụ thể nào đó.

Bucket Pattern Mongodb - Ưu và nhược điểm

Như đã nói ở trên, mỗi pattern đều có ưu và nhược. Ưu thì quá rõ khi bạn xem video. Còn nhược thì chúng ta có thể bổ sung thêm như sau:

Việc update hay xóa một record gây ra không đồng nhất chẳng hạn khi xóa một document thì sẽ có những bucket không đạt số lượng nhất định

Ví dụ: Mỗi bucket = 1000 nhưng xóa 10 thì còn 990. Như vậy mỗi bucket sẽ khác nhau. Việc đồng bộ lại data gây ra chậm chạp hệ thống.

Tìm kiếm rất khó khăn theo thời gian.

Ví dụ: Bạn tìm kiếm một người đã follow hay chưa trong 1000 bucket như vậy thì hơi khó khăn.

Kết luận

Mọi việc đã rõ, tôi không thể nói thêm được gì. Chúc bạn có một thế giới quan riêng của mình. Mọi đóng góp ý kiến nên mang tính xây dựng vào link comments or email [anonystick@gmail.com]

Có thể bạn đã bị missing