详细内容或原文请订阅后点击阅览
使用 Quack 在三个远程 DuckDB 服务器上同时运行 SQL
远程 SQL 执行的一个小实验使用 Quack 在三个远程 DuckDB 服务器上同时运行 SQL 的帖子首先出现在 Towards Data Science 上。
来源:走向数据科学,DuckDB 的优秀人员发布了一个名为 Quack 的数据库通信协议。其主要目的是允许不同服务器上的 DuckDB 数据库以客户端/服务器的方式通过 HTTP 相互通信,并允许它们相互读取和写入数据。
换句话说,使用 Quack 协议,服务器 A 上的 DuckDB 现在可以查询或写入远程服务器 B 上的 DuckDB 数据库。这听起来有点像分布式数据处理,但事实并非如此,DuckDB 团队煞费苦心地强调 Quack 不利于分布式查询处理。
即便如此,我还是很感兴趣,并且看到了 Quack 的许多用途。我特别想知道是否可以在每台服务器上触发并行 SQL 语句,并收集每个查询的输出并使其可供在协调服务器上使用或显示。
请注意,这与在单个 SQL 语句中简单地连接不同服务器上的表不同。例如,DuckDB 可以通过将数据库从服务器 B 连接到服务器 A 来实现这一点,然后在服务器 A 上运行 SQL,该 SQL 可以读取服务器 B 上的数据,就好像它是本地数据一样。
因此,为了研究 Quack 应该启用的并发读取和写入,我创建了一个名为 cluster-duck 的 GitHub 存储库,不,它不是分布式 DuckDB 集群。这只是你可能已经知道的常见、粗鲁表达方式的喜剧表现。但它可以让您对远程 DuckDB 数据库进行并发读取和写入。
注意:在继续之前,我想声明,我与本文中提到的任何产品、系统或其创建者没有任何隶属关系或商业关联。
设置
为了测试 Quack,我通过 CloudFormation 堆栈设置了 3 个 AWS EC2 服务器。每台服务器都拥有一个 DuckDB 数据库,其中一台服务器还充当协调节点。您可以在我的 GitHub 存储库上找到 CF 堆栈。
对于所有三台 EC2 服务器,安装了以下内容,
