We introduce PathQuery, a graph query language developed to scale with Google's query and data volumes as well as its internal developer community. PathQuery supports flexible and declarative semantics. We have found that this enables query developers to think in a naturally "graphy" design space and to avoid the additional cognitive effort of coordinating numerous joins and subqueries often required to express an equivalent query in a relational space. Despite its traversal-oriented syntactic style, PathQuery has a foundation on a custom variant of relational algebra -- the exposition of which we presently defer -- allowing for the application of both common and novel optimizations. We believe that PathQuery has withstood a "test of time" at Google, under both large scale and low latency requirements. We thus share herein a language design that admits a rigorous declarative semantics, has scaled well in practice, and provides a natural syntax for graph traversals while also admitting complex graph patterns.
翻译:我们引入了PathQuery, 这是一种以谷歌的查询和数据量及其内部开发者社区为基础开发的图形查询语言。 PathQuery 支持灵活和宣示的语义。 我们发现, 这使得查询开发者能够在自然的“ 书法” 设计空间中思考, 并避免额外的认知努力, 协调在关系空间表达类似查询时通常需要的众多组合和子查询。 尽管路径Query的风格是曲折式的, 但它基于关系代数的定制变体, 我们目前推迟的解说 -- 允许应用共同和新颖的优化。 我们相信, PathQuery 已经在谷歌中经历了一个“ 时间的考验 ”, 其规模大和低的拉特朗要求下。 因此, 我们在这里分享了一种语言设计, 承认严格的宣示性语义的语义, 在实践中已经缩小了范围, 并且为图表曲提供了自然的语法术语, 同时也承认复杂的图表模式 。