初めに
とあるインターンでグラフデータベースを触ったのでシェアしたいなと思います。
私自身、SQLが少し書けるくらいでグラフデータベースは愚か、データベース自体ちゃんと触った事がありませんでした。しかし、グラフデータベースは直感的でわかりやすく、比較的短い時間で実装まで移ることができました。
グラフデータベースってなに?
関係性を表すことができるNoSQLなデータベース。
SNSの「知り合いかも?」やECサイトの「おすすめ」など、レコメンデーション機能に適している。
####メリットとデメリット
繋がりを表すのがめちゃくちゃ速い。
例えば、「Aさんの友達の友達の友達」を知りたい場合。一見シンプルそうだが、SQLなデータベースだと結構しんどいのが想像できると思います。
一方で、データ全体の統計分析などは苦手。
####構成要素
グラフデータベースはノード、エッジ、プロパティの三つから構成されます。ノードのことを頂点、エッジのことを端なんて呼んだりします。
下記の図にて解説します。
ここではノードであるUser同士がFriendというエッジにより結ばれています。エッジはグラフデータベースの最も重要な要素であり、これがあることでノード同士の関係性が表せます。
また、プロパティとしてそれぞれの情報を追加する事ができます。例えば、年齢や日付などなど。プロパティはノードのみならず、エッジにも同様に追加する事が可能です。
最後に
今後、実装の仕方やQueryの書き方なども追加していけたらと思ってます。
間違いや分かりづらいところなどがありましたら、ご教授ください。