В Apache разжигайте режим репликации и режим разделения.JAVA

Программисты JAVA общаются здесь
Anonymous
В Apache разжигайте режим репликации и режим разделения.

Сообщение Anonymous »

Я работаю с Apache Ignite 2.17.0 . Я загружаю таблицы базы данных в кеши Ignite и запускаю запросы SQL с использованием API SQLFieldSquery. Режимы кэша.
Пример:
Сотрудник загружается в раздел кэш. Распределенные соединения включены), которые объединяют сотрудников с компанией , используя контекст CACHE -сотрудников (то есть, отправляя запрос из вычислительной задачи с использованием ссылки на кэш сотрудника), воспламенено ошибку, говоря:

table 'Company' не обнаружена

. Таблица успешно загружена в свой собственный кэш, Ignite не может распознать его во время запроса.

Код: Выделить всё

  private @NotNull CacheConfiguration getCacheConfiguration(EntitySpec entitySpec, String cacheName,
Class entityClass, Object compositeClassInstance, Field primaryKeyField, String pojoTableName) {
CacheConfiguration cacheCfg = new CacheConfiguration(cacheName);
cacheCfg.setAtomicityMode(CacheAtomicityMode.ATOMIC);
if (replicateCaches.contains(cacheName)) {
cacheCfg.setCacheMode(CacheMode.REPLICATED);
} else {
cacheCfg.setCacheMode(CacheMode.PARTITIONED);
}
// Initially we disable write-through and then re-enable it after data loading
// has completed
cacheCfg.setWriteThrough(false);
cacheCfg.setReadThrough(false);
cacheCfg.setSqlSchema(schemaName);
cacheCfg.setQueryParallelism(queryParallelism);
// cacheCfg.setAffinity(new RendezvousAffinityFunction(false,
// CACHE_PARTITIONS));
cacheCfg.setOnheapCacheEnabled(enableOnHeapCache);
cacheCfg.setEventsDisabled(false);
cacheCfg.setStatisticsEnabled(true);
cacheCfg.setPartitionLossPolicy(PartitionLossPolicy.IGNORE);

if (enableOnHeapCache) {
log.warn("On-heap caching enabled for {}", entitySpec.getName());
} else {
log.info("Off-heap cache enabled for {}", entitySpec.getName());
}

if (cacheBackups > 0) {
cacheCfg.setBackups(cacheBackups);
cacheCfg.setReadFromBackup(true);
cacheCfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_ASYNC);
log.info("Set cache backups to {}", cacheBackups);
} else {
log.info("Cache backups disabled");
}

// Configure JDBC POJO store factory
CacheJdbcPojoStoreFactory jdbcPojoStoreFactory = jdbcPojoStoreConnectionFactoryProducer
.create();
jdbcPojoStoreFactory.setTypes(createJdbcType(entityClass, cacheName, schemaName, entitySpec.getName(),
Objects.isNull(compositeClassInstance) ? primaryKeyField.getName() : null,
Objects.isNull(compositeClassInstance) ? primaryKeyField.getType() : compositeClassInstance.getClass(),
Objects.isNull(compositeClassInstance) ? null : compositeClassInstance.getClass()));
cacheCfg.setCacheStoreFactory(jdbcPojoStoreFactory);
cacheCfg.setIndexedTypes(
Objects.isNull(compositeClassInstance) ? primaryKeyField.getType() : compositeClassInstance.getClass(),
entityClass);

// Set Query Entity
cacheCfg.setQueryEntities(Collections.singletonList(createQueryEntity(entityClass,
Objects.isNull(compositeClassInstance) ? primaryKeyField.getName() : null,
Objects.isNull(compositeClassInstance) ? primaryKeyField.getType() : compositeClassInstance.getClass(),
pojoTableName, Objects.isNull(compositeClassInstance) ? null : compositeClassInstance.getClass())));

return cacheCfg;
}
< /code>
Теперь, как я запускаю запросы < /p>
QueryCursor> cursor = cache.query(query);
return cursor;
}
Здесь кэш - это employeee_cache , поэтому предоставление контекста employeee_cache мы запускаем этот запрос, как только таблицы базы данных загружаются в кэш. e.id = c.employeee_id
здесь сотрудник загружается разделенным путем, а компания загружается реплицированным способом, когда мы принимаем данные из Postgres через CacheJdbcpojostore. Запустите эти запросы из Computeksk, которая расширяет ComputeTaskAdapter.

Подробнее здесь: https://stackoverflow.com/questions/797 ... -all-toget

Вернуться в «JAVA»