# ITチーム各PJ間データベースmtg#2
## 開催情報
| 日付 | 5/15
| -------- | ---------------------------------- |
| 主催 | 楠本 |
| 開始時刻 | 19:00 |
| 終了時刻 | |
| 場所 | Zoom ([録画リンク]()) |
| 参加人数 | 名 |
| 参加者 | 楠本(DB)、西川(スプレッドシート、添削者評価) |
## 目的
- スプレッドシートとの担当範囲を決定する
## データ類
- [現在扱うデータ類](https://drive.google.com/drive/folders/1m9Dy4AGQk1-K40_ORlgFOpiYu5OvHUcU)
## スプシに保存するデータ
- 添削者リストなど
- 添削者評価など
## DBに保存するデータ
- 添削者リストの変わらない部分はDBに載せる
- team添削者の扱い
- 退職したときに番号を削除する機能
## すみわけ
- 一回、二回くらいしか更新しないデータはスプシ
- 頻繁に使うデータはDB
- リーダーがスプシで編集する
- →編集し終わったデータをDBに反映する
- IT業務で扱うデータはDBに保存する
- 日報PJ
- 週例MTGでどの程度のデータを保存する必要があるのか聞く
- 基準
- 一日一回以上の更新がある場合はスプシで管理
- 取り出し頻度について聞く必要がある
-
---
# ITチーム各PJ間データベースmtg#1
## 開催情報
| 日付 | 5/11 |
| -------- | ---------------------------------- |
| 主催 | 楠本 |
| 開始時刻 | 22:00 |
| 終了時刻 | |
| 場所 | Zoom ([録画リンク]()) |
| 参加人数 | 名 |
| 参加者 | 楠本(DB), 赤司(opstts_tgt), 西川(添削者評価),<br>河野(slack),樋口(CL),畑中(DB),<br>瀬尾(日報),石川(DB),阿部(管理POS),遠藤(返却),<br>高橋(振り分け),大鐘(統括/22:30~),|
## 目的
- 入出力形式に関して明確に規定する
- DBpjと他PJとの担当範囲を明確にする
## DBpjの現段階構想
- データレイクに非構造化データを含めて全ての入力を保存する。
- AWS S3への保存をapi形式で全PJに提供する
- Amazon DynamoDBテーブルデータをAmazon S3のデータレイクにエクスポートする
- 生データをapi経由で送信してもらう
- ETLは決まっていない。
- クロージングPJ・返却PJ
- 小さいデータがリアルタイムで求められる。管理POSでデータを取得するorデータベースから引いてくる。
- Aさんがある時刻で答案を5件持っている等
- 添削者-答案情報は常に更新するものではない。
- 更新頻度ではなくETLに入るのかどうか。
- 管理POSで答案を動かしてもETLには入らずDBの更新ができない。
- そこが難しい。
- 返却状況のリアルタイム性に関して
- 拡張機能を使う
- 差し戻しはフレームワークを使って実現
- だれが答案を持っているかの情報は事前にDBに格納されているのか
- 返却以前に把握するための情報をDBで管理しておくのかどうか
- 振り分けからとってくることは可能
- 定期的な取得はなくはない(opstts,tgt)
- 受付段階・振り分け段階・返却開始時に格納
- 基本的には情報が送られるたびにDBに保存
- 現状のDBに関して、定期的な情報はDBだがリアルタイム性の高い業務に関しては直接管理POSなどで完結するのではない
- 管理POSとの連携?
- **管理POSで完結する情報に関しては管理POSで完結させる?**
- 受付から返却まで(変わる情報):管理POS
- 返却後(変わらない情報):DB
- ASIDに関しては管理POSのアクセス集中は避けたいので情報が担保されているDBで管理する方向性でもいい
- DBの現状の目的
- **複数の業務にまたがるテーブルに関して管理しておく場所を提供**
- 常に最新にすることは考慮しなくてもいいのでないか
- リアルタイム性は妥協してもいい
- opsttsPJ
- ETLに関して
- 現状としては、データの加工は他のPJで任せて、DBはその加工されたデータを格納→加工前のデータでいい
- DBには使いやすいデータを格納してほしい
- 7z(解凍前)をデータレイクにいれる
- ETLで解凍
- ETLでの加工はopsttsPJ側が作ればいい
- opsttsがDBに吸収される形にはなると思う
- GraphQLでselectだと柔軟性がある
- rest apiだとデータもらった後に結合(汚いし手間)
- GraphQLは必要十分な情報をいっぺんにゲットできる
- table同士の結合を考えなくて良い
- その代わり導入に慣れてないので工数がかかるかも
- 工数との紐付けはデータウェアハウスからとりだしたあとに行う
- GraphQLなのか、RestAPI+Pandasなのか
- Pandasだと汚いし,保守性は悪くなる
- どちらでもできる
- 無駄がなくなり早くなる
- opsttg,tgtの観点からGraphQLのほうがいい
- APIの対応はDB側か他PJかは負担によって判断する
- 工数分析以外はRESTAPIでもいい
- 実装はDjangoのRESTAPIの部分をGraphQLに書き換える感じになると思われる。
- graphene-djangoってのがある
- 出力ではdjango rest apiを考えている。
- 生データを必要分受け渡しした後は、pandas等で整形する形を考えている。SQLを直接叩くのは学習コストや引継ぎの観点、言語の複数化の観点からあまり望ましくない。
- 列の指定などをどうするか?が問題
## 各PJへのヒアリング結果
- [各PJに聞いた必要なデータ類](https://drive.google.com/drive/folders/1m9Dy4AGQk1-K40_ORlgFOpiYu5OvHUcU)
- 上記の回答をベースにDBへの搭載の是非を考えました。
- [データベースpj議事録](https://hackmd.io/baN08vjaSbKJj5hfU3Oy0Q#DB%E3%81%AB%E5%85%A5%E3%82%8C%E3%82%8B%E3%81%8B%E5%85%A5%E3%82%8C%E3%81%AA%E3%81%84%E3%81%8B)
## 各PJとの担当範囲について
- データウェアハウスのテーブル形式を決めておく
- 各PJに関してデータウェアハウス内のテーブルの組み合わせから提供することができる
- DBに入れなれないデータに関しては別のAPIに委託
- テーブルの提示をDB側から提供
- カラムの追加は難しい
- テーブルの正規化を事前にしておく
- 各PJとの相談としてはクエリとKeyを明確化させる
- APIは分割したテーブルごとに存在するのか
- RestAPIはテーブルごとなので、複数APIを叩いて取得する
- あるPJのみが使う組み合わせはそのPJに作成
- よく使う組み合わせに関してはDBPJ側で提供
- 格納する行数
- DB上だと問題ない