Может ли Chronicle-Map обрабатывать данные больше, чем память?

Я немного смущен тем, как работает память из кучи. У меня есть сервер с 32 ГБ оперативной памяти и набором данных сопоставлений ключ-значение размером около 1 ТБ. Я ищу простую и быструю встроенную базу данных Java, которая позволила бы мне сопоставить ключ со значением в соответствии с этим набором данных объемом 1 ТБ, который в основном нужно будет читать с диска. Каждая запись в этом наборе данных небольшая (‹500 байт), поэтому я думаю, что использование файловой системы было бы неэффективным.

Я бы хотел использовать для этого Chronicle Map. Я читал, что использование памяти вне кучи может превышать размер оперативной памяти и что она каким-то образом взаимодействует с файловой системой, но в то же время Chronicle Map описывается как база данных в памяти. Может ли Chronicle Map обрабатывать набор данных размером 1 ТБ для моего сервера, или я могу использовать только наборы данных объемом 32 ГБ или меньше?


person user3667125    schedule 31.12.2016    source источник


Ответы (1)


Ответ: это зависит от вашей операционной системы. В Windows карта хроники должна помещаться в основную память, однако в Linux и MacOSX она не имеет исправления в основной памяти (разница в том, как реализовано отображение памяти в этих ОС). ваше дисковое пространство (MacOSX и Windows нет)

Таким образом, в Linux вы можете отобразить 1 ТБ или даже 100 ТБ на машине с 32 ГБ памяти. Важно помнить, что ваш шаблон доступа и ваш выбор диска будут иметь решающее значение для производительности. Если вы обычно получаете доступ к одним и тем же данным большую часть времени и у вас есть SSD, это будет работать хорошо. Если у вас вращающийся диск и шаблон произвольного доступа, вы будете ограничены скоростью вашего диска.

Примечание. Мы протестировали Chronicle Map на 2,5 миллиарда записей, и она работает хорошо, поскольку использует 64-битное хэширование ключей.

person Peter Lawrey    schedule 31.12.2016
comment
Что возвращает ChronicleMap.size() для карты с 2,5 миллиардами записей? Обрывается ли он при максимальном значении int ~ 2,15 миллиарда? - person xpages-noob; 03.01.2018