Я бы сказал, что ответ на этот вопрос вполне квалифицирован. Terracotta действительно позволяет вам работать с кластерными кучами, размер которых превышает размер одной JVM, хотя это не самый распространенный вариант использования.
Вам все еще нужно помнить a) размер рабочего набора и b) объем трафика данных. Для а) существует некоторый набор данных, который должен находиться в памяти для выполнения работы в любой момент времени, и если этот размер рабочего набора> размер кучи, производительность, очевидно, пострадает. Для b) каждый кусок данных, добавленных / обновленных в кластерной куче, должен быть отправлен на сервер. Терракота лучше всего подходит для изменения мелкозернистых полей в графиках pojo. Работа с большими массивами не в полной мере использует возможности Terracotta (что не означает, что люди иногда не используют его таким образом).
Если вы создаете много мусора, то диспетчеры памяти Terracotta и распределенный сборщик мусора должны быть в состоянии справиться с этим. Трудно сказать, не пытаясь определить, превышают ли ваши объемы данных доступную там пропускную способность.
Ваше приложение получит огромную выгоду, если вы используете несколько серверов, а данные разбиты на серверы или имеют некоторую локальность ссылок. В этом случае вам нужны данные только для одного раздела сервера в куче, а остальные не нужно сбрасывать в память. Конечно, при сбое / доступности он будет сбой, если другие серверы выйдут из строя. Это означает, что в случае секционированных данных вы не вещаете на все узлы, а только отправляете транзакции на сервер.
С числовой точки зрения возможно индексировать 30 ГБ данных, так что это не близко к жесткому ограничению.