Do you mean as presented in the article? With services? Well, I don’t exactly know what you need to do. Entire books have been written on the subject. It’s a really hard problem.
I recall some platforms having a concept of a distributed transaction coordinator, which implies another piece of software to run, along with all your services implementing a protocol for rollback in case of failure.
At this point, you might as well just accept you are full-on Enterprisey. :)
You use an actual transaction - either distributed, or by having a single point of coordination. E.g. store both the user and the profile in a database using three-phase commit with an appropriate transaction isolation level. Or some fancy paxos/raft-based distributed transaction protocol.
Much better to structure your data such that the same record represents both the user and the profile, IMO.
The lack of transactions in BigTable is why Spanner was created; Spanner provides distributed transactions as good as any RDBMS while still being easy to split data across multiple datacenters.
[Comment removed by author]
Do you mean as presented in the article? With services? Well, I don’t exactly know what you need to do. Entire books have been written on the subject. It’s a really hard problem.
You can look at how something like CockroachDB handles a similar problem.
I recall some platforms having a concept of a distributed transaction coordinator, which implies another piece of software to run, along with all your services implementing a protocol for rollback in case of failure.
At this point, you might as well just accept you are full-on Enterprisey. :)
You use an actual transaction - either distributed, or by having a single point of coordination. E.g. store both the user and the profile in a database using three-phase commit with an appropriate transaction isolation level. Or some fancy paxos/raft-based distributed transaction protocol.
Much better to structure your data such that the same record represents both the user and the profile, IMO.
The lack of transactions in BigTable is why Spanner was created; Spanner provides distributed transactions as good as any RDBMS while still being easy to split data across multiple datacenters.
To be honest, I don’t think consistency is undervalued. I think most shops simply don’t think about it.