Ken WagatsumaSRE at Neo4j

Graph Database Use Case - DZD

★ introductory

September 22, 2021

Graph Database を利用したユースケースの一例として、Neo4j を利用したドイツの研究機関による肥満を対象とした研究について紹介します。

Neo4j News: Life science researchers study large datasets and uncover potential new insights with the power of Neo4j

Pharma Technology Focus: WHY THE GERMAN CENTRE FOR DIABETES RESEARCH CHANGED ITS APPROACH TO HANDLING DATA

課題

医療データというものは、Heterogeneous - 異なる種類の様々な非構造データから成り立ちます。

ミクロレベルでは細胞レベルの観測データ。マクロレベルでは、災害ネットワークといった環境データ。

そんな多種多様な種類で構成される大量のビッグデータを価値あるものにするために、従来の非効率的な分析手法では限界が見えてきていました。

解決策

そこで用いられたのが、グラフ理論をベースとした分析手法でした。複雑なデータセットの中から関連するデータ同士を解析するために、従来の JOIN を多用するリレーショナル・データベースではパフォーマンスが出ません。

舞台となったのは、German Centre for Diabetes Research (DZD) と呼ばれる研究所。行ったのは、肥満による疾病リスクとそれに対する効果的な治療法を探るため、様々なデータから包括的に分析を可能とするデータセットを作るプロジェクトでした。

具体的には、DNA の塩基配列と体内の代謝活動のデータを紐付けようと試みました。

結果として、Dr. Alexander Jarasch ら研究者チームは、Neo4j を持ちいて DZDconnect と呼ばれる内製ツールを作成。

研究者たちは、「69 歳以下の男性の被験者からどれくらいの血液サンプルを得られたか?」「この期間に測定されたパラメーターはなにか?」「この研究期間に砂糖の摂取量は測定されていたか?」といった分かりやすい自然言語を用いて、必要なデータを分析できる分析ツールとして利用されるようになりました。

DZDConnect のその後

今回の研究の過程で作成された DZDConnect は、後の 2020 年に Bytes4Diabetes Awardを受賞するなど、業界でも評価される研究成果となっています。

DZDConnect プロジェクトを率いた Dr. Alexander Jarasch 本人が、GraphConnect において発表している関連動画が公開されています。参考にしてください。

スライドで触れられているのですが、グラフを用いた理由として、以下が挙げられています。

  • in biology everything is connected anyway
  • human readable - easy-to-understand for non-computer scientists
  • easy to query - queries are similar to humanlike questions

同様のシステムは理論上 RDBMS でも実装できるのでしょうが、現実的な利用と増え続けるデータのスケーラビリティを考慮すると、Graph Database で実装する手法に軍配が上がるのでしょう。

DZDConnect のデータモデリングについても紹介されています。Neo4j はノードとリレーションに Property を追加できるので、それを利用してノードにはメタデータを付与。

また、肥満に関する臨床データのみならず、他の疾病や公開文献などの他のデータも拡張してグラフ構造に埋め込むことで、より有益な情報を得られることができたと語っています。DZDConnect を利用例もスライド後半で紹介されています。

最後に

以上、DZD の行った肥満に関する研究結果と、DZDConnect について簡単な紹介をしました。

多種多様な非構造データを、分析可能なレベルに落とし込むツールとして、グラフ理論、および Graph Database は特にヘルスケア領域で重宝していくのかもしれませんね。

Recommended Posts

  1. ★★★ advanced
    neo4j-causal-clustering-introduced-routing
    本記事では、Neo4j における Causal Clustering (因果クラスタリング) について説明します。 クラスタリングの目的 データベースを運用する場合、単一のインスタンスを稼働させるか、Causal Clustering を用いてクラスター構成を組むか(クラスタリング)のいずれかを選択することになるでしょう。 Single Instance…
  2. ★ introductory
    portfolio
    本記事では、グラフデータベースとはそもそも何なのかについて、ソフトウェアエンジニアリングを習いたての人や、他業種からきた人にも伝わる説明を目指してみます。 データベースとは そもそも、データベースとは何でしょうか。 Web エンジニアであれば、MySQL や PostgreSQL などのリレーショナルデータベース(以下:RDBMS)をよく利用しているでしょう。Memcached や Redis…