Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第2回 ITパスポート社内勉強会 データベース
Search
PharmaX(旧YOJO Technologies)開発チーム
December 13, 2021
Technology
0
430
第2回 ITパスポート社内勉強会 データベース
第2回 ITパスポート勉強会の資料です。
【コーポレートサイト】
https://yojo.co.jp/
【採用情報】
https://herp.careers/v1/yojo
PharmaX(旧YOJO Technologies)開発チーム
December 13, 2021
Tweet
Share
More Decks by PharmaX(旧YOJO Technologies)開発チーム
See All by PharmaX(旧YOJO Technologies)開発チーム
AIエージェントについてまとめてみた
pharma_x_tech
21
15k
完全自律型AIエージェントとAgentic Workflow〜ワークフロー構築という現実解
pharma_x_tech
1
1.2k
LLMアプリケーションの Fine-tunningと蒸留を活用した改善
pharma_x_tech
7
2.1k
OpenAIの蒸留機能(Model Distillation)を使用して運用中のLLMのコストを削減する取り組み
pharma_x_tech
5
760
EMとして 自分の弱さと向きあい 人に背中を任せられるようになった話
pharma_x_tech
4
670
LLMアプリケーションの継続的改善のためのFine-tuningの活用
pharma_x_tech
0
81
LLMアプリケーションの評価と継続的改善
pharma_x_tech
3
460
開発チームから始める 「学習する組織」に 成長するための取り組み
pharma_x_tech
3
830
LLMマルチエージェントの アプリケーション設計のコツと未来
pharma_x_tech
1
660
Other Decks in Technology
See All in Technology
Two Blades, One Journey: Engineering While Managing
ohbarye
4
1.9k
Windows の新しい管理者保護モード
murachiakira
0
200
AIエージェント時代のエンジニアになろう #jawsug #jawsdays2025 / 20250301 Agentic AI Engineering
yoshidashingo
8
3.6k
大規模アジャイルフレームワークから学ぶエンジニアマネジメントの本質
staka121
PRO
3
1.1k
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
430
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
2
1.5k
Iceberg Meetup Japan #1 : Iceberg and Databricks
databricksjapan
0
340
ExaDB-XSで利用されているExadata Exascaleについて
oracle4engineer
PRO
3
240
IAMポリシーのAllow/Denyについて、改めて理解する
smt7174
2
200
LINE NEWSにおけるバックエンド開発
lycorptech_jp
PRO
0
230
【内製開発Summit 2025】イオンスマートテクノロジーの内製化組織の作り方/In-house-development-summit-AST
aeonpeople
2
610
あなたが人生で成功するための5つの普遍的法則 #jawsug #jawsdays2025 / 20250301 HEROZ
yoshidashingo
2
280
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.3k
Done Done
chrislema
182
16k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Designing Experiences People Love
moore
140
23k
Producing Creativity
orderedlist
PRO
344
40k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Visualization
eitanlees
146
15k
Why Our Code Smells
bkeepers
PRO
336
57k
Embracing the Ebb and Flow
colly
84
4.6k
Transcript
ITパスポート勉強会 ~データベース~
勉強会の予定 ・第1回 デジタルデータ 12/ 6 ・第2回 データベース 12/13 ・第3回 ネットワーク
12/20 ・第4回 セキュリティ 12/27 目次 ・毎週月曜日全4回
今日の予定 目次 • RDB • 主キーと外部キー • 論理演算 • 排他制御・トランザクション
データベース
これらは全部データベースにやってもらいます! データベースとは? 複数のデータを一括管理・保存する場所です! 顧客の住所 診断に出てくる漢方 顧客の支払方法 データを追加・削除したい! こういう条件のデータが見たい! データの一部を変更したい! 複数のデータを一括管理・保存する場所です!
私がやりましょう(キリッ データベース
表から関係性が読み取れますね! RDB(リレーショナルデータベース) 複数の「表」と、その「関係性」によって構成されるDB 顧客の住所 顧客の支払方法 顧客 この表を見ると住所と支払い方法はどの顧客のものなのかわかるように顧客IDを持っています。 ID 名前 電話番号
1 山田太郎 09000001111 2 田中一郎 09022221111 3 佐藤花子 09012345678 ID 顧客ID 住所 番地 郵便番号 1 2 東京都ああ区いい街 11-1 1111111 2 1 東京都いい区うう街 1-23-2 1232221 3 3 東京都ええ区おお街 1-33 4441115 ID 顧客ID 支払い方法 1 2 クレカ 2 1 クレカ 3 3 代引き 顧客は住所、支払い方法を持っていることがわかります。 データベース
これは正規化と呼ばれます 支払い方法の表現が一貫されていない そんなときは表を分けましょう! この表はどうでしょう? ID 顧客ID 支払い方法 1 2 クレカ
2 1 クレカ 3 3 代引き 4 6 クレジット 5 9 クレジットカード 6 5 クレカ 7 12 代金引換 検索しづらく、修正漏れしやすくなります、、、 ID 顧客ID 支払い方法ID 1 2 1 2 1 1 3 3 2 4 6 1 5 9 1 6 5 1 7 12 2 ID 支払い方法 1 クレジットカード 2 代引き これなら代引きを「代金引換」に変える場合でも 修正箇所は1つで済みますね! データベース
データベース 実際にデータを見るときはデータをくっつけたり、 抽出したりします! 顧客の支払方法 ID 顧客ID 支払い方法ID 1 2 1
2 1 1 3 3 2 4 6 1 5 9 1 6 5 1 7 12 2 ID 支払い方法 1 クレジットカード 2 代引き この状態だとデータの整合性や一貫性を保つこと ができますが、ちょっと見づらいですね... 支払方法 選択 (必要な行を抽出) ID 顧客ID 支払い方法ID 3 3 2 7 12 2 代引きの人だけ抽出 射影 (必要な列を抽出) 支払方法だけ抽出 結合 (関連の表を結合) ID 顧客ID 支払い方法ID 支払方法 3 3 2 代引き 6 5 1 クレジットカード ID 支払い方法 ID 1 1 2 1 3 2 4 1 5 1 6 1 7 2 支払方法の表を右に結合 見るとき用の一時的な表(ビュー)を作ります!
データベース 問1 問2 A. ウ フィールドとは表の中の項目のこと(IDや支払方法など) で、関連性からデータの一貫性や整合性を考え、フィール ドを整理する作業は正規化と呼ばれます。 この中で本質的に重複しているのは生年月日と年 齢です。
生年月日から年齢を知ることはできますが、年齢 から生年月日を知ることはできないため、今回は 年齢の方が削除可能です。 A. イ ちなみにYOJOではユーザーの中に年齢の項目があり、生年月日は元々 なかったため、入力したときの年齢のまま永遠に変わりません笑
データベース 顧客の住所 顧客 ID 名前 電話番号 1 山田太郎 09000001111 2
田中一郎 09022221111 3 佐藤花子 09012345678 ID 顧客ID 住所 番地 郵便番号 1 2 東京都ああ区いい街 11-1 1111111 2 1 東京都いい区うう街 1-23-2 1232221 3 3 東京都ええ区おお街 1-33 4441115 これらの表において… 名前や電話番号は同じデータが複数作成される可能性があります。 このように、行を特定できる項目を主キーといいます! しかし、顧客IDが1のデータは1つしかありません また、関連する表の主キーを持っている項目を 外部キーといいます! 主キー 主キー 外部キー
データベース 配送 こういうデータがあったとき、複数条件でデータを 絞り込みたいことがあります。 こういうときは論理演算をします! ex) 昨日の配送のうち、まだ配送中のものを知りたい 両方の条件を満たす! ID 状態
配送先ID 作成日 1 未発送 3 2021/12/13 2 配送中 2 2021/12/12 3 完了 1 2021/12/12 4 配達中 4 2021/12/11 5 完了 5 2020/1/2 6 完了 7 2019/9/30 7 完了 6 2019/7/1 AND(論理積) 条件1 条件2 OR(論理和) 条件1 条件2 どちらか1つでも 条件を満たす! 今回の例だと (作成日が昨日) AND (状態が配送中) ですね!
データベース 問1 問2 A. イ 上の図を言い換えると、BまたはCの部分かつAではな い部分なので、(Aではない)かつ(BまたはC)にな ります! 積集合はANDのことなので、表Aと表Bの共通部分 であるせんべいとチョコレートになっているはず
です! A. エ
データベース ID 商品名 在庫 1 漢方A 3 2 漢方B 2
3 漢方C 4 商品 データベースはデータを一括で管理していますが、同 時に操作されると不整合を起こす可能性があります。 漢方Bが2人に売れたとします。 例えば、、、 それぞれの担当者2人が同時に漢方Bの在庫を確認し、 売れた分在庫を1引くと? 担当者A 担当者B 在庫は2か、、 在庫は2か、、 1つ引いて 1に更新! 1つ引いて 1に更新! 2つ売れたのに在庫が1つある ことになってしまいます…
データベース どうすれば防げるでしょうか? このように、処理中に他の人からのアクセスをロックすること を排他制御といいます! 他 の 人 更 新 禁
止 ! 共有ロック 担当者B 在庫は2か、、 在庫は1か、、 1つ引いて 1に更新! 1つ引いて 0に更新! 今回だと、 ↓ こういう流れになればいいですね! 担当者A 誰かが編集中だ! 更新を待とう! データを見ることはできますが、 更新することはできません! 占有ロック データを見ることも、更新する こともできません! 在庫は常に見れた方が良いので 共有ロックがいいですね!
データベース 問1 問2 A. ウ 同時アクセスによるデータ不整合の防止に役立つのが 排他制御です。 ③の更新前に②の読み取りがされているため、② で読み取ったのは初期値の10になります。よって ④で書き込まれるのは17です!
A. エ
データベース YOJOでは購入時、 もし、この処理が②と③の間で止まってしまったらどうでしょうか? お金を払ったのに何も届かなかったら大問題ですね! ↓ こんな感じで処理が進みます! ①クレカの決済処理 ②注文を完了状態にする ③支払いを完了状態にする ④配送を準備状態にする
お金が支払われ、注文も完了したことになっているのに、支払われたことに なっておらず、配送も作られません。
データベース ではどうすればいいか? このようにどれか1つでも失敗すると不整合が起きる 1連の処理単位をトランザクションと呼びます! ①クレカの決済処理 ②注文を完了状態にする ③支払いを完了状態にする ④配送を準備状態にする ①~④までは一連の処理なので、どこかでエラーが発生したらそれまでの処理 もなかったことにしたいですね!
ex) ②~③で処理が止まったら、①、②の処理が成功していても、実行前の データ状態に巻き戻す必要があります! これはロールバックと呼ばれます
データベース 問1 問2 A. エ 関連する1連の処理単位がトランザクションです。 Bは更新履歴と書いてあるのでログファイルが正しいで す。バックアップファイルにはデータそのもののコ ピーが入っています。 A.
エ 4の処理が失敗した場合(3まで成功)のみ、AとBが 残った状態になります!
データベース 次回予告 ネットワーク LANとWAN プロトコル ネットワークの構成 12/20 21時からやります! keywords