Potrzebuję przechowywać setki tysięcy (w tej chwili, potencjalnie wiele milionów) dokumentów, które zaczynają się puste i są często dodawane, ale nigdy nie są aktualizowane inaczej lub usunięte. Te dokumenty nie są w żaden sposób powiązane, a dostęp do nich wymaga posiadania unikalnego identyfikatora.Przechowywanie na dużą skalę dla dokumentów dodawanych przyrostowo?
Dostęp do odczytu to pewien podzbiór dokumentu, który prawie zawsze zaczyna się w połowie w niektórych indeksowanych lokalizacjach (np. "Dokument nr 4324319, zapisz numer # 53 do końca").
Te dokumenty zaczynają się bardzo małe, o kilku KB. Zwykle osiągają ostateczny rozmiar około 500 KB, ale wiele z nich osiąga 10 MB lub więcej.
Aktualnie używam MySQL (InnoDB) do przechowywania tych dokumentów. Każdy z przyrostowych zapisów jest po prostu zrzucany do jednej dużej tabeli z identyfikatorem dokumentu, do którego należy, więc czytanie części dokumentu wygląda jak "wybierz * z zapisów, gdzie id_dokumentu = 14 i save_id> 53 uporządkuj według save_id", a następnie ręcznie połącz je wszyscy razem w kodzie.
Idealnie chciałbym, aby rozwiązanie do przechowywania było łatwo skalowalne w poziomie, z redundancją między serwerami (np. Każdy dokument przechowywany na co najmniej 3 węzłach) z łatwym odzyskiwaniem uszkodzonych serwerów.
Spojrzałem na CouchDB i MongoDB jako możliwe zamienniki dla MySQL, ale nie jestem pewien, czy któryś z nich ma sens dla tej konkretnej aplikacji, chociaż jestem otwarty na to, że jestem przekonany.
Jakieś wejście na dobrym rozwiązaniu do przechowywania danych?
Otrzymałeś wiele komentarzy. Jeśli uważasz, że jedna z nich jest do przyjęcia, zaznacz ją jako odpowiedź. –