使用MongoDB外部索引的SQL连接

2020-05-08 05:57:25

MongoDB和MongoDB查询语言(MQL)是围绕文档模型构建的,文档模型直观地直接映射到代码中的对象。这为开发人员创建了一种非常自然和高效的数据处理方式。很高兴看到我们的合作伙伴Rockset为我们的用户提供了实时、交互式的SQL体验,这使得跨MongoDB数据和其他数据源的连接变得很容易。这种伙伴关系是我们不断寻求提高开发人员生产力并使开发人员的生活更轻松的另一种方式。

对于一些背景来说,我们两个队有很长的历史。Rockset是RocksDB和Facebook在线数据平台的原始团队。在他们在Facebook工作期间,他们与我们合作建立了MongoRock。我们很高兴能再次合作。让我介绍一下Rockset的联合创始人兼CTO Dhruba Boreakur,他将更多地介绍Rockset+MongoDB的集成。

Rockset的目的是让智能应用程序开发人员的生活更轻松。这些应用程序可以实时采取行动,无论是决定向客户提供什么、进行供需匹配,还是在需要时发送警报。智能应用包括物联网自动化、即时个性化、实时客户360和许多游戏应用。这些类型的应用程序将在未来十年占据主导地位,MongoDB非常适合它们,因为它具有灵活性和伸缩性。

智能应用程序尽可能多地使用有用的数据,将实时数据和历史数据结合在一起,以便在有限的时间窗口内采取行动。他们通常需要将MongoDB数据与其他数据(多个MongoDB集合或来自Amazon S3或Apache Kafka的数据)近乎实时地组合在一起。为了做出最佳决策或采取最佳行动,他们需要对大规模数据运行复杂查询,但仍然需要低延迟。了解到MongoDB在许多情况下被广泛用作主要数据库,我们开始尽可能简单地构建智能应用程序,使用Rockset来服务对MongoDB数据的SQL查询。

Rockset允许您通过点击应用程序中的REST端点来运行实时SQL查询,该功能称为查询lambdas。为了能够对来自MongoDB的数据执行同样的操作,我们构建了Rockset使用MongoDB Change Streams持续从MongoDB Atlas获取和索引数据的能力。我将介绍使用Rockset+MongoDB组合时开发人员的体验。

我们与MongoDB团队合作开发了从MongoDB Atlas到Rockset的连接器,这是两个完全托管的云服务。详细文档可以在此处找到。

在MongoDB Atlas中,您将创建一个被授予find、changeStream和CollStats操作的自定义角色。

要实现MongoDB Atlas和Rockset之间的连接,您必须将三个Rockset IP地址列入白名单。

获取MongoDB Atlas集群的连接字符串,因为您将在稍后将其指定给Rockset。

转到Rockset控制台,在这里我们可以管理Rockset集合、与数据源、查询和用户的集成,您可以创建与MongoDB的集成。您需要提供刚刚创建的MongoDB Atlas用户的用户名和密码,以及您检索到的连接字符串。

一旦创建了集成,您就可以创建由MongoDB Atlas支持的Rockset集合。在MongoDB Atlas中指定源数据库和集合-每个MongoDB集合映射到一个Rockset集合-您将看到数据的预览。

Rockset将首先执行MongoDB数据的完全扫描,然后通过MongoDB更改流与集合的任何更新保持同步。

Rockset自动索引所有获取的数据,充当MongoDB数据的外部索引。Rockset使用一个称为聚合索引™的概念在数据的每个字段上构建多个索引-一个搜索索引、一个列索引和一个行索引。这允许快速SQL查询,包括跨不同数据集的搜索式查询、聚合和联接,所有这些都无需手动创建模式。

既然来自MongoDB的数据正在不断地被Rockset摄取和索引,那么您就可以使用查询lambdas保存的SQL查询(通过REST端点访问)来构建您的应用程序了。

首先,在您通过MongoDB集成创建的集合上构建查询。您甚至可以从其他Rockset集合引入数据,这些数据是从其他MongoDB集合或数据源创建的。在本例中,我们使用SQL联接来执行此操作。从那里,您可以从您编写的查询创建一个API端点。

命名并描述查询Lambda,这样您就知道它的用途了。您还将获得要嵌入到应用程序中的代码片段,以进行此API调用。

执行实时搜索、聚合和联接。使用SQL的全部功能来表达不同类型的查询。由于您的所有数据都已编入索引,因此您可以获得毫秒延迟的API来支持您的应用程序。

简化应用程序逻辑。当您能够使用SQL联接连接MongoDB和其他数据集时,可以节省编写应用程序端逻辑的时间。此外,您只需要在代码中调用REST端点来触发查询,而不是嵌入整个查询。

船舶功能更快。作为Rockset标准查询开发流程的一部分,将您的查询作为受版本控制的REST端点进行生产。

通过注册MongoDB Atlas和Rockset,为您的应用程序提供MongoDB数据上的实时API。并在我们6月份的MongoDB.live会议上注册了解更多信息。