Hi Mike,

As of today Ignite DML does not support transactions and every DML
statement is executed as atomic (Igniters, please correct me if I'm wrong).

But still you can use DataStreamer[1] to improve data loading. Or you can
use Ignite's Cache API with batch operations like putAll.

[1] https://apacheignite.readme.io/docs/data-streamers

On Fri, Feb 9, 2018 at 2:56 PM, Williams, Michael <
michael.willi...@transamerica.com> wrote:

> Is it possible to stream data into a table created by a query? For
> example, consider the following modified example. If I had a Person object,
> how would I replace the insert loop to improve speed?
>
>
>
> Thanks,
>
> Mike
>
>
>
> import org.apache.ignite.Ignite;
>
> import org.apache.ignite.IgniteCache;
>
> import org.apache.ignite.Ignition;
>
> import org.apache.ignite.cache.query.SqlFieldsQuery;
>
> import org.apache.ignite.configuration.CacheConfiguration;
>
>
>
> public class Test {
>
>     private static final String DUMMY_CACHE_NAME = "dummy_cache";
>
>     public static void main(String[] args)
>
>     {
>
>         Ignite ignite = Ignition.start();
>
>         {
>
>
>
>             // Create dummy cache to act as an entry point for SQL queries
> (new SQL API which do not require this
>
>             // will appear in future versions, JDBC and ODBC drivers do
> not require it already).
>
>             CacheConfiguration<?, ?> cacheCfg = new
> CacheConfiguration<>(DUMMY_CACHE_NAME).setSqlSchema("PUBLIC");
>
>             try (IgniteCache<?, ?> cache = ignite.getOrCreateCache(
> cacheCfg))
>
>             {
>
>                 // Create reference City table based on REPLICATED
> template.
>
>                 cache.query(new SqlFieldsQuery("CREATE TABLE city (id LONG
> PRIMARY KEY, name VARCHAR) WITH \"template=replicated\"")).getAll();
>
>                 // Create table based on PARTITIONED template with one
> backup.
>
>                 cache.query(new SqlFieldsQuery("CREATE TABLE person (id
> LONG, name VARCHAR, city_id LONG, PRIMARY KEY (id, city_id)) WITH
> \"template=replicated\"")).getAll();
>
>
>
>                 // Create an index.
>
>                 cache.query(new SqlFieldsQuery("CREATE INDEX on Person
> (city_id)")).getAll();
>
>
>
>                 SqlFieldsQuery qry = new SqlFieldsQuery("INSERT INTO city
> (id, name) VALUES (?, ?)");
>
>
>
>                 cache.query(qry.setArgs(1L, "Forest Hill")).getAll();
>
>                 cache.query(qry.setArgs(2L, "Denver")).getAll();
>
>                 cache.query(qry.setArgs(3L, "St. Petersburg")).getAll();
>
>
>
>                 qry = new SqlFieldsQuery("INSERT INTO person (id, name,
> city_id) values (?, ?, ?)");
>
>             for(long i = 0; i < 100_000;++i)
>
>             {
>
>                 cache.query(qry.setArgs(i, "John Doe", 3L)).getAll();
>
>             }
>
>             System.out.print("HI!");
>
>         }}}}
>
>
>
>
>
>
>
> *From:* Denis Magda [mailto:dma...@apache.org]
> *Sent:* Thursday, February 08, 2018 7:33 PM
> *To:* user@ignite.apache.org
> *Subject:* Re: Cat Example
>
>
>
> Hi Mike,
>
>
>
> If SQL indexes/configuration is set with the annotation and
> setIndexedTypes method then you have to use the type name (Cat in your
> case) as the SQL table name. It’s explained here:
>
> https://apacheignite-sql.readme.io/docs/schema-and-
> indexes#section-annotation-based-configuration
> <https://urldefense.proofpoint.com/v2/url?u=https-3A__apacheignite-2Dsql.readme.io_docs_schema-2Dand-2Dindexes-23section-2Dannotation-2Dbased-2Dconfiguration&d=DwMFaQ&c=9g4MJkl2VjLjS6R4ei18BA&r=ipRRuqPnuP3BWnXGSOR_sLoARpltax56uFYU6n57c3GFvMdyEV-dz2ez2lZZpYl0&m=Nrv7gL0zYS9bFUir2zKHmI30_jJzYTzlic8Vk0kWonQ&s=UZWx1Uz419uytrzu-xRfSiuRqc3rszCQr5rJqNjT8TI&e=>
>
>
>
> The cache name is used for IgniteCache APIs and other related methods.
>
>
>
> —
>
> Denis
>
>
>
> On Feb 8, 2018, at 3:48 PM, Williams, Michael <michael.williams@
> transamerica.com> wrote:
>
>
>
> Hi,
>
>
>
> Quick question, submitted a ticket earlier. How would I modify the below
> code such that, when viewed through Sql (dbeaver, eg) it behaves as if it
> had been created through a CREATE TABLE statement, where the name of the
> table was catCache? I’m trying to directly populate a series of tables that
> will be used downstream primarily through SQL. I’d like to be able to go
> into dBeaver, browse the tables, and see 10 cats named Fluffy, if this is
> working correctly.
>
> import org.apache.ignite.cache.query.annotations.*;
>
> import java.io
> <https://urldefense.proofpoint.com/v2/url?u=http-3A__java.io_&d=DwMFaQ&c=9g4MJkl2VjLjS6R4ei18BA&r=ipRRuqPnuP3BWnXGSOR_sLoARpltax56uFYU6n57c3GFvMdyEV-dz2ez2lZZpYl0&m=Nrv7gL0zYS9bFUir2zKHmI30_jJzYTzlic8Vk0kWonQ&s=oFi3ym9G_GwhhFWtyRu--rylVH_5Vs2w_77tNCIb1Ls&e=>
> .*;
>
>
>
> public class Cat implements Serializable  {
>
>     @QuerySqlField
>
>     int legs;
>
>     @QuerySqlField
>
>     String name;
>
>
>
>     Cat(int l, String n)
>
>     {
>
>         legs = l;
>
>         name = n;
>
>     }
>
> }
>
>
>
>
>
> import org.apache.ignite.Ignition;
>
> import org.apache.ignite.Ignite;
>
> import org.apache.ignite.IgniteCache;
>
> import org.apache.ignite.cache.CacheMode;
>
> import org.apache.ignite.configuration.CacheConfiguration;
>
> import org.apache.ignite.cache.query.SqlFieldsQuery;
>
> import org.apache.ignite.cache.query.QueryCursor;
>
> import java.util.List;
>
> public class Test {
>
>     public static void main(String[] args)
>
>     {
>
>
>
>         Ignite ignite = Ignition.start();
>
>             CacheConfiguration<Integer,Cat> cfg= new
> CacheConfiguration("catCache");
>
>
>
>             cfg.setCacheMode(CacheMode.REPLICATED);
>
>             cfg.setSqlEscapeAll(true);
>
>             cfg.setSqlSchema("PUBLIC");
>
>             cfg.setIndexedTypes(Integer.class,Cat.class);
>
>             try(IgniteCache<Integer, Cat> cache =
> ignite.getOrCreateCache(cfg))
>
>             {
>
>                 for (int i = 0; i < 10; ++i) {
>
>                     cache.put(i, new Cat(i + 1,"Fluffy"));
>
>                 }/*
>
>                 SqlFieldsQuery sql = new SqlFieldsQuery("select * from
> catCache");
>
>                 try (QueryCursor<List<?>> cursor = cache.query(sql)) {
>
>                     for (List<?> row : cursor)
>
>                         System.out.println("cat=" + row.get(0));
>
>                 }*/
>
>             }
>
>             System.out.print("Got It!");
>
>
>
> }}
>
> Thanks,
>
> *Mike Williams*
>
>
>



-- 
Sincerely Yours Amir Akhmedov

Reply via email to