powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Большой кэш
29 сообщений из 29, показаны все 2 страниц
Большой кэш
    #38354986
Tomaso
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !

Нужно в кэше хранить большие (1000) количество объектов. Размер каждого в памяти где-то 15-20 метров. Так так heap маленький (увеличить возможности нету и это почти весь рам на машинке, out off heap ne прокатит) храним 80 элементов в кэше остальные объекты сериазлизированные в файлы. Если нету в кэше десиазилируем. Сериализатор - JBOS River, работает адски быстро. Но всё равно этого не достаточно, так как тратится время на десирилзацию, а хочется всё хранить в кеше - памяти. Какие есть паттерны по решению такой тех. задачи ? Может у кого есть опыт ?
...
Рейтинг: 0 / 0
Большой кэш
    #38355003
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как так получилось что объекты соврешенно не имееют одинаковы частей, которые можно было бы хранить отдельно? Что там вообще в 20Мб? Бинарников много? Или одни только объекты?
...
Рейтинг: 0 / 0
Большой кэш
    #38355006
apajan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tomaso,

может, мой совет и никчёмен, но может лучше использовать табличную БД для таких объёмов ?
...
Рейтинг: 0 / 0
Большой кэш
    #38355014
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не очень понял, взаимоисключающих требованй "увеличить возможности нету" и "а хочется всё хранить в кеше - памяти", "так как тратится время на десирилзацию".
Хранить в памяти - нельзя, её мало.
Хранить на диске нельзя - хочется в памяти.
Сжать нельзя, потому что хочется быстрее чем любая сериализация.
...
Рейтинг: 0 / 0
Большой кэш
    #38355021
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы предложил решить проблему с памятью и рассмотреть, например Unsafe, чтобы минимизировать расходы на сериализацию. Но для всей структуры придется писать реализацию. Там много классов?
http://java.dzone.com/articles/compact-heap-structurestuples
...
Рейтинг: 0 / 0
Большой кэш
    #38355025
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apajanможет, мой совет и никчёмен, но может лучше использовать табличную БД для таких объёмов ?
Что это даст?
...
Рейтинг: 0 / 0
Большой кэш
    #38355027
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно, меппинг файлов в память, но тут надо смотреть на задачу, не для каждой подойдет
...
Рейтинг: 0 / 0
Большой кэш
    #38355037
Tomaso
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczкак так получилось что объекты соврешенно не имееют одинаковы частей, которые можно было бы хранить отдельно? Что там вообще в 20Мб? Бинарников много? Или одни только объекты?

Нет, бинарников там нету. Один объект имеет большой граф объектов в себе. Объект из сторонний библиотеки. Как и почему так реализовано хз.... Но с этими объектами надо уметь быстро работать.
...
Рейтинг: 0 / 0
Большой кэш
    #38355038
apajan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

чтение/запись будут происходить значительно быстрее.
...
Рейтинг: 0 / 0
Большой кэш
    #38355042
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TomasoНет, бинарников там нету. Один объект имеет большой граф объектов в себе. Объект из сторонний библиотеки. Как и почему так реализовано хз.... Но с этими объектами надо уметь быстро работать.
Надо таки рассмотреть граф поближе и подумать можно ли хранить его части. Например часть пускать в обработку, пока остальное грузится.
...
Рейтинг: 0 / 0
Большой кэш
    #38355044
Tomaso
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczя бы предложил решить проблему с памятью и рассмотреть, например Unsafe, чтобы минимизировать расходы на сериализацию. Но для всей структуры придется писать реализацию. Там много классов?
http://java.dzone.com/articles/compact-heap-structurestuples

Unsafe, я писал про out off heap. Нету рама на машинке. Весь рам под heap.
...
Рейтинг: 0 / 0
Большой кэш
    #38355047
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apajanчтение/запись будут происходить значительно быстрее.
Чтение\запись чего? BLOB в поле? Весь граф в таблицы?
И быстрее чем куда? Файл на диск? Чем offheap кэш?
...
Рейтинг: 0 / 0
Большой кэш
    #38355060
apajan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczapajanчтение/запись будут происходить значительно быстрее.
Чтение\запись чего? BLOB в поле? Весь граф в таблицы?
И быстрее чем куда? Файл на диск? Чем offheap кэш?
хранить объект можно и не в блобе, а, разбив сохраняемые параметры на колонки.
Да, быстрее, чем на диск/с диска.
...
Рейтинг: 0 / 0
Большой кэш
    #38355063
Tomaso
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraВозможно, меппинг файлов в память, но тут надо смотреть на задачу, не для каждой подойдет

Вот у меня тоже эта идея крутится в голове ? А какие есть тонкости ? Как я понимаю нужно хранить в кэше набор из Byte буфферов ? Где один буффер - это один файл. Но если подумать, то проблема не в чтение, а в в скорости десериализации . Ну ок, будет байт буффер там объект, так его всё равно надо будет десериализовать в объект.
...
Рейтинг: 0 / 0
Большой кэш
    #38355069
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tomaso,
мало памяти, но хочется ВСЁ хранить в памяти = задача не решаема.
...
Рейтинг: 0 / 0
Большой кэш
    #38355093
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TomasoivanraВозможно, меппинг файлов в память, но тут надо смотреть на задачу, не для каждой подойдет
Вот у меня тоже эта идея крутится в голове ? А какие есть тонкости ? Как я понимаю нужно хранить в кэше набор из Byte буфферов ? Где один буффер - это один файл. Но если подумать, то проблема не в чтение, а в в скорости десериализации . Ну ок, будет байт буффер там объект, так его всё равно надо будет десериализовать в объект.
Отображение файлов в виртуальную память процесса позволяет ускорить работу с этими файлами. Естественно, для часто используемых данных. Для редко используемых - без разницы. Фактически, получаете то же кеширование, только срествами ОС. При этом сами файлы не занимают вашу кучу.
Десериализовать придется, но для часто используемых данных это будет десериализация из памяти, а не с диска. Наилучший же эффект будет, если с этими данными можно работать, не загружая их полность в память, а как с файлами (перейти на столько-то байт, прочитать столько-то)
...
Рейтинг: 0 / 0
Большой кэш
    #38355123
