如何解决Apollo GraphQL DataLoader DynamoDb
我是GraphQL的新手,正在阅读有关N + 1问题和数据加载器模式的信息,以提高性能。我正在寻找使用DynamoDB启动数据库的新GraphQL项目。我已经进行了一些初步研究,发现了一些用于数据加载器和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数组并以正确的形状返回结果,就可以做到这一点-通常这并不足够复杂有理由添加另一个库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。