查询分组

Dav*_*542 8 sql database mdx graph-databases database-theory

我想了解什么可能是查询语言如何分解的最高级别分组,以及为什么一个分组可能与另一个有根本的不同。例如,我现在提出的分组(用于通用用途)是:

  1. 关系
    示例:SQL
  2. 文档
    示例:XQuery、JSONPath、MQL (mongoDB)

  3. 示例:Cypher (Neo4j)
  4. 其他可能性(?)数据
    框/熊猫?多维(MDX)?

描述各种查询语言的最佳高级分组是什么?

got*_*tqn 5

一种变体是根据数据库类别对查询语言进行分组。

  • 关系型(Microsoft SQL Server、Oracle、MySQL、MariaDB)
  • 对象关系 (PostgreSQL)
  • 无SQL
    • 键值(Riak、Redis、Couchbase 服务器、MemcacheDB)
    • 柱状(HBase)
    • 文档(MongoDV、CouchDB)
    • 图 (Neo4j)

到目前为止,一切都很好,但实际上类别之间的界限变得越来越细。

例如,我们在 Microsoft SQL Server 和 T-SQL 中有图形支持,我们有如下语法:

-- Find Restaurants that John's friends like
SELECT Restaurant.name 
FROM Person person1, Person person2, likes, friendOf, Restaurant
WHERE MATCH(person1-(friendOf)->person2-(likes)->Restaurant)
AND person1.name='John';
Run Code Online (Sandbox Code Playgroud)

在MongoDB中,我们有,也用图查找:

{
   $graphLookup: {
      from: <collection>,
      startWith: <expression>,
      connectFromField: <string>,
      connectToField: <string>,
      as: <string>,
      maxDepth: <number>,
      depthField: <string>,
      restrictSearchWithMatch: <document>
   }
}
Run Code Online (Sandbox Code Playgroud)

因此,也许最高级别的分组只是遵循美国国家标准协会 (ANSI) 标准(关系和对象-关系)和其他标准的一组数据库管理系统。