Pulsar的一个常见用例是存储事件数据流。 通常,事件数据由预定义字段构成。 用户查询已存储在Pulsar主题中的现有数据具有巨大的价值。 通过内嵌的schema registry,结构化数据可以存储在Pulsar中,并允许通过SQL语言查询该数据。

By leveraging Presto, we have created a method for users to be able to query structured data stored within Pulsar in a very efficient and scalable manner. 我们将在下面的性能部分讨论为什么Pulsar可以做到如此高效和可扩展。

Pulsar SQL的核心是Presto Pulsar连接器,它允许Presto worker从Pulsar查询数据。

Pulsar的消费者和读取器接口

性能

Pulsar查询性能非常高效且可高度扩展的原因是Pulsar的分层分片存储架构

Pulsar中的主题存储为 Apache Bookkeeper 中的segments。 每个主题segment 也被复制到可配置(默认3个)Bookkeeper节点,允许高吞吐量的并发读取。 在Presto Pulsar连接器中,我们直接从Bookkeeper读取数据,以充分利用Pulsar基于segment 的架构。 因此,Presto worker可以从水平可伸缩的bookkeeper 节点并发读取。

Pulsar的消费者和读取器接口