neo4j - マニュアルを読んでみる(1)

前の記事で、グラフデータベースという面白そうなネタを見付けたので、モチベーションが続く限り、気づいた点などを書いていこうと思う。(1回で終わらないことを祈るw)

とりあえずオンラインヘルプ読んでおけ

オライリーのタコ本(下記参照)は、この記事を書いている時点で約60%ほど読み進めたが、個人的に結構ヒットだった。他のデータベースのタイプの比較から始まり、どのようなタイプの処理(データ)の場合、グラフ型データベースが向いているかという話から始まり、簡単な事例を用いてその用途を説明してくれている。

その中で、Neo4jのクエリ言語であるCypherの記述例を見せてくれている。Cypherのリファレンスではなく、あくまでこういう風に使うんだよという方向性を示してくれているのが、個人的にはポイントが高い。今の段階で分厚いリファレンス調の本を渡されても、途中で投げ出すのがオチである。

幸い、オンラインヘルプの類いは非常に充実している(ただし英語)ので、大まかな使い道が分かったところで、このオンラインヘルプの中のTutorialsのところを読んでみることにした。

neo4j.com

訳すより慣れるべし

仕事柄、英語の技術文書を読む事への抵抗は、あまり大きくないのだが、それをかみ砕いて日本語で説明するのは非常に苦手だ。例えば、オンラインヘルプの3.1.Background and MotivationというところにQuery processingはこんな感じだよという箇条書きがある。

  • Parse and validate the query.
  • Generate the execution plan.
  • Locate the initial node(s).
  • Select and traverse relationships.
  • Change and/or return values.

この中のParseとかtraverseなんて、日本語でどう訳したら良いのか分からない。自分の語彙力に問題があることは否定しないが、IT業界の技術文書だったら、そのまま「パースする」、「トラバースする」とか書かれていそうである(苦笑)。

それはさておき、読み解くのであれば、最初の2つが準備段階で、記述されたクエリが正しい文法で書かれていることを確認・チェック(Parse and validate)して、最適であろうexecution planを選択してクエリが実行されるという事を言っていると考えれば良さそうだ。もちろん、書かれたクエリがクソでとんでもなく時間が掛かる事もあるというのは、古典的なRDBMSと同じだろう。

Locate the initial node(s)ってのは、どこから検索(探索といった方が良いのかな)を始めるという話で、Neo4jの中でもIndexを作ったり、それを使う事が出来るよと書いてある。そこから関係性の探索(select and traverse)を行って、最終的に値を返したり、値を変更したりするということのようだ。

ま、relationshipをtraverseするあたりを除けば、SQLとまったく同じだね。と言うことが分かれば、このセクションの目的は達成と考えて良さそうというのが分かれば十分だと思う。

この先、ぼちぼちマニュアルを読み進めてみることにしよう。

グラフデータベース ―Neo4jによるグラフデータモデルとグラフデータベース入門

グラフデータベース ―Neo4jによるグラフデータモデルとグラフデータベース入門

A Programmatic Introduction to Neo4j

A Programmatic Introduction to Neo4j

NOSQLの基礎知識 (ビッグデータを活かすデータベース技術)

NOSQLの基礎知識 (ビッグデータを活かすデータベース技術)