Chcielibyśmy shard ważonego reżyserii wykres,Dzielenie ważony graf skierowany (ponad bazie kluczy/wartość)
użytkownik może dodawać węzły i krawędzie dynamicznie, początkowo DB/wykres jest pusty.
Zachowujemy węzły i krawędzie w bazie danych klucz/wartość (prawdopodobnie Redis): Dla każdego węzła będziemy mieć identyfikator węzła jako klucz i sortowany zestaw kluczy dla węzłów z odniesieniami Wynik każdego identyfikatora węzła w zestawie sortowanym jest ciężar krawędzi.
(patrz pytanie dotyczące tej tutaj: Redis: Implement Weighted Directed Graph)
Nie mamy ograniczenie równowaga, najczęściej działanie na wykresie jest Dijkstra, a my jak zminimalizować I/O (sieć w naszym przypadek)
Możliwe rozwiązanie: każdy serwer DB zawiera listę innych serwerów z IP:
klucz: serwer1, wartość: .... 250,1
klucz: server2, wartość: .... 250,2
klucz: serwer3, wartość: .... 250.3
i każdy nodeid będą serverX.originalNodeId
Jaki byłby algorytm, który decyduje, które węzeł idzie gdzie? czy powinniśmy wspierać ponowne pozycjonowanie węzła?
Chyba że naiwne podejście byłoby dodać węzeł A do serverX gdzie argmax (liczba węzłów w serwerze X, które mają krawędzie węzła A), tak długo jak serverX nie jest w pełni zajęty ..
"Odłamek"? Muszę się starzeć. Co to znaczy? –
http://pl.wikipedia.org/wiki/Shard_(database_architecture) – DuduAlul