当前位置: 首页 > 科技观察

为什么GraphQL不是数据库查询的行业标准?_0

时间:2023-03-16 13:19:41 科技观察

翻译|布加迪评论|SunShujuanGraphQL正迅速成为许多处理数据的公司的首选查询语言。虽然数据管理是许多公司最关心的问题之一,但许多人并不真正了解GraphQL的作用或它为何如此受欢迎。平均而言,全世界每天产生约2.5TB的数据。企业需要一种方法来收集这些数据并有效地使用它。应用程序中会生成大量数据(例如客户服务智能手机应用程序,可让客户告诉您他们是否满意,或者他们是否有任何问题并需要帮助进行故障排除)。应用程序需要一种将信息发送到后端的方法,以及管理和存储数据的工具。然后可以分析数据以确定问题并制定解决方案。当然这是双向的。应用程序不仅向后端发送数据,应用程序还需要来自后端的数据,例如推荐、交付状态、账户余额。这正是GraphQL擅长的:向后端发送数据,并从后端获取数据。它是一种更现代的API,可将应用程序连接到后端。许多技术领导者可能听说过GraphQL,但他们可能更熟悉SQL(结构化查询语言)。SQL本质上是数据库查询的行业标准,但GraphQL正在获得发展势头。GraphQL与SQL相比如何?有没有办法在执行查询时两全其美?1.GraphQLvsSQL:综合比较GraphQL具有相对简单易读的数据访问格式。这种独特的格式允许所谓的“嵌套”。嵌套就像在另一个问题中提出一个问题以获得更具体的答案。例如,您可能不只是询问某个栖息地的所有狗的列表,而是询问所有狗的列表,其中包含这些狗的每个品种的嵌套详细信息(取自完全不同的数据源,甚至是第三方数据源)方数据源)。狗的名单。QraphQL的嵌套查询能力允许前端开发人员通过单个请求从API获取相关信息。由于GraphQL几乎是一种通用的查询语言,可以轻松处理不同的数据源,你也可以同时查询多个API和其他数据源。所以GraphQL是一种适用于异构后端的查询语言,也就是说后端除了数据库之外,还有不同类型的数据源。SQL作为数据库查询语言非常流行。不幸的是,它不像GraphQL那样适合跨异构数据的嵌套查询。此外,SQL的语法可能很复杂。最后,SQL从未打算成为通用的。SQL适用于不同的数据库,但不适用于API。2.GraphQL和SQL之间的实际异同假设您正在补充公司的库存,并且需要知道从两家不同公司发货的两个不同订单的跟踪号和预计交货日期。GraphQL可以通过单个请求获取所有这些信息。GraphQL还以分层结构向您显示该信息,使您可以轻松查看所请求数据之间的关系。换句话说,您可以看到与收到的跟踪号码相关联的包裹的交货日期。在SQL的情况下,您可能需要向数据库发出一次请求以获取有关两个不同订单的一般信息。然后,您可能需要对该信息进行分类以找到运输公司的名称,然后向每个运输公司再次请求跟踪号码。最后,根据跟踪号,您可以再次请求预计交货日期。获取所有这些信息需要大量代码,而仅仅获得正确的语法就很重要。几十年来我一直在使用SQL数据库,甚至我经常需要查找复杂查询的语法。3.为什么SQL仍然如此流行?GraphQLAPI模式仅允许一小部分操作,具体取决于实现API的开发人员。也就是说,查询的灵活性取决于API开发者的灵活性。例如,API只允许您通过电子邮件搜索客户。要按城市搜索客户,应用程序需要收集所有客户,然后一一筛选。或者,如果您正在处理敏感数据,您可能需要针对几个因素配置查询和API:例如控制谁可以访问数据,或者数据在后端缓存(暂时保留)多长时间。这样的配置对于一般公司来说要求太高,但现在有很多技术可以为您管理和配置GraphQL查询和API。这些技术使GraphQL成为查询API的可行选择,但没有它们,配置可能会很困难。相比之下,SQL一开始就更具表现力,这意味着它可以更轻松地告诉系统您想要什么,而无需进行大量额外配置。只需一行代码即可轻松查询任何数据库:“对于客户JohnDoe,请给我超过100美元的订单”。无论数据库结构如何,SQL都会为您提供所需的数据。GraphQL允许在构建API的开发人员设置的框架内进行灵活查询,而SQL允许对任何数据库模型进行通用查询。因此,如果您主要查询数据库,SQL可以很好地完成这项工作。4.有没有办法弥合差距?如果您可以同时利用SQL的表现力和GraphQL的灵活性呢?有一些技术声称可以做到这一点,但它们不太可能流行起来,因为它们最终变得笨拙和复杂。笨拙源于试图将SQL结构强加到GraphQL中。但它们是两种不同的查询语言,目的不同。如果开发人员必须学习如何在GraphQL中构建SQL,最好使用SQL并直接连接到数据库。然而,也有一线希望。我们相信GraphQL会逐渐变得更具表现力。有一些旨在使GraphQL更具表现力的举措最终可能成为标准。但从根本上说,SQL和GraphQL有不同的世界观:统一后端vs多样化后端,表vs分层数据,通用查询vs有限查询。因此,它们以各种方式使用。尽管作为一种API查询语言很受欢迎,但GraphQL不会取代SQL这一用于数据库访问的主要语言。原文链接:https://venturebeat.com/2022/08/04/graphql-is-a-big-deal-why-isnt-it-the-industry-standard-for-database-querying/