Apollo GraphQL数据加载器DynamoDb



我是GraphQL的新手,正在阅读有关N+1问题和数据加载器模式以提高性能的文章。我正在考虑用DynamoDB为数据库启动一个新的GraphQL项目。我做了一些初步的研究,发现了一些用于dataloader和DynamoDb的小型NPM包,但它们似乎没有得到积极支持。因此,在我看来,从我最初的研究来看,DynamoDB可能不是支持Apollo GraphQL应用程序的最佳选择。

是否可以针对DynamoDb数据库实现数据加载器模式?

Dataloader并不关心您拥有什么样的数据库。真正重要的是,有一些方法可以批量处理您的操作。

例如,对于通过ID获取单个实体,使用SQL,您会得到一些类似以下的查询:

select * from product where id = SOME_ID_1

与此等效的批处理可能是in查询,如下所示:

select * from product where id in [SOME_ID_1, SOME_ID_2, SOME_ID_3]

单次查询和批量查询的实际机制会因您使用的数据库而异,可能并不总是可能的,但通常是可能的。快速搜索显示DynamoDB具有BatchGetItem,这可能正是您所需要的。

批量处理需要额外参数(如分页或复杂过滤(的查询可能更具挑战性,可能值得也可能不值得投入精力。但是将任何看起来像";通过ID得到X";总是值得的。

在寻找特别支持Dataloader和DynamoDB的库方面,我不会担心。你不需要这种级别的工具。只要有某种方法可以构建数据库查询,并且您可以将其放入一个函数中,该函数接受一个ID数组并以正确的形状返回结果,您就可以完成它——这通常还不复杂到足以证明添加另一个库是合理的。

最新更新