Obsah
Cypher: Dotazovací jazyk pro grafové databáze
Cypher je deklarativní dotazovací jazyk určený pro práci s grafovými databázemi, primárně vyvinutý pro Neo4j. Byl navržen tak, aby byl vysoce intuitivní, snadno čitelný a umožňoval efektivně vyjadřovat komplexní dotazy nad propojenými daty bez nutnosti psát složitá spojování tabulek (operace `JOIN`), jak je známe z relacích databází.
Hlavní myšlenka a syntaxe
Unikátní vlastností jazyka Cypher je jeho vizuální povaha – syntaxe využívá ASCII art, kde vzorce dotazů přímo napodobují strukturu grafu (uzly a šipky představující vztahy).
- Uzly se zapisují do kulatých závorek: `(n:Person)`
- Vztahy (hrany) se zapisují pomocí hranatých závorek uvnitř pomlček a šipek: `-[r:KAMOŠ]→`
Základní stavební kameny dotazu
Každý dotaz v jazyku Cypher se skládá z klíčových slov (příkazů), z nichž nejčastější jsou:
- `MATCH`: Určuje vzorec (pattern), který se má v grafu vyhledat.
- `WHERE`: Slouží k filtrování výsledků na základě vlastností.
- `CREATE` / `MERGE`: Vytváří nové uzly a vztahy (přičemž `MERGE` navíc zajišťuje, že se data duplicitně nevytvoří, pokud již existují).
- `RETURN`: Definuje, jaká data mají být vrácena jako výsledek dotazu.
Ukázka praktického dotazu
Následující příklad ukazuje, jak pomocí jazyka Cypher najít všechny přátele uživatele jménem Alice, kteří rovněž sledují stejný film:
MATCH (alice:Person {name: 'Alice'})-[:FRIEND]->(friend:Person)-[:WATCHED]->(movie:Movie)
WHERE movie.genre = 'Sci-Fi'
RETURN friend.name AS Kamarad, movie.title AS Film
ORDER BY Film ASC
Výhody jazyka Cypher
| Vlastnost | Popis |
| — | — |
| Vizuální čitelnost | Vzorce jako `(a)-[:KUPUJE]→(b)` jsou na první pohled srozumitelné. |
| Deklarativnost | Říkáte *co* chcete najít, nikoliv *jak* to databáze má krok za krokem procházet. |
| Optimalizace výkonu | Databázový engine Neo4j automaticky překládá Cypher dotazy na vysoce efektivní cestovní plány v paměti. |
| Otevřený standard (OpenCypher) | Jazyk byl uvolněn jako open-source, takže jej adoptovaly i jiné technologie a platformy pracující s grafy. |
Shrnutí
Cypher představuje přirozený a mocný nástroj pro dotazování nad grafovými strukturami. Umožňuje vývojářům a analytikům efektivně vytěžovat skryté souvislosti a vzorce v datech s minimálním množstvím kódu.
