Хранить сериализованные и сжатые объекты в памяти - PullRequest
0 голосов
/ 06 декабря 2010

В настоящее время я работаю над частью приложения, в которой для дальнейшей работы необходимо выбрать «много» данных, и у меня сложилось впечатление, что ввод-вывод ограничивает, а не следующую работу.Моя идея сейчас состоит в том, чтобы все эти объекты были в памяти, но они были сериализованы в сжатом виде.Вопрос в том, будет ли такой доступ быстрее, чем прямой доступ к базе данных, и будет ли это хорошей идеей или нет.(и если это возможно с точки зрения потребления памяти = сериализованная форма использует меньше памяти, чем обычный объект)

РЕДАКТИРОВАТЬ Февраль 2011:

Создание объектов является медленной частью, а не базой данныхдоступ к себе.Наличие всего в памяти невозможно, а использование опции ehcache для «переполнения на диск» на самом деле медленнее, чем просто получение данных из базы данных.Стандартная Java-сериализация также непригодна для использования.это также намного медленнее.Так что я ничего не могу с этим поделать ...

Ответы [ 3 ]

1 голос
/ 06 декабря 2010

Вы в основном ищете кэш в памяти или сетку данных в памяти. Для такого рода вещей существует множество API / продуктов. ehcache / hibernate chace / gridgain и т. д. и т. д.

0 голосов
/ 06 декабря 2010

«У меня сложилось впечатление, что ввод-вывод ограничивает, а не выполняет следующую работу.» -> Я был бы очень уверен в этом, прежде чем приступить к реализации такой вещи.

Более простой подход, который я могу предложить, - это использовать ehcache с возможностью сохранения на диске, когда размер кэша становится слишком большим.

Другим совершенно другим подходом может быть использование некоторого doc на основе doc, например couchdb, для хранения объектов, выбранных «для дальнейшей работы»

0 голосов
/ 06 декабря 2010

Сжатая сериализованная форма будет использовать меньше памяти, если это большой объект.Однако для небольших объектов, например, которые используют примитивы.Исходный объект будет намного меньше.

Я бы сначала проверил, действительно ли вам нужно это сделать.Например, вы можете просто потреблять больше памяти?или реструктурируйте ваши объекты так, чтобы они использовали меньше памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...