pasha701
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tomasoа хочется всё хранить в кеше - памяти. Хранить в памяти заархивированный обект
...
Рейтинг: 0 / 0
Большой кэш
    #38355130
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pasha701Хранить в памяти заархивированный обект
Автора темы даже скорость сериализации не устраивает. А если сверху будет и архивация, то станет ещё медленнее.
...
Рейтинг: 0 / 0
Большой кэш
    #38355136
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
apajanхранить объект можно и не в блобе, а, разбив сохраняемые параметры на колонки.

Попробуйте завершать свои мысли. Полность нормализиовано хранить, или частично разбив?

apajanДа, быстрее, чем на диск/с диска.
Нет не будет. SQL - накладные ресурсы, ACID - накладные ресурсы. Даже любой NoSQL будет медленее, ведь нужно просто чтение.
...
Рейтинг: 0 / 0
Большой кэш
    #38355138
pasha701
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Архивировать не на файловую систему, а в память, в массив байтов.
...
Рейтинг: 0 / 0
Большой кэш
    #38355142
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TomasoUnsafe, я писал про out off heap. Нету рама на машинке. Весь рам под heap.
Это условности. Если у вас не будет этого кэша на куче, то логично, что размер кучи можно уменьшить.
Самое дорогое железо для такой задачи не будет дороже пары человекомесяцев работы. Поэтому проблема с ограниченим памяти высосана из пальца.
...
Рейтинг: 0 / 0
Большой кэш
    #38355146
Фотография schwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если памяти нет, чтобы засунуть туда эти данные, то задача решается только использованием структур данных, которые адаптированы для записи и чтения с диска (всякие B-tree и прочие).
...
Рейтинг: 0 / 0
Большой кэш
    #38355156
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да. Проблема Всё решать в оперативке обычно из пальца. Если конечно, не расчёт погоды в матмодели.
...
Рейтинг: 0 / 0
Большой кэш
    #38355168
apajan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczapajanхранить объект можно и не в блобе, а, разбив сохраняемые параметры на колонки.

Попробуйте завершать свои мысли. Полность нормализиовано хранить, или частично разбив?

apajanДа, быстрее, чем на диск/с диска.
Нет не будет. SQL - накладные ресурсы, ACID - накладные ресурсы. Даже любой NoSQL будет медленее, ведь нужно просто чтение.

нормализовать или частично - это зависит от объектов. И второй вопрос уже.

SQL - накладные, но тем не менее, работают быстрее. Тут тебе и буфер в памяти, и индексация, и не надо за одним/ста из тысяч объектов гигабитный файл открывать каждый раз.
...
Рейтинг: 0 / 0
Большой кэш
    #38355208
свеном
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эффективные коммерческие решения вашей задачи - это тысячи и десятки тысяч строк кода, над которыми бьются лучшие умы по обе стороны океана. Поэтому вам надо определиться с разумным пределом до которого вы будете "оптимизировать" вашу задачу, а так же по максимуму использовать готовые решения, иначе очень рискуете "зарыться".

Из той немногой информации, что вы предоставили, могу пока что посоветовать посмотреть на вот эти вещи:
1) LevelDB - достаточно резвая обертка для хранения key-value на диске. Она абстрагирует вас от ручной мути с файлами.
2) kryo - очень быстрый сериалайзер для Java.

Эти две штуки (особенно kryo) должны вам здорово помочь. Про всякие Unsafe (имеется ввиду его использование для быстрой сериализации, а не для off-heap) пока что забудьте - слишком муторно. Оставите его на десерт, если готовые решения не помогут.
...
Рейтинг: 0 / 0
Большой кэш
    #38355694
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tomaso, почитай про Ehcache в разделе конфигурирования BigMemory.

http://ehcache.org/documentation/configuration/bigmemory

Не уверен что это тебе подойдет на 100%. Надо пробовать. Собрать макет
и погонять бенчмарки в разных конфигурациях.

В качестве ИМХА - твоя проблема в архитектуре. Что там за объекты по 15-20 метров?
Зачем они нужны целиком? Неужели нельзя прогружать их активные (горячие) атрибуты а остальное
не трогать? Ничего не скажу про JBOS River но его адски-быстрая работа может быть замедлена
тем ЧТО вы заставляете его сериализовывать. Возможно там 99% мусора ненужного.
...
Рейтинг: 0 / 0
Большой кэш
    #38357010
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как? Какие новости? Мне интересен feedback.
...
Рейтинг: 0 / 0
Большой кэш
    #38370511
Tomaso
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё решилось сохранением в кэше другого обьекта (другой класс), он в 5 раз меньше предыдущего. Вот в принципе и весть сказ :)
...
Рейтинг: 0 / 0
Большой кэш
    #38370583
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот. Ато мегабайты, мегабайты...
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Большой кэш
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]