Which part of the following code will run at the server side

134 Views Asked by At

I am loading data from mysql into Ignite cache with following code. The code is run with client mode Ignite and will load the data into Ignite cluster.

I would ask:

  1. Which parts of the code will run at the server side?

  2. The working mechanism of loading data into cache looks like map-reduce, so, what tasks are sent to the server? the sql?

  3. I would particularlly ask: will the following code run at the client side or the server sdie?

    CacheConfiguration cfg = StudentCacheConfig.cache("StudentCache", storeFactory); IgniteCache cache = ignite.getOrCreateCache(cfg);

Following is the full code that loads the data into cache

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();
    }
}
1

There are 1 best solutions below

3
On BEST ANSWER

The code you showed here will be executed within your application, there is no magic happening. Usually it's a client node, however in your case it's started in server mode (probably by mistake): Ignition.setClientMode(false).

The data loading process will happen on each server node. I.e. each server node will execute SQL queries provided to load the data from the DB.