Mam około 500 milionów 128-bitowych liczb całkowitych, dodając około 100M na rok. Nic nie jest nigdy usunięte. Liczby mają jednolity rozkład, pod względem skali i czasu.Struktura na dysku do przechowywania dużego zestawu 128-bitowych liczb całkowitych?
Zasadniczo wszystko, czego potrzebuję, to operacja dodawania, która również zwraca informację, czy liczba już istnieje w DB. Ponadto, nie chcę używać zbyt dużo pamięci RAM dla tego systemu, więc po prostu przechowywanie wszystkiego w pamięci nie jest tym, czego szukam.
Do tej pory używaliśmy kilku tabel MyISAM w MySQL, używając dwóch bigintów jako klucza podstawowego. To daje nam dobrą wydajność, ale podejrzewam, że nie jest to właściwe narzędzie do tej pracy. Przed rozdzieleniem tabel wystąpiły pewne problemy z wydajnością, a także mieliśmy zepsute przerwy w zasilaniu. Ponadto, DB daje nam znacznie więcej funkcji, których nie potrzebujemy.
Używam Pythona na Linuksie, ale jestem otwarty na sugestie.
AKTUALIZACJA: Komentarz Marcelo wspomniał o Bloom Filter, co wydaje mi się bardzo obiecujące. Ponieważ pracuję z hashe, już zrezygnowałem z pełnej dokładności, więc może to być świetna kompromitacja precyzja/wydajność.
Co możesz nam powiedzieć o rozkładzie liczb? O dodatkach każdego roku? –
To powinno być jednolite, a liczby to hasze. Stałe tempo, czyli około 3 operacji na sekundę. – itsadok