2017-02-22 22 views
1

В моем проекте, планировании использования кеша Hazelcast для повышения производительности вместо запроса таблицы базы данных каждый раз. В таблице базы данных может быть около 1 миллиона записей. Приложение использует кластерную среду (минимум 4 узла).Том данных кэша Hazelcast

Могу ли я загрузить целую 1 миллион записей в кеш? С 1 миллионом записей в кеше, будут ли проблемы с производительностью при извлечении данных? Какое идеальное количество записей может храниться в кеше?

+0

С момента начала использования hazelcast будет много проблем с производительностью (оперативная память и процессор). Идеальный размер кеша должен быть точно настроен в соответствии с вашим применением и инфраструктурой. Комментарий может выглядеть тривиальным, но это нетривиальная работа, чтобы на самом деле создать приложение для правильного использования hazelcast. Путь выше рамки вопроса StackOverflow. –

ответ

0

Конечно, вы можете хранить 1 миллион записей на карте Hazelcast, но обратите внимание, что операции с доставкой & дороги, поскольку они используют внутренние операции для распространения данных. Это будет иметь значение, если вы пытаетесь пройти через набор ключей или пройти через множество записей.
Рекомендуется разбить ваши данные таким образом, чтобы вы ударили по карте кластера меньше раз.
Например, если есть таблица Employee, и вы хотите кэшировать все данные сотрудника. В зависимости от вашего использования & выполните операции, разделите всю таблицу на несколько кусков. В этом случае групповой сотрудник записывает в геологию мудрый или местный мудрый или выделенный проект мудрый и т. Д. Затем у вас есть уникальный ключ, который может попасть в карту Hazelcast, а стоимость может быть набором/картой записей сотрудников. Таким образом, вы ударите кластер один раз (&, следовательно, сеть один раз), а затем обработайте записи в локальной JVM.

В вашем случае, если вы тянете &, обрабатывая записи по одному, тогда имеет смысл нажать все записи на карту и получить операцию на уникальном ключе. У вас может быть фоновый режим, который заботится об обновлении записей на карте.

Кроме того, вы можете использовать NearCache для хранения копии в локальной стороне на стороне клиента для более быстрого доступа. Это часть клиентских конфигураций, и если вы включите NearCache, первая операция get вытащит запись из карты кластера и сохранит ее на локальном уровне, чтобы последующие операции были такими же хорошими, как и локальная карта. Вы можете установить тайм-аут для типов записей, чтобы он мог обновить запись из кластера через определенное время. По умолчанию запись становится недействительной всякий раз, когда соответствующая запись обновляется в распределенной карте.

+0

Еще две вещи, о которых нужно помнить: (1) вы можете использовать [почти кеш] (http://docs.hazelcast.org/docs/3.8/manual/html-single/index.html#near-cache) , который прозрачно поддерживает локальную копию данных, поэтому операции становятся локальными (и дешевле). Что касается Hazelcast 3.8, то в ближайшем кэш-памяти, в конечном счете, последователен. (2), если вам нужно обработать записи, используйте [EntryProcessor] (http://docs.hazelcast.org/docs/3.8/manual/html-single/index.html#entry-processor), чтобы избежать затрат на переезд , В качестве дополнительного бонуса, EntryProcessor гарантированно выполняет атомарно по отношению к другим операциям на одном и том же ключе. –

+0

Спасибо за указание, я забыл включить NearCache. Добавит ссылку. –

 Смежные вопросы

  • Нет связанных вопросов^_^