Tôi có hệ thống lô cũ này. Bộ lập lịch lưu trữ tất cả các nút tính toán trong một mảng lớn. Bây giờ điều đó là tốt cho hầu hết các phần, bởi vì hầu hết các truy vấn có thể được giải quyết bằng cách lọc cho các nút thỏa mãn truy vấn.Cấu trúc dữ liệu để chọn các nhóm máy
Vấn đề tôi có bây giờ là ngoài một số thuộc tính cơ bản (số cpus, bộ nhớ, hệ điều hành), cũng có những thuộc tính nhóm lạ (thành phố, thông tin, mạng đầu). Bây giờ vấn đề với những điều này là khi người dùng yêu cầu các nút với infiniband tôi không thể chỉ cho anh ta bất kỳ nút nào, nhưng tôi phải cho anh ta các nút được kết nối với một công tắc infiniband, vì vậy các nút có thể thực sự giao tiếp bằng cách sử dụng infiniband.
Điều này vẫn OK, khi người dùng chỉ yêu cầu một thuộc tính như vậy (tôi chỉ có thể phân vùng mảng cho mỗi thuộc tính và sau đó cố gắng chọn các nút trong từng phân đoạn riêng biệt).
Sự cố đi kèm với việc kết hợp nhiều thuộc tính như vậy, vì sau đó tôi sẽ phải tạo tất cả kết hợp các tập con (phân vùng của mảng chính).
Điều tốt là hầu hết các thuộc tính đều nằm trong tập hợp con hoặc tương đương (Nó có ý nghĩa đối với các máy trên một công tắc vô tuyến ở trong một thành phố). Nhưng tiếc là điều này không đúng.
Có một số cấu trúc dữ liệu tốt để lưu trữ loại điều bán phần lớn cây phân cấp này không?
EDIT: Ví dụ
node1 : city=city1, infiniband=switch03, networkfs=server01
node2 : city=city1, infiniband=switch03, networkfs=server01
node3 : city=city1, infiniband=switch03
node4 : city=city1, infiniband=switch03
node5 : city=city2, infiniband=switch03, networkfs=server02
node6 : city=city2, infiniband=switch03, networkfs=server02
node7 : city=city2, infiniband=switch04, networkfs=server02
node8 : city=city2, infiniband=switch04, networkfs=server02
Người dùng yêu cầu:
2x node with infiniband and networkfs
Kết quả mong muốn sẽ là: (node1, node2)
hoặc (node5,node6)
hoặc (node7,node8)
.
Trong tình huống tốt, ví dụ này sẽ không xảy ra, nhưng chúng tôi thực sự có các kết nối chéo trang lạ trong một số trường hợp. Nếu các nút trong city2
sẽ là tất cả trên infiniband switch04
, nó sẽ dễ dàng. Thật không may bây giờ tôi phải tạo ra các nhóm của các nút, có cùng một switch infiniband và cùng một hệ thống tập tin mạng.
Trong thực tế, vấn đề phức tạp hơn nhiều, vì người dùng không yêu cầu toàn bộ nút và thuộc tính rất nhiều.
Chỉnh sửa: đã thêm đầu ra mong muốn cho truy vấn.
Có lẽ nếu bạn đưa ra một ví dụ thiết lập cụ thể hơn, nó sẽ được dễ dàng hơn để mô tả vấn đề của bạn – Peaches491
@ Peaches491 tốt hơn? –
Và bạn không thể sử dụng DB trong bộ nhớ đã xử lý loại phức tạp này cho bạn? Tôi đoán bạn đã nhìn vào container multi_index từ tăng và quyết định không cuộn một cái gì đó từ đó? – Nim