前人未踏の領域へ アプリ開発編

Android, iOSアプリ開発に関する調査メモ置き場。ほとんどAndroid。はてなダイアリーから移行したため古い記事にはアプリ以外も含まれます。

:play concepts コンセプトについて学ぶ

:play concepts

というコマンドを叩いた際に出力されるドキュメントの翻訳です。

GraphDB 101

グラフデータベースはいくつかのシンプルなコンセプトを使って
どんな種類のデータも格納できます。

  1. Nodes(ノード) グラフデータのレコード
  2. Relationships(関係) ノード同士をつなげる
  3. Properties(プロパティ) 名前が付けられたデータの値(key-value

グラフデータベース

Neo4jはNodeと呼ばれるレコードを使ってGraphにデータを格納します。

最も単純なグラフはただ1つのノードを持ち、Propertyと呼ばれるいくつかの
名前付きの値を持ちます。
Neo4jチーム内のソーシャルグラフを描いてみましょう。
http://localhost:7474/browser/images/one_node.png

  1. ノードのために円を描きます
  2. name=Emilを追加します。
  3. Sweden出身であることを記述します。
  • ノードはグラフ内のデータレコードの名前です。
  • データはプロパティとして格納されます。
  • プロパティはシンプルなname/valueのペアです。

Labels

ノードのセットを結びつけます。
ノードはそれぞれのメンバーに対してラベルを付けることにより
一緒のグループにすることができます。我々のソーシャルグラフ内では
それぞれのノードをPersonとしてラベル付けします。
http://localhost:7474/browser/images/labeled_node.png

  1. 生成したEmilノードに対し、"Person"とラベルを付けます
  2. "Person"ノードは赤で表すことにします。
  • ノードは0以上のラベルを持つことができます。
  • ラベルはプロパティを持ちません。

More Nodes

任意のデータベースと同様に、Neo4j内にデータを格納することはより多くのレコードの追加と同じくらいに簡単です。我々はいくつかのノードを追加します。
http://localhost:7474/browser/images/more_nodes.png

  1. Emiは99のスコアを持ちます
  2. JohanはSweden出身でsurfを勉強しています。
  3. lanはEngland出身で、編集者です。
  4. Rikはベルギー出身で、Orvalという猫を買っています。
  5. Allisonはカリフォルニア出身のサーファーです。
  • 似たノードは異なるプロパティを持つことができます。
  • プロパティは文字列、数値、bool値が設定できます。
  • Neo4jは数十億のノードを格納できます。

Consider Relationships

Neo4jの本当の力はデータの接続です。任意の2つのノードを関連付け、関係性を定義した上でRelationshipを追加します。

我々のソーシャルグラフ内ではシンプルにKNOWS(知人)と呼ぶことにします。
http://localhost:7474/browser/images/relationships.png

  1. EmilはJohanとlanを知っています。
  2. JohanはlanとRikを知っています。
  3. RikとlanはAllisonを知っています。
  • Relationshipは常に直線を持ちますです。
  • Relationshipは常にタイプを持ちます。
  • Relationshipはデータのパターンからなります。

Relationship properties

プロパティグラフ内ではrelationshipはデータレコードのようにプロパティを持つ事ができます。Emilの関係をより詳しく見ると以下のようになります。
http://localhost:7474/browser/images/rel-props.png

  • EmilはJohanを2001年から知っています。
  • Emilはlanを5と評価しています。
  • 誰でも同じように関係を持つ事ができます。