下面哪部分代码会在服务器端运行
Which part of the following code will run at the server side
我正在使用以下代码将数据从 mysql 加载到 Ignite 缓存中。代码是 运行 客户端模式 Ignite 并将数据加载到 Ignite 集群中。
我会问:
代码的哪些部分将 运行 在服务器端?
将数据加载到缓存的工作机制类似于map-reduce,那么,向服务器发送哪些任务呢? sql?
我特别想问一下:下面的代码运行是在客户端还是在服务端?
CacheConfiguration cfg = StudentCacheConfig.cache("StudentCache", storeFactory);
IgniteCache 缓存 = ignite.getOrCreateCache(cfg);
以下是将数据加载到缓存中的完整代码
public class LoadStudentIntoCache {
public static void main(String[] args) {
Ignition.setClientMode(false);
String configPath = "default-config.xml";
Ignite ignite = Ignition.start(configPath);
CacheJdbcPojoStoreFactory storeFactory = new CacheJdbcPojoStoreFactory<Integer, Student>();
storeFactory.setDialect(new MySQLDialect());
IDataSourceFactory factory = new MySqlDataSourceFactory();
storeFactory.setDataSourceFactory(new Factory<DataSource>() {
public DataSource create() {
try {
DataSource dataSource = factory.createDataSource();
return dataSource;
} catch (Exception e) {
return null;
}
}
});
//
CacheConfiguration<Integer, Student> cfg = StudentCacheConfig.cache("StudentCache", storeFactory);
IgniteCache<Integer, Student> cache = ignite.getOrCreateCache(cfg);
List<String> sqls = new ArrayList<String>();
sqls.add("java.lang.Integer");
sqls.add("select id, name, birthday from db1.student where id < 1000" );
sqls.add("java.lang.Integer");
sqls.add("select id, name, birthday from db1.student where id >= 1000 and id < 1000" );
cache.loadCache(null, , sqls.toArray(new String[0]));
Student s = cache.get(1);
System.out.println(s.getName() + "," + s.getBirthday());
ignite.close();
}
}
您在此处显示的代码将在您的应用程序中执行,没有魔法发生。通常它是一个客户端节点,但是在你的情况下它是在服务器模式下启动的(可能是错误的):Ignition.setClientMode(false)
.
数据加载过程将发生在每个服务器节点上。 IE。每个服务器节点将执行 SQL 提供的查询以从数据库加载数据。
我正在使用以下代码将数据从 mysql 加载到 Ignite 缓存中。代码是 运行 客户端模式 Ignite 并将数据加载到 Ignite 集群中。
我会问:
代码的哪些部分将 运行 在服务器端?
将数据加载到缓存的工作机制类似于map-reduce,那么,向服务器发送哪些任务呢? sql?
我特别想问一下:下面的代码运行是在客户端还是在服务端?
CacheConfiguration cfg = StudentCacheConfig.cache("StudentCache", storeFactory); IgniteCache 缓存 = ignite.getOrCreateCache(cfg);
以下是将数据加载到缓存中的完整代码
public class LoadStudentIntoCache {
public static void main(String[] args) {
Ignition.setClientMode(false);
String configPath = "default-config.xml";
Ignite ignite = Ignition.start(configPath);
CacheJdbcPojoStoreFactory storeFactory = new CacheJdbcPojoStoreFactory<Integer, Student>();
storeFactory.setDialect(new MySQLDialect());
IDataSourceFactory factory = new MySqlDataSourceFactory();
storeFactory.setDataSourceFactory(new Factory<DataSource>() {
public DataSource create() {
try {
DataSource dataSource = factory.createDataSource();
return dataSource;
} catch (Exception e) {
return null;
}
}
});
//
CacheConfiguration<Integer, Student> cfg = StudentCacheConfig.cache("StudentCache", storeFactory);
IgniteCache<Integer, Student> cache = ignite.getOrCreateCache(cfg);
List<String> sqls = new ArrayList<String>();
sqls.add("java.lang.Integer");
sqls.add("select id, name, birthday from db1.student where id < 1000" );
sqls.add("java.lang.Integer");
sqls.add("select id, name, birthday from db1.student where id >= 1000 and id < 1000" );
cache.loadCache(null, , sqls.toArray(new String[0]));
Student s = cache.get(1);
System.out.println(s.getName() + "," + s.getBirthday());
ignite.close();
}
}
您在此处显示的代码将在您的应用程序中执行,没有魔法发生。通常它是一个客户端节点,但是在你的情况下它是在服务器模式下启动的(可能是错误的):Ignition.setClientMode(false)
.
数据加载过程将发生在每个服务器节点上。 IE。每个服务器节点将执行 SQL 提供的查询以从数据库加载数据。