Neo4jエンジニア活動記第2弾: Cypherクエリ・GDSを使ったデータ抽出 #Neo4j #Cypher #GDS #PoC
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
はじめに
Data Platform & Cloud Solution Team所属のNeo4jエンジニアです。
本ブログでは、私たちNeo4jエンジニアの活動について紹介します。私たちの活動は、お客様が持っているデータとその要件・課題を共有し、Neo4jを活用してお客様と一緒に解決策を見つけ出していくことです。
今回は、お客様の要件に応じたCypherクエリ作成やGDS(Graph Data Science Library)などの専門的なライブラリを使ってお客様と一緒にデータから価値を引き出していく作業の一連の流れをご紹介いたします。
第1弾はこちら Neo4jエンジニア活動記第1弾: お客様のデータを使用したNeo4jモデル構築 #Neo4j #グラフモデル #PoC
Cypherクエリ作成の流れ
1. データと要件の共有
まずはお客様が持っているデータや要件のヒアリングを行いました。お客様が何を実現したいのか、どのような課題に直面しているのかを理解することが重要です。
今回は、お客様のシステムで部分的に使用されているNeo4jデータベースにて、「クエリの速度が上がらない」「複雑なクエリの作成が難しい」といった課題を抱えていらっしゃることが分かりました。
2. サンプルデータのご提供
お客様からサンプルデータをご提供いただきました。実際に使用されるデータが機密情報を含んでいる場合はマスキングしていただいたデータをご提供いただくなど、お客様のご要望に応じて柔軟に対応いたします。
3. 環境構築
検証用の環境を用意しました。すでに本番運用に入っている場合はお客様の環境を直接使用せず、弊社側で検証用の環境をセットアップするなど、お客様のご要望に応じて柔軟に対応いたします。
4. サンプルクエリ作成
弊社のNeo4jエンジニアが、お客様の要件を実現するサンプルクエリを作成し、お客様にお見せしました。
5. クエリチューニング
お客様から追加のご要望やフィードバックをいただき、サンプルクエリをお客様のご要望に合った形へとブラッシュアップしていきました。
今回は、次に挙げるケースでのクエリチューニングをご対応させていただきました。
- クエリの速度の改善
- 目的を達成するのが難しい複雑なクエリの作成
- クエリの計算結果と目指す結果にわずかな誤差が生じてしまう問題の解決
6. 検証と次のステップへの展望
サンプルクエリが弊社側の環境だけでなく、お客様の開発環境または本番環境でも期待通りに動作することを確認しました。
クエリの作成過程におけるノウハウをお客様と共有し、お客様が新たな課題に直面した時も、お客様が共有されたノウハウをもとに自走できるように支援いたします。
GDSを使ったデータ抽出について
以上のCypherクエリ作成の一連の手順とは別に、GDS(Graph Data Science Library)という専門的なライブラリを使ってデータ分析を行い、お客様が保有するデータから情報を抽出し、データに眠っている価値を引き出すという特殊な手順があります。GDSを使ったデータ抽出には下記の2つの場合が考えられます。
- 「社内Slackを分析して影響力のある人を知りたい」など、すでに分析の目的が定まっている場合は、目的を達成するための分析の手順やクエリについて考察させていただきます。
- 分析の目的がまだ定まっていない場合は、お預かりしたデータをお調べさせていただき、データから価値を引き出すことができると見込まれるデータ分析の視点やアルゴリズムについて考察させていただきます。
いずれの場合も、繰り返し試行錯誤を行い、データから価値を引き出すことのできる手法を成果として残せるように一生懸命勤めさせていただきます。また、お客様と一緒に作業を進めることで、最終的にお客様が共有されたノウハウをもとに自走できるように支援いたします。
※弊社で実施したデータ分析の一例として、「Slackのインフルエンサーを特定する」がございます。ご参考にしてください。
まとめ・宣伝
Neo4jエンジニア活動記として、お客様の要件に応じたCypherクエリ作成やGDSを使ったデータ抽出の例をご紹介しました。
Cypherは直感的に書くことができますが、目的を達成するのが難しい複雑なクエリを作成するには、Cypherでクエリを書くことにある程度慣れている必要があります。しかし、スピード感を持ってプロジェクトをスタートしたい場合、Cypherに慣れた技術者の育成がボトルネックになってしまいがちです。弊社にはCypherクエリを書くことに精通しているエンジニアがおりますので、お客様と共同で作業することで、スピード感を持ってプロジェクトをスタートさせ、スムーズに技術者を育成することが可能です。
私たちは、「Neo4j PoCサービス+」というサービスを提供しています。このサービスはプロジェクト遂行と同時にエンジニア育成を兼ねる新しいPoCサービスです。技術検証だけに留まらず、私たちNeo4jエンジニアチームがチームメンバーとしてグラフデータベースのノウハウを共有しながら、お客様と一緒にゴールへ向かいます。
詳細については、以下のリンクをご参照ください。