こんにちはエンジニアの sakasai です。
MotoGPオーストリアGPで小椋藍選手Moto2初表彰台おめでとうございます。そして大久保光選手もMotoE5位入賞おめでとうございます。
日本人の活躍は嬉しいですね。
さて今回は下記セミナーに参加しましたので感想などを書いてみようと思います。
AWSの基礎を学ぼう 特別編 最新サービスをみんなで触ってみる 初めてのグラフデータベース #awsbasics
https://awsbasics.connpass.com/event/217529/
グラフデータとは
グラフ構造のデータのことを指します。
「ノード」「エッジ」「プロパティ」の3要素で関係性を表現します。
リレーショナルな1:Nの関係ではなく、N:Nの関係性を持ちます。
データ構造がリレーショナルではなくネットワーク状になっています。
例えばSNSでのフォロー・フォロワーの関係や、商品レコメンドのこの商品を買った人はこんな商品も買っていますのような高密度な結合が必要なデータを表します。
グラフとはいわゆる棒グラフや折れ線グラフのグラフとは異なりますのでご注意ください。
グラフデータベースとは
グラフ構造のデータを扱うためのデータベースです。
リレーショナルデータベースでもグラフ構造のようなデータを持つことは出来ますが、グラフデータベースでは複雑な関係性を持ったデータの検索を高速に行うことが出来ます。
Amazon Neptuneとは
AWSが提供するグラフデータベースのフルマネージドサービスです。
グラフデータベースを扱うためのクエリ言語として、SPARQLとApache TinkerPop Gremlinをサポートしています。
https://aws.amazon.com/jp/neptune/
ハンズオンセミナー
セミナーでは実際にマネージメントコンソール上でAmazon Neptuneのデータベースを作成し、Amazon Neptuneで提供されるJupyter Notebookからデータを操作するということを行いました。
Amazon NeptuneはVPC内に作る必要があります。インスタンスタイプなども選択できますが、今回は全てデフォルトで作成しました。
Jupyter Notebookを起動するとグラフデータベースのドキュメント兼チュートリアルのようなサンプルNotebookが用意されていてそちらを使ってグラフデータ・グラフデータベースの取り扱いを学ぶことが出来ます。
今回は用意されている空港のデータを使って空港間の関係をグラフで表現するというものを実行しました。
実際にやってみると、単純に空港間の関係だけのようなものから、空港間の距離やその他の属性を表したものなど複雑なものも高速に取り出せることがわかりました。
まとめ
Amazon Neptuneを使ってグラフデータベースについて簡単に学ぶことが出来ました。
グラフデータベースについてや実際に業務に使用する際などは更に深く学んで理解する必要がありそうですが、Amazon Neptuneのユースケースに書いてあるようなデータを扱うことがある際にはAmazon Neptuneを使うことも検討したいと思います。