Ken WagatsumaSRE at Neo4j

Cypher Graph High Level Exploration

★ introductory

September 28, 2021

Neo4j グラフデータベースに大規模なデータセットがすでに保存されており、その全体像を掴みたいというシチュエーションが多々有ります。

本記事では、そのようなシチュエーションで役に立つ Cypher のクエリを紹介します。

db.schema.visualization()

db.schema.visualizaion() は、Neo4j が提供する Procedure の一つです。Node と Relation の全体像をグラフで視覚的に表示してくれるので、重宝する Procedure です。

利用するには、CALL を用いて以下の Cypher クエリを実行します。

CALL db.schema.visualization()

以下の図は、Neo4j Sandbox の Twitter Graph テンプレートを利用した時に生成されるサンプルデータに対する実行結果です。

Cypher Graph High Level Exploration db.schema.visualization()

db.schema.{node,rel}TypeProperties()

db.schema.nodeTypeProperties() は、Node に割り当てられたラベルやプロパティ名、プロパティ型の一覧を表形式で表示します。

CALL db.schema.nodeTypeProperties()

Relation に対しては、同様に db.schema.relTypeProperties() が便利です。データに格納されている Relation 一覧を表示させたい場合にも便利でしょう。

CALL db.schema.relTypeProperties()

db.labels()

db.labels() は、全ての Node に割り当てられたラベル一覧を表示させることができます。

CALL db.labels()

db.relationshipTypes()

db.relationshipTypes() は、同様に存在する全ての Relation 一覧を表示させることができます。

CALL db.relationshipTypes()

db.propertyKeys()

データベースに格納されている全てのプロパティキーを表示させたい場合は、db.propertyKeys() を使うと良いでしょう。

CALL db.propertyKeys()

Total number of Nodes/Relations

データベースに格納されている Node の総数を表示させたい場合は以下のクエリが便利です。

match (n) return count(n) as output

Relation の総数を知りたい場合は、anonymous relation を利用することで実現できます。

match ()-[]-() return count(*) as output

最後に

以上、Neo4j グラフデータベースに格納されているグラフデータセットの全体像を理解するために便利な Cypher を紹介しました。

Recommended Posts

  1. ★★★ advanced
    neo4j-causal-clustering-introduced-routing
    本記事では、Neo4j における Causal Clustering (因果クラスタリング) について説明します。 クラスタリングの目的 データベースを運用する場合、単一のインスタンスを稼働させるか、Causal Clustering を用いてクラスター構成を組むか(クラスタリング)のいずれかを選択することになるでしょう。 Single Instance…
  2. ★★★ advanced
    neo4j-bolt-handshake-protocol-introduced
    Bolt Protocol において、サーバーとクライアントが接続を開始するためのプロトコルとして、Bolt Handshake Protocol Specification の仕様が策定されています。 本記事では、Bolt Handshake Protocol の概要について説明します。 Handshake Workflow…