AWSコラム

AWSエンジニアのためのブログメディア

AWS Neptuneとは?DBサービスのメリットから使い方まで紹介!

公開日時:   更新日時:
AWS Neptuneとは?DBサービスのメリットから使い方まで紹介!

AWSのDBサービス「Amazon Neptune」とは?


「Amazon Neptune」とは、AWSで提供されているDB(データベース)サービスの一つで、「グラフDB」と呼ばれるタイプのものです。

最初に、「Amazon Neptune」を理解する上で必要となる「グラフ」や「グラフDB」について解説していきます。

「グラフ」とは?

「グラフ」とは、「ノード」と呼ばれる対象物を起点として、このノード間を「エッジ」と呼ばれる関係性で表現したデータモデルです。

例えばSNSのツイッターに当てはめると、「ノード」が「ユーザ」に、「エッジ」が「フォロー」や「ブロック」に該当します。

「グラフ」の様々な例

「グラフ」は、SNS以外にも様々なデータモデルに使用されています。

例えば「インターネット」に当てはめると、「ノード」が「Webページ」に、「エッジ」が「URLリンク」に該当します。

他の例として「路線図」に当てはめると、「ノード」が「駅」や「バス停」に、「エッジ」が「路線」や「バスルート」に該当します。

「グラフDB」とは?

「グラフDB」とは、「グラフ」の形式でデータを格納し、検索するためのDBです。

「グラフDB」は「ノード」と「エッジ」で構成されていますが、特に「エッジ(関係性)」を有する点がOracle等のリレーショナルDBと大きく異なります。

「グラフDB」の特徴について

「グラフDB」の特徴は、データ(ノード)間がネットワーク状に関連付けされているため、効率的かつ高速な検索ができる点です。

Oracleのような「リレーショナルDB」の場合は、「表形式」でデータを格納しています。検索には、多数の表を連結してデータ間の関係性を遡っていくため、非効率的で時間も掛かります。

「グラフDB」は、関係性そのものを「エッジ」として格納しており、それを辿るだけで済むため、高速な検索を実現しています。

「グラフDB」と「リレーショナルDB」の比較

「グラフDB」と「リレーショナルDB」の特徴を比較してみましょう。

Oracle等の「リレーショナルDB」は、データを表形式で持ち、関係性は「外部キー」で表現し、「SQL」という問い合わせ言語で検索します。

一方、「グラフDB」は、大規模な関連性のあるデータ群をモデル化しており、関連性そのものがDBの中心的な存在です。「Gremlin」という問い合わせ言語を利用して、関連性のある検索を高速で行えます。

AWSのDBサービス「Amazon Neptune」の前提知識について


ここでは、AWSの「Amazon Neptune」の理解に必要な前提知識について解説します。

2種類の「グラフモデル」と「フレームワーク」について、具体例と合わせて確認しましょう。

「グラフモデル」には、「プロパティグラフ」と「RDF」があります。また「フレームワーク」には、OSSの「Apache TinkerPop」があり、これらの操作言語には「Gremlin」や「SPARQL」があります。

それぞれ詳しく解説していきます。

「プロパティグラフモデル」とは?

「プロパティグラフモデル」とは、「Amazon Neptune」のグラフモデルの一つで、グラフに「プロパティ」という情報を追加したものです。

例えば「ユーザA」と「ユーザB」という「ノード」が、「友達」という「エッジ」を有する場合に、「ユーザA」の「氏名」や「年齢」が「プロパティ」に該当します。

また「2010年12月24日以来」という「エッジ」に対してもプロパティ(「ラベル」)を持つことができます。

「RDF」とは?

「RDF(Resource Description Framework)」とは、「Amazon Neptune」のグラフモデルの一つで、メタ情報をソフトウェアが判断して自動的に処理することを目的としたものです。

具体的な技術ケースとしては「セマンティックWeb」があり、Webサイト上の情報に「意味(semantics)」を「メタ情報」として持たせることで、検索や情報整理を自動化しています。

「RDF」の特徴

