title: Does Apache Ignite support distribute transaction
body: <p>I learned the example of apache Ignite. I just want ignite to help to solve distribute transactions. For example。 My account is in DB A,  My wife account is in DB B. I want to transfer money to my wife. So the
  transaction like this :</p>
  <pre><code>           IgniteTransactions transactions = ignite.transactions();
             p1.setSalary(500);
             p2_1.setSalary(1500);
             Transaction tx = transactions.txStart(TransactionConcurrency.PESSIMISTIC,TransactionIsolation.SERIALIZABLE);
          
           try {
             cache.put(1L, p1);
             
             cache2.put(1L,p2_1);
             
             tx.commit();
           }catch(Exception e) {
               tx.rollback();
           }
  </code></pre>
  <p>But the cacheStore is like that :</p>
  <pre><code>    public void write(Entry&lt;? extends Long, ? extends Person&gt; entry) throws CacheWriterException {
        System.out.println(&quot; +++++++++++  single wirte&quot;);
         Long key = entry.getKey();
          Person val = entry.getValue();
  
          System.out.println(&quot;&gt;&gt;&gt; Store write [key=&quot; + key + &quot;, val=&quot; + val + ']');
  
          try {
              Connection conn = dataSource.getConnection();
  
              int updated;
  
              // Try update first. If it does not work, then try insert.
              // Some databases would allow these to be done in one 'upsert' operation.
              try (PreparedStatement st = conn.prepareStatement(
                  &quot;update PERSON set orgId = ?, name = ?, salary=?  where id = ?&quot;)) {
                  st.setLong(1, val.getOrgId());
                  st.setString(2, val.getName());
                  st.setLong(3, val.getSalary());
                  st.setLong(4, val.getId());
  
                  updated = st.executeUpdate();
              }
  
              // If update failed, try to insert.
              if (updated == 0) {
                  try (PreparedStatement st = conn.prepareStatement(
                      &quot;insert into PERSON (id, orgId,name, salary) values (?, ?, ?,?)&quot;)) {
                      st.setLong(1, val.getId());
                      st.setLong(2, val.getOrgId());
                      st.setString(3, val.getName());
                      st.setLong(4, val.getSalary());
                      st.executeUpdate();
                  }
              }
          }
          catch (SQLException e) {
              throw new CacheWriterException(&quot;Failed to write object [key=&quot; + key + &quot;, val=&quot; + val + ']', e);
          }
      
      
  }
  </code></pre>
  <p>When the part one commit that the salary  updated, the second part failed. part one can not rollback.</p>
  <p>How could commit or rollback them simultaneously? does ignite guarantee this or you do it your self?</p>
  <p>ps: why ignite said that : it accelerate the transaction? it seems that it only accelerate querys , not deleting or updating operations. because it simultaneously access database when the soft transaction memory happens.</p>
  <p>Can somebody figure it out? I don't understand the principle of ignite.</p>