Distributed Transaction Store

I am currently developing an application hosted on the Google engine. However, gae has many drawbacks: it is expensive and very difficult to debug, because we cannot get attached to real instances.

I am considering changing gae to an open source alternative. Unfortunately, none of the existing NOSQL solutions that satisfy me support transactions similar to gae transactions (gae support transactions within entity groups).

What do you think about solving this problem? I am currently considering a store like Apache Cassandra + a transaction lock service (hazelcast). Does anyone have any experience in this area? What can you recommend

+4
source share
2 answers

In the future, support for entity groups in cassandra is planned, see CASSANDRA-1684 .

If your data cannot be easily modeled without transactions, is it worth using a non-transational database? Do you need scalability?

The standard way to complete a transaction, for example, in cassandra, is described in this presentation , starting with slide 24. Basically, you write something similar to a WAL record in 1 line, then do the actual entries in several lines, and then delete the WAL log line. If it fails, just read and follow the steps in the WAL log. Since all cassandra entries have a custom timestamp, all entries can be idempotent, just save the timestamp of your entry with a WAL log entry.

This strategy gives you Atomic and Durable in ACID, but you do not get Consistency and Isolation. If you work on a scale that requires something like cassandra, you may have to abandon full ACID transactions.

+2
source

You can try AppScale or TyphoonAE to host applications built for App Engine on your own hardware.

If you are developing for Python, you have some very interesting debugging options with the Werkzeug debugger .

+1
source

Source: https://habr.com/ru/post/1396778/


All Articles