
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
05.08.2013, 12:59:32
|
|||
|---|---|---|---|
Большой кэш |
|||
|
#18+
Добрый день ! Нужно в кэше хранить большие (1000) количество объектов. Размер каждого в памяти где-то 15-20 метров. Так так heap маленький (увеличить возможности нету и это почти весь рам на машинке, out off heap ne прокатит) храним 80 элементов в кэше остальные объекты сериазлизированные в файлы. Если нету в кэше десиазилируем. Сериализатор - JBOS River, работает адски быстро. Но всё равно этого не достаточно, так как тратится время на десирилзацию, а хочется всё хранить в кеше - памяти. Какие есть паттерны по решению такой тех. задачи ? Может у кого есть опыт ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:03:49
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
как так получилось что объекты соврешенно не имееют одинаковы частей, которые можно было бы хранить отдельно? Что там вообще в 20Мб? Бинарников много? Или одни только объекты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:04:06
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
Tomaso, может, мой совет и никчёмен, но может лучше использовать табличную БД для таких объёмов ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:07:38
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
не очень понял, взаимоисключающих требованй "увеличить возможности нету" и "а хочется всё хранить в кеше - памяти", "так как тратится время на десирилзацию". Хранить в памяти - нельзя, её мало. Хранить на диске нельзя - хочется в памяти. Сжать нельзя, потому что хочется быстрее чем любая сериализация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:09:54
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
я бы предложил решить проблему с памятью и рассмотреть, например Unsafe, чтобы минимизировать расходы на сериализацию. Но для всей структуры придется писать реализацию. Там много классов? http://java.dzone.com/articles/compact-heap-structurestuples ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:10:21
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
apajanможет, мой совет и никчёмен, но может лучше использовать табличную БД для таких объёмов ? Что это даст? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:11:29
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
Возможно, меппинг файлов в память, но тут надо смотреть на задачу, не для каждой подойдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:15:25
|
|||
|---|---|---|---|
Большой кэш |
|||
|
#18+
Blazkowiczкак так получилось что объекты соврешенно не имееют одинаковы частей, которые можно было бы хранить отдельно? Что там вообще в 20Мб? Бинарников много? Или одни только объекты? Нет, бинарников там нету. Один объект имеет большой граф объектов в себе. Объект из сторонний библиотеки. Как и почему так реализовано хз.... Но с этими объектами надо уметь быстро работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:16:11
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
Blazkowicz, чтение/запись будут происходить значительно быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:16:54
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
TomasoНет, бинарников там нету. Один объект имеет большой граф объектов в себе. Объект из сторонний библиотеки. Как и почему так реализовано хз.... Но с этими объектами надо уметь быстро работать. Надо таки рассмотреть граф поближе и подумать можно ли хранить его части. Например часть пускать в обработку, пока остальное грузится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:17:01
|
|||
|---|---|---|---|
Большой кэш |
|||
|
#18+
Blazkowiczя бы предложил решить проблему с памятью и рассмотреть, например Unsafe, чтобы минимизировать расходы на сериализацию. Но для всей структуры придется писать реализацию. Там много классов? http://java.dzone.com/articles/compact-heap-structurestuples Unsafe, я писал про out off heap. Нету рама на машинке. Весь рам под heap. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:17:58
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
apajanчтение/запись будут происходить значительно быстрее. Чтение\запись чего? BLOB в поле? Весь граф в таблицы? И быстрее чем куда? Файл на диск? Чем offheap кэш? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:22:19
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
Blazkowiczapajanчтение/запись будут происходить значительно быстрее. Чтение\запись чего? BLOB в поле? Весь граф в таблицы? И быстрее чем куда? Файл на диск? Чем offheap кэш? хранить объект можно и не в блобе, а, разбив сохраняемые параметры на колонки. Да, быстрее, чем на диск/с диска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:23:05
|
|||
|---|---|---|---|
Большой кэш |
|||
|
#18+
ivanraВозможно, меппинг файлов в память, но тут надо смотреть на задачу, не для каждой подойдет Вот у меня тоже эта идея крутится в голове ? А какие есть тонкости ? Как я понимаю нужно хранить в кэше набор из Byte буфферов ? Где один буффер - это один файл. Но если подумать, то проблема не в чтение, а в в скорости десериализации . Ну ок, будет байт буффер там объект, так его всё равно надо будет десериализовать в объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:26:44
|
|||
|---|---|---|---|
Большой кэш |
|||
|
#18+
Tomaso, мало памяти, но хочется ВСЁ хранить в памяти = задача не решаема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:38:46
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
TomasoivanraВозможно, меппинг файлов в память, но тут надо смотреть на задачу, не для каждой подойдет Вот у меня тоже эта идея крутится в голове ? А какие есть тонкости ? Как я понимаю нужно хранить в кэше набор из Byte буфферов ? Где один буффер - это один файл. Но если подумать, то проблема не в чтение, а в в скорости десериализации . Ну ок, будет байт буффер там объект, так его всё равно надо будет десериализовать в объект. Отображение файлов в виртуальную память процесса позволяет ускорить работу с этими файлами. Естественно, для часто используемых данных. Для редко используемых - без разницы. Фактически, получаете то же кеширование, только срествами ОС. При этом сами файлы не занимают вашу кучу. Десериализовать придется, но для часто используемых данных это будет десериализация из памяти, а не с диска. Наилучший же эффект будет, если с этими данными можно работать, не загружая их полность в память, а как с файлами (перейти на столько-то байт, прочитать столько-то) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 13:55:04
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
Tomasoа хочется всё хранить в кеше - памяти. Хранить в памяти заархивированный обект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 14:01:35
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
pasha701Хранить в памяти заархивированный обект Автора темы даже скорость сериализации не устраивает. А если сверху будет и архивация, то станет ещё медленнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 14:03:32
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
apajanхранить объект можно и не в блобе, а, разбив сохраняемые параметры на колонки. Попробуйте завершать свои мысли. Полность нормализиовано хранить, или частично разбив? apajanДа, быстрее, чем на диск/с диска. Нет не будет. SQL - накладные ресурсы, ACID - накладные ресурсы. Даже любой NoSQL будет медленее, ведь нужно просто чтение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 14:04:40
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
Архивировать не на файловую систему, а в память, в массив байтов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 14:05:45
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
TomasoUnsafe, я писал про out off heap. Нету рама на машинке. Весь рам под heap. Это условности. Если у вас не будет этого кэша на куче, то логично, что размер кучи можно уменьшить. Самое дорогое железо для такой задачи не будет дороже пары человекомесяцев работы. Поэтому проблема с ограниченим памяти высосана из пальца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 14:07:34
|
|||
|---|---|---|---|
Большой кэш |
|||
|
#18+
Если памяти нет, чтобы засунуть туда эти данные, то задача решается только использованием структур данных, которые адаптированы для записи и чтения с диска (всякие B-tree и прочие). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 14:11:18
|
|||
|---|---|---|---|
Большой кэш |
|||
|
#18+
да. Проблема Всё решать в оперативке обычно из пальца. Если конечно, не расчёт погоды в матмодели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 14:15:35
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
Blazkowiczapajanхранить объект можно и не в блобе, а, разбив сохраняемые параметры на колонки. Попробуйте завершать свои мысли. Полность нормализиовано хранить, или частично разбив? apajanДа, быстрее, чем на диск/с диска. Нет не будет. SQL - накладные ресурсы, ACID - накладные ресурсы. Даже любой NoSQL будет медленее, ведь нужно просто чтение. нормализовать или частично - это зависит от объектов. И второй вопрос уже. SQL - накладные, но тем не менее, работают быстрее. Тут тебе и буфер в памяти, и индексация, и не надо за одним/ста из тысяч объектов гигабитный файл открывать каждый раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.08.2013, 14:32:27
|
|||
|---|---|---|---|
|
|||
Большой кэш |
|||
|
#18+
Эффективные коммерческие решения вашей задачи - это тысячи и десятки тысяч строк кода, над которыми бьются лучшие умы по обе стороны океана. Поэтому вам надо определиться с разумным пределом до которого вы будете "оптимизировать" вашу задачу, а так же по максимуму использовать готовые решения, иначе очень рискуете "зарыться". Из той немногой информации, что вы предоставили, могу пока что посоветовать посмотреть на вот эти вещи: 1) LevelDB - достаточно резвая обертка для хранения key-value на диске. Она абстрагирует вас от ручной мути с файлами. 2) kryo - очень быстрый сериалайзер для Java. Эти две штуки (особенно kryo) должны вам здорово помочь. Про всякие Unsafe (имеется ввиду его использование для быстрой сериализации, а не для off-heap) пока что забудьте - слишком муторно. Оставите его на десерт, если готовые решения не помогут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&tablet=1&tid=2128785]: |
0ms |
get settings: |
20ms |
get forum list: |
25ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
52ms |
get topic data: |
19ms |
get forum data: |
5ms |
get page messages: |
92ms |
get tp. blocked users: |
3ms |
| others: | 354ms |
| total: | 584ms |

| 0 / 0 |