「RDF」の特徴は、「ノード」を「主語」や「目的語」に、「エッジ」を「述語」に置き換え、ノードの関係性を「主語」、「述語」、「目的語」の三者関係で表現する点です。

RDFの考え方のベースとなっている「英語」で具体例を説明します。「主語」を「I(私)」、「述語」を「eat(食べる)」、「目的語」を「an apple(リンゴ)」とした場合には、「I」「eat」「an apple」という表現で三者の関係性を表せます。

「Apache TinkerPop」とは?

「Apache TinkerPop」とは、様々な「グラフDB」を標準化して利用するためのフレームワークです。

「Apache TinkerPop」は、「グラフDB」の上位の抽象化レイヤーという位置付けになっています。このレイヤーで様々なグラフDBの仕様の差異を吸収することで、標準化されたインターフェースを提供しています。

「Apache TinkerPop」の概要

「Apache TinkerPop」は、クライアントとのインターフェースである「Gremlin Server」、グラフDBの操作言語(グラフトラバーサル言語)の「Gremlin」、Javaベースの「Core API」で構成されています。

また、対応している「グラフDB」には、AWSの「Amazon Neptune」、「JanusGraph」、「Neo4j」等があります。

「Gremlin」とは?

「Gremlin」とは、グラフDBを操作するための言語で、「グラフトラバーサル言語」と呼ばれています。

先ほどのプロパティグラフでの「ユーザA」「ユーザB」「友達」の関係性を例に説明します。

例えば、「ユーザA」の「友達」を検索するためには、以下のようなクエリ(問い合わせ言語)になります。

g.V().has(‘name’, ’ユーザA’).out(‘友達’)
→[‘ユーザB’]

なお、類似の操作言語には「SPARQL」もあります。

「Amazon Neptune」の概要


続いて、AWSのDBサービスである「Amazon Neptune」の概要について解説しましょう。まず、「Amazon Neptune」の利点やユースケースについて一通り説明します。

また、AWS上のDBサービスであることを活かした「Amazon Neptune」に適した用途についても確認していきます。

「Amazon Neptune」の利点(その1)

1つ目の「Amazon Neptune」の利点は、AWS上で「Gremlin」と「SPARQL」の両方の言語に対して「オープングラフAPI」を提供している点です。

この「オープングラフAPI」とは、グラフDBを操作するためのクエリをサポートしているAPIのことで、「Amazon Neptune」のAWS上での構成要素としては、クライアントに対するインターフェースとしての役割を担っています。

「Amazon Neptune」の利点(その2)

2つ目の「Amazon Neptune」の利点は、グラフDBに特化することで、優れたパフォーマンスを発揮する点です。

これは、「Amazon Neptune」が「Gremlin」等のグラフDB用のクエリ処理向けに最適化してあるためです。

また、AWS上でのインスタンスのタイプ変更も容易で、簡単にサイズのスケールアップやスケールダウンができます。

「Amazon Neptune」の利点(その3)

3つ目の「Amazon Neptune」の利点は、「耐久性」と「高可用性」とを兼ね揃えている点です。

「Amazon Neptune」は、AWSのストレージサービスである「Amazon S3」にデータをバックアップすることで、高い耐久性を有しています。

また「Amazon Neptune」の「高可用性」としては、AWS上のクラウドサービスとしての特性を活かして「99.99%」以上の高い値を実現しています。

「Amazon Neptune」のユースケース

「Amazon Neptune」のユースケースの代表的なものとして、「ソーシャルネットワーキング」が挙げられます。

ユーザのプロパティ情報やユーザ間の関係性を「プロパティグラフ」等の「グラフDB」で表現することで、ツイッターのような大規模なSNSを構築するのに適しています。

「Amazon Neptune」のまとめ


SNSで多く利用されているAWSのDBサービス「Amazon Neptune」について、その概要や利点、そしてユースケースについて詳しく解説してきました。

本記事をご参考に、新しいインターネットサービスの開発に挑戦してみましょう。


AWS分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags