The second SO answer just says the partitions will be collocated (ie on the
same server) not that the two tables will use the same partition. In any
event, Cassandra does not have the kind of functionality you are looking
for. The closest is logged batch but as Sylvain said, "all that guarantees
is that if some operations of a batch are applied, then all of them will
*eventually* get applied” and “batch have no rollback whatsoever”.

As Cassandra won’t help you here, a potential (although admittedly more
complex) option is to do implement compensating transactions at the
application level (eg in the catch block delete the records that were
inserted). That, however, does not provide you the isolation part of ACID.

You also tend to find that if you have properly denormalised your data
model for Cassandra there is less requirement for these type of batched
updates.

Cheers
Ben

On Fri, 20 Apr 2018 at 15:21 Rajesh Kishore <rajesh10si...@gmail.com> wrote:

> Re-framing my question:
>
> So, it means that having different tables  will not result into same
> partition even though you have same partition key.
> Ex.
> TableA( Partionkey(id))
> TableB( Partionkey(id))
> TableC( Partionkey(id))
>
>
> and as part of batch operation I am somehow providing same id say "20"
> It wont be considered as Atomic as it will result into different partition
> key and there would not be any way to rollback ?
> The same is being claimed in
> https://stackoverflow.com/questions/36700859/does-the-same-partition-key-in-different-cassandra-tables-add-up-to-cell-theoret
>
> Now, the other forum says that how we can keep two tables in same partition
>
> https://stackoverflow.com/questions/34294830/how-to-keep-2-cassandra-tables-within-same-partition
>
> Which one is correct ? Please confirm
>
> Basically , our requirement is - we should be able to achieve similar
> functionality as that of JDBC
> try {
> txn.start()
> operation a
> operation b
>
> ......
> operation n
> txn.commit();
> } catch (Exception e)
> {
>  txn.rollback()
> }
>
> Thanks in advance.
>
> Regards,
> Rajesh
>
> On Fri, Apr 20, 2018 at 9:38 AM, Rajesh Kishore <rajesh10si...@gmail.com>
> wrote:
>
>> So, it means that having different tables  will not result into same
>> partition even though you have same partition key.
>> Ex.
>> TableA( Partionkey(id))
>> TableB( Partionkey(id))
>> TableC( Partionkey(id))
>>
>>
>> and as part of batch operation I am somehow providing same id say "20"
>> It wont be considered as Atomic as it will result into different
>> partition key and there would not be any way to rollback ?
>> The same is being claimed in
>> https://stackoverflow.com/questions/36700859/does-the-same-partition-key-in-different-cassandra-tables-add-up-to-cell-theoret
>>
>> Please confirm
>>
>> Thanks in advance.
>>
>> Regards,
>> Rajesh
>>
>>
>>
>> On Thu, Apr 19, 2018 at 3:10 PM, Jacques-Henri Berthemet <
>> jacques-henri.berthe...@genesys.com> wrote:
>>
>>> When using BATCH on multiple tables you’ll need to use a LOGGED batch.
>>> When you send the request, it will be written to the batch log of all
>>> (relevant) nodes, when this write is successful it will be “accepted”
>>> and nodes will try to apply the batch operations. If for any reason a
>>> statement fails the node will keep retrying forever. In that case you may
>>> see partially applied batch until it’s fixed.
>>>
>>>
>>>
>>> Note that you can’t mix BATCH and LWT on different tables/partitions.
>>>
>>>
>>>
>>> You can get more details here:
>>>
>>> http://cassandra.apache.org/doc/latest/cql/dml.html#batch
>>>
>>> https://inoio.de/blog/2016/01/13/cassandra-to-batch-or-not-to-batch/
>>>
>>> *--*
>>>
>>> *Jacques-Henri Berthemet*
>>>
>>>
>>>
>>> *From:* Rajesh Kishore [mailto:rajesh10si...@gmail.com]
>>> *Sent:* Thursday, April 19, 2018 11:13 AM
>>> *To:* user@cassandra.apache.org
>>>
>>> *Subject:* Re: Does Cassandra supports ACID txn
>>>
>>>
>>>
>>> Thanks for the response. Let me put my question again wrt a example
>>>
>>> I want to perform a atomic txn say insert/delete/update on a set of
>>> tables
>>>
>>> TableA
>>>
>>> TableB
>>>
>>> TableC
>>>
>>> When these are performed as batch operations and let us say something
>>> goes wrong while doing operation at TableC
>>>
>>> Would the system rollback the operations done for TableA TableB ?
>>>
>>> -Rajesh
>>>
>>>
>>>
>>>
>>>
>>> On Thu, Apr 19, 2018 at 1:25 PM, Jacques-Henri Berthemet <
>>> jacques-henri.berthe...@genesys.com> wrote:
>>>
>>> Cassandra support LWT (Lightweight transactions), you may find this doc
>>> interesting:
>>>
>>>
>>> https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlDataConsistencyTOC.html
>>>
>>>
>>>
>>> In any case, LWT or BATCH you won’t have external control on the tx, it’s
>>> either done or not done. In case of timeout you won’t have a way to
>>> know if it worked or not.
>>>
>>> There is no way to rollback a statement/batch, the only way is to send
>>> an update to modify the partition to its previous state.
>>>
>>>
>>>
>>> Regards,
>>>
>>> *--*
>>>
>>> *Jacques-Henri Berthemet*
>>>
>>>
>>>
>>> *From:* DuyHai Doan [mailto:doanduy...@gmail.com]
>>> *Sent:* Thursday, April 19, 2018 9:10 AM
>>> *To:* user <user@cassandra.apache.org>
>>> *Subject:* Re: Does Cassandra supports ACID txn
>>>
>>>
>>>
>>> No ACID transaction any soon in Cassandra
>>>
>>>
>>>
>>> On Thu, Apr 19, 2018 at 7:35 AM, Rajesh Kishore <rajesh10si...@gmail.com>
>>> wrote:
>>>
>>> Hi,
>>>
>>> I am bit confused by reading different articles, does recent version of
>>> Cassandra supports ACID transaction ?
>>>
>>> I found BATCH command , but not sure if it supports rollback, consider
>>> that transaction I am going to perform would be on single partition.
>>>
>>> Also, what are the limitations if any?
>>>
>>>
>>>
>>> Thanks,
>>>
>>> Rajesh
>>>
>>>
>>>
>>>
>>>
>>
>>
> --


*Ben Slater*

*Chief Product Officer <https://www.instaclustr.com/>*

<https://www.facebook.com/instaclustr>   <https://twitter.com/instaclustr>
<https://www.linkedin.com/company/instaclustr>

Read our latest technical blog posts here
<https://www.instaclustr.com/blog/>.

This email has been sent on behalf of Instaclustr Pty. Limited (Australia)
and Instaclustr Inc (USA).

This email and any attachments may contain confidential and legally
privileged information.  If you are not the intended recipient, do not copy
or disclose its content, but please reply to this email immediately and
highlight the error to the sender and then immediately delete the message.

Reply via email to