Transaction support in Hbase?
Yes, a wide range of use case require transaction support.
Firstly, we want the client to have great insight and fine-grained control of what the transaction system can do. Having full control on the client side not only allows you to make the best decisions for optimizing for specific use cases, but it also makes integration with third-party systems simpler.
Secondly, when different types of components in your application share the data and update the data in multiple data stores in many different ways(Hadoop applications), it is important for the transaction system to support you.
Thirdly, we require a transaction system that should scale well while adding minimal overhead to your system. A system designed to run applications that process massive amounts of data has to perform well at scale.
What HBase offers or may be not:-
HBase is massively scalable and highly concurrent, but it sacrifices strong consistency guarantees to achieve performance.
Implementing exactly-once semantics on HBase without consistency guarantees for data updates across regions, across tables or across RPC calls is highly challenging and error prone.
Here is, “Transactions as a service”:-
One major component of Tephra is a transaction service that provides support for the clients that perform transactional operations. The service does not perform transactional operations itself; rather, clients “use” the service during the transaction lifecycle to apply logic to a specific transaction model.
Currently Tephra supports a transaction model that implements optimistic concurrency control and multi-version concurrency control methods.
Advantage of a separate service:-
Separating the transaction service allows you to scale it independently and control its resource allocation to get the desired quality of service.
To know more about Tephera architecture go to http://tephra.incubator.apache.org/.
You got it, lets repeat:-
Apache Tephra provides ACID transactions on HBase(Though Apache Tephra usage is not limited to HBase).
Apache Tephra is a transaction engine for Apache HBasethat supports multi-versioning and rollback support.
Lets not pray but see the evolution and adoption at work:-
Hopefully Tephra will see wider adoption as part of Apache Phoenix.