Fauna Blog Technical Highlights of 2018
Going into a new year, it’s important to review where you’ve come from. In 2017, Fauna established itself in the serverless ecosystem. In 2018, FaunaDB’s relational capabilities brought in high-value workloads like distributed ledger and social notification targeting. In 2019, we are building on these accomplishments, with industry-defining features in the works. This post is a review of 2018 blog content, with a focus on technical content and our global ACID transaction capabilities.
Distinguish Calvin's clockless architecture from Spanner-style clock-dependence.
The next section is a deep dive into the technical details of FaunaDB's distributed transaction protocol, so the following video is a good background on the topic:
Calvin vs Spanner
One of Fauna’s big themes in 2018 was distinguishing our Calvin-based clockless architecture from Spanner-style clock-dependent consistency. There were a handful of blog posts and webcasts on the topic, including our webcast on Spanner vs. Calvin - Comparing consensus protocols in strongly consistent database systems, with Professor Daniel Abadi.
On September 21, Daniel J. Abadi, Professor of Computer Science University of Maryland College Park wrote a controversial blog post, entitled "NewSQL database systems are failing to guarantee consistency, and I blame Spanner," that received hundreds of comments and much debate on Hacker News and the post itself. In the webcast, Daniel Abadi goes into deeper technical detail on the two major approaches to guaranteeing consistency in geo-replicated database systems.
In a follow up post, Partitioned consensus and its impact on Spanner’s latency, Professor Abadi dives into the discussion around latency and the differences between unified-consensus systems and partitioned-consensus systems.
The core protocol maintains consistency across geographic distances with only a single round of consensus.
If you are interested in the architecture behind FaunaDB’s implementation of the Calvin protocol, we also shared some technical content about the distributed storage engine. In Consistency without Clocks: The FaunaDB Distributed Transaction Protocol, Matt Freels describes how transactions are implemented in FaunaDB. The post describes the deterministic transaction log and scalable storage, and then explains how the core protocol maintains consistency across geographic distances with only a single round of consensus.
Chris Anderson discusses FaunaDB’s deterministic consistency in a follow-up webcast: Consistency without clocks—database correctness at scale. Chris discusses how consistency is managed in FaunaDB and analyzes its architectural advantages over Google Spanner and Spanner derivatives, such as Cockroach and Yugabyte.
See FaunaDB’s robustness under failure scenarios in this 3-minute video screencast by Cary Bourgeois:
For the technical background, read Demonstrating Transactional Correctness in Failure Situations.
Engineering Blog Posts
Aside from discussion of our Calvin-based architecture, here are a few developer highlights from 2018:
If you are coming from a relational database background, FaunaDB: a guide for relational users will give you the concepts you need to succeed with FaunaDB.
Lowering friction for common tasks gives developers time to implement more valuable things. Read Introducing Endpoints to see how you can connect the Fauna Shell to any FaunaDB installation, whether it is in the cloud or on your own workstation.
Setting up FaunaDB is really simple and can be done within a few minutes.
Speaking of on-premise installations, Setting up a new Fauna Cluster using Docker is a great place to start. When Fauna’s new Director of Products embarked on setting up his first FaunaDB cluster, on his second week on the job, he imagined it would take hours. Leave aside Oracle RAC — even Cassandra and Mongo gave him a hard time. Turns out that setting up FaunaDB is really simple and can be done within a few minutes. See how he did it.
If you are writing accounting code, you might enjoy this tutorial on how to create and query a ledger with FaunaDB.
On the backend, our 4-part Getting Started with Fauna Using Go series is a powerful way to learn the database.
Fauna sponsored a two-day FreeCodeCamp JAMStack Hackathon event, including a livestream interview from Github’s video studio. We learned so much by hacking alongside database technology users. Learn the JAMStack in minutes with this video from FreeCodeCamp with Netlify or start with the steps in this “running” section here.
Breezeworks uses FaunaDB history to add event streams and audit logging for their SaaS customers.
One of the easiest ways to get started with Fauna is by teeing writes from your existing database. Read Serverless change capture for Ruby on Rails to learn about how Breezeworks uses FaunaDB history to add event streams and audit logging for their SaaS customers.
In this article, we cover intelligent batching, a GraphQL performance technique for FaunaDB. The lessons might be useful no matter which database you use.
If you are skeptical about running relational workloads in a cloud native database, read about how relational NoSQL is something you can have today in your database. The underlying storage format of the data isn’t what matters—it is how you can access it.