Đây là vấn đề tôi đang cố giải quyết:Làm cách nào để bạn triển khai phân loại và phân trang trên dữ liệu được phân phối?
Tôi cần có khả năng hiển thị bảng được phân loại, sắp xếp dữ liệu được lưu trữ trên nhiều phân đoạn cơ sở dữ liệu.
Phân trang và phân loại là các vấn đề được biết rõ mà hầu hết chúng ta có thể giải quyết bằng bất kỳ cách nào khi dữ liệu đến từ một nguồn duy nhất. Nhưng nếu bạn đang chia nhỏ dữ liệu của mình trên các phân đoạn hoặc sử dụng cơ sở dữ liệu tài liệu DHT hoặc phân phối hoặc bất kỳ mùi vị nào của NoSQL bạn thích, mọi thứ trở nên phức tạp hơn.
Đây là một hình ảnh đơn giản của một bộ dữ liệu thực sự nhỏ:
Shard | Dữ liệu
1 | A
1 | D
1 | G
2 | B
2 | E
2 | H
3 | C
3 | F
3 | Tôi
Sắp xếp thành các trang (Kích thước trang = 3):
Trang | Dữ liệu
1 | A
1 | B
1 | C
2 | D
2 | E
2 | F
3 | G
3 | H
3 | Tôi
Và nếu chúng ta muốn hiển thị các trang người dùng 2, chúng tôi muốn trở lại:
D
E
F
Nếu kích thước của bảng trong câu hỏi là một cái gì đó như 10 triệu hàng hoặc 100 triệu, bạn không thể kéo tất cả dữ liệu xuống máy chủ web/ứng dụng để sắp xếp và trả lại đúng trang. Và bạn rõ ràng không thể để từng phân loại cá nhân phân loại và phân đoạn dữ liệu của riêng nó vì các mảnh vỡ không biết về nhau.
Để làm phức tạp vấn đề, dữ liệu tôi cần trình bày không thể quá xa, vì vậy việc tính trước một tập hợp các loại hữu ích trước thời hạn và lưu trữ kết quả để truy xuất sau này không thực tế.
1 và 3 không khả thi đối với tôi nhưng 2 là điều thú vị. Tôi sẽ chơi xung quanh với ý tưởng đó ngày hôm nay và xem những gì tôi có thể đến với. –
Tôi có một nguyên mẫu 2 làm việc và nó trông giống như một giải pháp tốt. Phân loại trên các trường có số lượng cardinality thấp làm tăng thêm một số biến chứng, và nó hơi chậm do các truy vấn đếm lặp lại, nhưng nó sử dụng rất ít tài nguyên hệ thống. –
Rất vui được nghe! Đối với tôi, đây chỉ là một bài tập lý thuyết, tôi rất vui khi nó được thực hiện khi thực hiện. –