前 Twitter 技术负责人和 Couchbase 一起创建了一款新的通用时态数据库 FaunaDB。
前 Twitter 基础设施架构师兼负责人 Evan Weaver、前 Twitter 数据库团队技术负责人 Matt Freels 及 Couchbase 联合创始人 Chris Anderson 合力创建了新的“自适应操作型数据库”,当他们还在 Twitter 工作的时候就希望有这样的数据库。其结果就是 FaunaDB ,这是一个承诺可以线性扩展的、面向对象的关系型分布式数据库。
FaunaDB 是一个 CP 系统,旨在提供一致性和分区容错性。它可以跨多个数据中心运行,即使其中有少数出现故障,服务也不会中断。它可以横向和纵向扩展,它可以运行在单台笔记本 、单台服务器、本地或云上的多台务器上,包括虚拟化或容器化场景。
和 Datomic 类似,FaunaDB 保留数据的所有实例,当执行写入时,不会覆写,而是创建新实例。这在审计数据及核实数据随时间的变化时尤其有用。
从数据建模角度来看,FaunaDB 试图给每个人他们想要的一切:关系型——非 SQL,但支持连接、外键、索引、文档、图形、面向对象。为了进一步了解这个新数据库,我们向 Weaver 提出了几个问题。
InfoQ:你们是如何界定 FaunaDB 的?
Evan Weaver:FaunaDB 是一个事务型的、时态型的、地理分布的、强一致性的、安全的、多租户的、QoS 托管的操作型数据库。为了可移植,它基于 JVM 实现,它是关系型的,但非 SQL。作为替代,它通过类型安全的嵌入式 DSL(如 LINQ)进行查询。FaunaDB 回归了通用数据库模型,但是面向云的,而不是 80 年代的大型机。
InfoQ:FaunaDB 与其他的数据库服务,如 Amazon DynamoDB 或 Google Firebase,有什么不同?
Weaver:DynamoDB 和 Firebase 都不是通用数据库。DynamoDB 是一个键 / 值数据库,带一些扩展,而 Firebase 是一个层次数据库——一个我自 MUMPS 以来就没见过的模型。它们都不是地域重复的,它们都会永远地将你绑定到单个云提供商,没有提供本地或多云选项。
InfoQ:据我了解,FaunaDB 可以跨数据中心复制。这是一个实时备份过程,还是说,用户可以同时访问托管在不同数据中心里的实例,然后为了减少延迟而选择一个离他们更近的?
Weaver:是后者。用户会被自动地路由到最近的数据中心,但他们的数据在任何地方都是实时可用的。目前,我们的云涵盖了 AWS 和谷歌云平台。到今年年底,出于数据主权的考虑,你将可以选择数据实际存储的区域。
FaunaDB 既可以在本地运行,也可以在云上运行。它还作为一个无需运维的服务提供,目前运行在 AWS 和 GCP 上,很快就有望在 Azure 上提供。
FaunaDB 使用 Scala 和 Java 编写,可以在多种操作系统上的 JVM 上运行,包括 Linux、Windows 和 OS X。该数据库为若干语言提供了驱动程序,包括 Scala、Java、Java/Android、JavaScript、C#、Python、Ruby、Go 和 Swift,不过,也可以直接使用 HTTP API 访问它。
查看英文原文: FaunaDB: A New Distributed Database from the Team That Scaled Twitter
评论