欧卡2中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

需要三步,才能开始

只需两步,慢速开始

查看: 55|回复: 1
收起左侧

[其他] 测试markdown

[复制链接]
哄你叉叉 发表于 2025-7-19 16:16 | 显示全部楼层 |阅读模式

CQL(Cypher Query Language)和 SQL(Structured Query Language)都是用于查询数据库的声明式语言,但它们的设计目标、数据模型和语法细节有很大区别。下面从多个维度对比:


1. 数据模型:图 vs 关系表

特性 CQL SQL
数据模型 图模型(节点、关系、属性) 关系模型(表、行、列)
核心结构 节点(Node)、关系(Relationship)、标签(Label)、属性(Property) 表(Table)、行(Row)、列(Column)
连接方式 通过关系直接连接节点,无需 JOIN 通过外键和 JOIN 语句连接表

2. 查询语法:模式匹配 vs 表连接

示例 CQL SQL
查询某人的朋友 MATCH (p:Person {name:"张三"})-[:FRIEND]->(f) RETURN f.name SELECT f.name FROM Person p JOIN Friend f ON p.id = f.person_id WHERE p.name = "张三"
插入数据 CREATE (p:Person {name:"张三", age:30}) INSERT INTO Person (name, age) VALUES ("张三", 30)
删除关系 MATCH (a)-[r:FRIEND]->(b) DELETE r DELETE FROM Friend WHERE person_id = 1 AND friend_id = 2

3. 关键差异总结

维度 CQL SQL
连接操作 无需 JOIN,通过模式匹配直接遍历关系(如 (a)-[:KNOWS]->(b) 必须显式使用 JOIN(如 INNER JOINLEFT JOIN
递归查询 原生支持可变深度路径(如 (a)-[:KNOWS*1..3]->(b) 表示 1~3 跳的朋友) 需使用 CTE(公共表表达式,如 WITH RECURSIVE),语法复杂
模式匹配 核心功能(如 MATCH (a)-[:FRIEND]->(b)<-[:FRIEND]-(c) 无原生模式匹配,需多表 JOIN
索引 基于标签和属性(如 CREATE INDEX ON :Person(name) 基于表和列(如 CREATE INDEX idx_name ON Person(name)
事务 支持 ACID 事务(与 Neo4j 版本相关) 支持 ACID 事务(标准 SQL)
聚合函数 COUNT, SUM, AVG, COLLECT(返回列表) COUNT, SUM, AVG, GROUP_CONCAT(MySQL)

4. 适用场景

场景 CQL(Neo4j) SQL(MySQL/PostgreSQL)
社交网络 天然适合(如好友推荐、最短路径) 需要复杂 JOIN,性能下降
金融欺诈检测 高效(如追踪多层转账关系) 难以处理多层关联
传统业务系统 不适合(如订单、库存) 首选(表结构清晰)
实时推荐 高效(基于图遍历) 需预计算或复杂查询

5. 直观对比:查询“张三的朋友的朋友”

  • CQL(1 行代码):
     复制代码 隐藏代码
    MATCH (p:Person {name:"张三"})-[:FRIEND*2]->(fof) RETURN DISTINCT fof.name
  • SQL(需多层 JOIN 或递归 CTE):
     复制代码 隐藏代码
    WITH RECURSIVE friend_paths AS ( SELECT person_id, friend_id, 1 AS depth FROM Friend WHERE person_id = 1 UNION ALL SELECT fp.person_id, f.friend_id, fp.depth + 1 FROM friend_paths fp JOIN Friend f ON fp.friend_id = f.person_id WHERE fp.depth < 2 ) SELECT DISTINCT p.name FROM friend_paths fp JOIN Person p ON fp.friend_id = p.id WHERE fp.depth = 2;

总结

选择依据 用 CQL 用 SQL
数据高度关联(图结构)
事务型业务(表结构)
复杂多跳查询(如路径、子图)
大规模聚合统计(如报表)

一句话总结
SQL 是“表格的王者”,CQL 是“关系的专家”。

 楼主| 哄你叉叉 发表于 2025-7-19 16:22 | 显示全部楼层
w. 01w. 02w. 03Completed task            Active task               Future task               Future task2               Completed task in the critical line Implement parser and jison          Create tests for parser             Future task in critical line        Create tests for renderer           Add to mermaid                      A sectionCritical tasksAdding GANTT diagram functionality to mermaid
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

客服QQ936487697|联系我们|手机版|欧卡2中国 ( 湘ICP备11020288号-1 )

GMT+8, 2025-7-27 13:01 , Processed in 0.082942 second(s), 7 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表