Publicité

20221026_ent.について​_データモデル定義編.pptx

12 Mar 2023
Publicité

Contenu connexe

Dernier(20)

Publicité

20221026_ent.について​_データモデル定義編.pptx

  1. ent.について データモデル定義編 1/11
  2. ent.とは? グラフ構造に特化したGolangのORMライブラリ ・データベーススキーマをグラフ構造で簡単にモデル化可能 ・データ間の関係性を定めてしまえば、極めて簡単なコードでDB操作ができる ・作成元はFacebookなので、GraphQL​のベストプラクティスに則りやすい ・gqlgenと組み合わせることで、自動的にGraphQLリゾルバを構築できる 2/11
  3. クライアント バックエンド リクエスト レスポンス クライアント側のクエリ言語から リクエストを作成して送信する 受け取ったリクエストとスキーマ言語より レスポンスを作成して送信する 柔軟かつ効率的なデータ通信を行うための、比較的新しいAPI向けクエリ言語 欲しいデータのみが JSON型で返される GraphQLとは? 3/11
  4. ent.のデータモデリングについて Name: Tilly Age: 2 Species: Cat Name: John Age: 18 Club: Soccer Name: Mike Age: 17 Club: Soccer Pet Friend Owner Friend RDBのデータをグラフ構造として扱うにあたり、ent.で次のように定義する ・テーブルのフィールド:ノードのプロパティ ・データ間の関係:エッジとそのプロパティ ・テーブル名:ノードのラベル Pet User User ラベル ノード エッジ 4/11
  5. 今回用意したテーブル構造 ・汎用なSNSを想定 ・アカウントはポストを投稿できる ・ポストには位置情報を追加できる ・ポストには「いいね」とコメントができる ・アカウント同士でフレンド関係を作れる ・特定のアカウントをミュートにできる 5/11
  6. データテーブル設定ファイルの作成 go run -mod=mod entgo.io/ent/cmd/ent init テーブル名 を実行してテーブルごとの設定ファイルを作成する Annotations()でテーブルの基本設定を行う 6/11
  7. テーブルのフィールド設定 ・テーブル名.goのFields()でテーブルのフィールド定義を行う ・RDBのフィールド設定と同じように値に制限を付けることができる ・Mixin()を用意すると、複数のテーブルで同じフィールド定義を追加できる データテーブルごとの設定ファイル内でフィールドを定義する 7/11
  8. エッジの設定① データテーブルごとの設定ファイル内でエッジを定義する posts Account Post ・テーブル名.goのEdges()でエッジ定義を行う edge.Toでエッジの向きとプロパティなどを設定する 8/11
  9. エッジの設定② もう片方の設定ファイルで逆向きのエッジを定義する posts Account Post edge.Fromで逆向きのエッジやプロパティなどを設定する account 9/11
  10. 定義したデータモデルの確認 プロジェクトルートで go run -mod=mod entgo.io/ent/cmd/ent describe ./ent/schema を入力すると、設定したモデル定義を確認できる 10/11
  11. ここまでのまとめ ・RDBのテーブル定義をグラフ構造で直感的に定義できる ・グラフ構造でデータモデリングを行うことで、GraphQLでDB操作をしやすくできる ・現時点で設定しているデータモデル定義をいつでも確認できる 11/11
Publicité