How does an application know which region to talk to? Especially once you can select a subset of regions to be in. Some might not have the data you are looking for.
How does an application know which region to talk to? Especially once you can select a subset of regions to be in. Some might not have the data you are looking for.
You don't have to set any priorities, and partition events don't change commit latency for the cluster majority.
Currently FaunaDB drivers use geo DNS in route53 to automatically find the closest region, although you can pin to specific regions if you know the cname. If that region doesn't own the data for the logical database in question, FaunaDB forwards the request internally.
In the future, drivers will maintain their own ϕ accrual failure detectors and make faster and smarter routing decisions than DNS can provide.
We use a single-phase model inspired by Calvin, rather than Spanner's two-phase model. The tradeoff is that interactive transactions (like in SQL) are not supported, but overall latency and throughput are much better.
You have to reason about every possible consistency configuration including transactions and indexes, but you don't actually get much control over what is indexed. And sort of like DynamoDB it doesn't really support general-purpose transactions, they have to be within a shard.
I think maybe the Mongo adapter is pretty nice though.