Skip to content

Instantly share code, notes, and snippets.

@christianoguedes
Created March 12, 2026 13:46
Show Gist options
  • Select an option

  • Save christianoguedes/0f21d9a1108cf62495cafafe50adca5f to your computer and use it in GitHub Desktop.

Select an option

Save christianoguedes/0f21d9a1108cf62495cafafe50adca5f to your computer and use it in GitHub Desktop.
openCypher vs SQLs

A analogia do openCypher com SQL é útil, mas não é 1:1.

Mapa Mental

SQL openCypher
banco relacional grafo
tabela rótulo de nó (:Person) ou tipo de aresta (:AUTHORED)
linha nó ou aresta
coluna propriedade
chave primária propriedade id
chave estrangeira aresta ligando nós
SELECT ... FROM ... WHERE MATCH ... WHERE ... RETURN
JOIN travessia de padrão (a)-[:REL]->(b)
INSERT CREATE
upsert MERGE
UPDATE SET
DELETE DELETE ou DETACH DELETE
GROUP BY agregação com WITH / RETURN
CTE / subquery CALL { ... }
recursive CTE padrão variável [:REL*1..3]

A principal diferença No SQL você pensa em "juntar tabelas por chaves".
No openCypher você pensa em "andar pelo grafo por relações".

Exemplo equivalente:

SELECT p.name, pr.title
FROM person p
JOIN authored a ON a.person_id = p.id
JOIN pull_request pr ON pr.id = a.pr_id
WHERE p.name = 'Ana';
MATCH (p:Person {name: 'Ana'})-[:AUTHORED]->(pr:PullRequest)
RETURN p.name, pr.title;

No SQL, a relação está implícita nas FKs.
No openCypher, a relação é explícita na aresta.

Outro exemplo importante Buscar vizinhos em 2 níveis, que no SQL tende a virar vários joins ou recursão:

MATCH (s:Service {id: 'svc-auth'})-[:AFFECTS|TOUCHES*1..2]-(n)
RETURN s, n

Isso é próximo de uma recursive CTE em SQL, mas em openCypher é nativo.

Regra prática

  • SQL responde bem "quais linhas satisfazem esse filtro?"
  • openCypher responde bem "quais entidades estão conectadas a esta entidade, por quais caminhos?"

Para GraphRAG, openCypher encaixa melhor porque o contexto quase sempre é "acha os nós semanticamente relevantes e expande suas conexões".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment