Mam system z około 100 milionami dokumentów i chciałbym śledzić ich modyfikacje między lustrami. Aby skutecznie wymieniać informacje o modyfikacjach, chcę wysyłać informacje o zmodyfikowanych dokumentach przez dni, a nie przez każdy osobny dokument. Coś takiego:Czy istnieje algorytm sumy kontrolnej, który obsługuje również "odejmowanie" od niej danych?
[ 2012/03/26, cs26],
[ 2012/03/25, cs25],
[ 2012/03/24, cs24],
...
gdzie każdy cs jest suma kontrolna znacznika czasu wszystkich dokumentów tworzonych w danym dniu.
Problem polega na tym, że nie znam algorytmu, który mógłby "odjąć" dane z sumy kontrolnej, gdy dokument jest usuwany. Żadne z skrótów kryptograficznych nie pasowało do potrzeb, z oczywistych powodów, i nie mogłem znaleźć żadnego algorytmu dla CRC, który by to zrobił.
Jedną z opcji, którą rozważałem, było usunięcie dodatkowych informacji do hasza, ale spowodowałoby to jeszcze więcej problemów, ponieważ węzły mogą odbierać żądania usunięcia w innej kolejności, a gdy węzeł uruchomi się ponownie, to ponownie znaczniki czasu z dokumentów, a tym samym informacje o usunięciach zostaną utracone.
Ja także nie chciałbym używać drzewa hash z wszystkimi haszami w pamięci, ponieważ zużywałoby to około 8 gigabajtów pamięci i myślę, że jest to trochę przesadzone dla tej potrzeby.
Na razie najlepsza opcja wydaje się odradzać te skróty od czasu do czasu w tle, ale jest to również dużo niepotrzebnego narzutu i nie zapewnia natychmiastowych informacji o zmianach.
Więc, czy znacie algorytm sumy kontrolnej, który pozwoliłby mi "usunąć" niektóre dane z sumy kontrolnej? Potrzebuję algorytmu, który będzie trochę szybki i sumy kontrolnej, która zdecydowanie wskaże najmniejszą zmianę (dlatego nie mogę tak naprawdę użyć zwykłego XOR).
A może masz lepsze pomysły na temat całego projektu?
Nie rozumiem. Dlaczego nie możesz XOR wszystkie sumy kontrolne. Jeśli jeden dokument zostanie usunięty, to XOR na tej sumy kontrolnej dokumentów i powinieneś mieć sumę kontrolną dla pozostałych plików. – aioobe
Ile modyfikacji masz dziennie? Nie możesz po prostu zrobić sumy kontrolnej dla modyfikacji? – biziclop
@ aioobe Naprawdę nie trzymam oddzielnych sum kontrolnych dla poszczególnych dokumentów, więc po prostu nie przeszło mi przez myśl, ale tak, to świetny pomysł, zasadniczo Jason S zasugerował to samo –