Hi,

Ignite has 2 JDBC drivers.
1. Client driver [1] starts client node (has all failover features) and you
have to pass client node config in URL.
2. Thin Driver [2] that connect directly to one of Ignite server node.

So, you need a first one to be able to use streaming mode.

[1] https://apacheignite-sql.readme.io/docs/jdbc-client-driver
[2] https://apacheignite-sql.readme.io/docs/jdbc-driver

On Fri, Mar 30, 2018 at 1:16 PM, <[email protected]> wrote:

> Hi Andrey,
>
>
>
> I am trying to run [2], as:
>
> // Register JDBC driver.
>
> Class.forName("org.apache.ignite.IgniteJdbcDriver");
>
> // Opening connection in the streaming mode.
>
> Connection conn = DriverManager.getConnection("
> jdbc:ignite:cfg://streaming=true@file:///etc/config/ignite-jdbc.xml");
>
>
>
> However, I'm a bit confused about that setting in [2] about the
> ignite-jdbc.xml.
>
>
>
> I do not know how to find or create the xml, and here I run the ignite
> node via JVM.
>
>
>
> If I can write java code to produce the ignite-jdbc or not? Or only
> complete Spring XML configuration?
>
>
>
> By the way, I have tried the [1], that worked well.
>
>
>
> Finally, I still need to use the SQL as a client node, and quick write
> data into cache.
>
>
>
> Thank you for helping me
>
>
>
> Rick
>
>
>
>
>
> *From:* Andrey Mashenkov [mailto:[email protected]]
> *Sent:* Thursday, March 29, 2018 6:20 PM
> *To:* [email protected]
> *Subject:* Re: How to insert multiple rows/data into Cache once
>
>
>
> Hi,
>
>
>
> Try to use DataStreamer for fast cache load [1].
>
> If you need to use SQL, you can try to use bulk mode updated via JDBC [2]
>
>
>
>
>
> Also a COPY SQL command [3] will be available in next 2.5 release.
>
> The feature is already in master, you can try to build from it. See
> example [4]
>
> .
>
>
>
> [1] https://apacheignite.readme.io/docs/data-streamers
>
> [2] https://apacheignite.readme.io/v2.0/docs/jdbc-
> driver#section-streaming-mode
>
> [3] https://issues.apache.org/jira/browse/IGNITE-6917
>
> [4] https://github.com/apache/ignite/blob/master/examples/
> src/main/java/org/apache/ignite/examples/sql/SqlJdbcCopyExample.java
>
>
>
> On Thu, Mar 29, 2018 at 11:30 AM, <[email protected]> wrote:
>
> Dear all,
>
>
>
> I am trying to use the SqlFieldsQuery sdk to insert data to one cache on
> Ignite.
>
>
>
> I can insert one data into one cache at a time.
>
>
>
> However, I have no idea to insert multiple rows/data into the cache once.
>
>
>
> For example, I would like to insert 1000 rows/data into the cache once.
>
>
>
> Here, I provide my code to everyone to reproduce my situation.
>
> *public* *class* IgniteCreateServer {
>
> *public* *class* Person {
>
>  @QuerySqlField
>
>  *private* String firstName;
>
>   @QuerySqlField
>
>   *private* String lastName;
>
>   *public* Person(String firstName, String lastName) {
>
>     *this*.firstName = firstName;
>
>     *this*.lastName = lastName;
>
>   }
>
> }
>
> *public* *static* *void* main(String[] args) {
>
> cacheConf.setName("igniteCache");
>
> *cacheConf**.setIndexedTypes(String.**class**, String.**class**)*;
>
> cacheConf.setCacheMode(CacheMode.*REPLICATED*);
>
> cacheConf.setAtomicityMode(CacheAtomicityMode.*ATOMIC*);
>
>   cfg.setCacheConfiguration(cacheConf);
>
>   Ignite igniteNode = Ignition.*getOrStart*(cfg);
>
>   *IgniteCache* cacheKeyvalue = *igniteNode**.getOrCreateCache(*
> *cacheConf**)*;
>
>
>
> *long* starttime, endtime;
>
> starttime = System.*currentTimeMillis*();
>
> *int* datasize = 100000;
>
> *for* (*int* i = 0; i < datasize; i++) {
>
>     cacheKeyvalue.put("key " + Integer.*toString*(i), Integer.*toString*(i
> ));
>
> }
>
>   endtime = System.*currentTimeMillis*();
>
>   System.*out*.println("write " + datasize + " pairkeyvalue data: spend "
> + (endtime - starttime)  + "milliseconds");
>
> //==========================================================
> =======================================================
>
>
>
> cacheCfg.setName("personCache");
>
> cacheCfg.setIndexedTypes(String.*class*, Person.*class*);
>
> cacheCfg.setCacheMode(CacheMode.*REPLICATED*);
>
> cacheCfg.setAtomicityMode(CacheAtomicityMode.*ATOMIC*);
>
> *IgniteCache* cacheKeyTable = igniteNode.getOrCreateCache(cacheCfg);
>
>
>
> *long* starttime1, endtime1;
>
> starttime1 = System.*currentTimeMillis*();
>
> *for* (*int* i = 0; i < datasize; i++) {
>
> cacheKeyTable.query(*new* SqlFieldsQuery("INSERT INTO
> Person(_key,firstName,lastName) VALUES(?,?,?)")
>
> .setArgs(i, "key " + Integer.*toString*(i), Integer.*toString*(i)));
>
> }
>
> endtime1 = System.*currentTimeMillis*();
>
> System.*out*.println("write" + datasize + " table data: spend " + (
> endtime1 - starttime1)  + "milliseconds");
>
> }
>
>
>
> The my code show as:
>
> “write 100000 pairkeyvalue data: spend 4734 milliseconds
>
> write 100000 table data: spend 2846 milliseconds”
>
>
>
> From the above result, I feel that using the SQL to insert data to cache
> is faster than using cache.getall().
>
>
>
> I am not sure if this is correct or not?
>
>
>
> In addition, that is important for me to insert data into cache via the
> use of SQL,
>
> so I would like to insert multiple rows/data to accelerate it.
>
>
>
> if any further information is needed, I am glad to be informed and will
> provide to you as soon as possible.
>
>
>
> Thanks
>
>
>
> Rick
>
>
>
>
>
>
>
>
>
>
>
>
>
> --
> 本信件可能包含工研院機密資訊,非指定之收件者,請勿使用或揭露本信件內容,並請銷毀此信件。 This email may contain
> confidential information. Please do not use or disclose it in any way and
> delete it if you are not the intended recipient.
>
>
>
>
>
> --
>
> Best regards,
> Andrey V. Mashenkov
>
>
> --
> 本信件可能包含工研院機密資訊,非指定之收件者,請勿使用或揭露本信件內容,並請銷毀此信件。 This email may contain
> confidential information. Please do not use or disclose it in any way and
> delete it if you are not the intended recipient.
>



-- 
Best regards,
Andrey V. Mashenkov

Reply via email to