Slide 1

Slide 1 text

データベースの概念 ⼭本 祐輔 名古屋市⽴⼤学 データサイエンス学部 [email protected] 第2回 データベース 2024年4月22日

Slide 2

Slide 2 text

講義ノート https://bit.ly/3xqTSds

Slide 3

Slide 3 text

データベースとは? 1 What is database?

Slide 4

Slide 4 text

⼀般⼈が思い浮かべるデータベース 新聞データベース 画像出典: https://www.pokemon.co.jp/ex/sun_moon/pokemon/ ポケモン図鑑的 たくさんのデータの集まりや図鑑的なもの

Slide 5

Slide 5 text

データベースとは? データベース 大規模なデータを効率よく管理するための技術. Or その技術によって集積されたデータの集合 =

Slide 6

Slide 6 text

データベース技術の利⽤例 ショッピングサイト ブログ記事管理 検索システム 電⼦メールシステム

Slide 7

Slide 7 text

データベースの定義 データベース • データの正しさを管理する主体によって体系的に整理さ れ,計算機によって永続的に格納されたデータの集まり データベース管理システム(DBMS) • 上記データベースを扱うためのシステム • DBMS + DB = データベースシステム(DBS) • 複数の応⽤⽬的での共有を意図して,組織的にかつ 永続的に格納されたデータ群 ⼤量に発⽣する多様なデータを処理するにはDBが必要

Slide 8

Slide 8 text

Q1: メジャーなデータベース管理システム Q. ウェブ検索エンジンを⽤いて,世の中に あるメジャーなデータベース管理システ ムを調べよ.また,調べたデータベース 管理システムを「関係データベースを扱 うもの」とそうでないものに分類せよ. 関係データベースを扱う 関係データベースを扱わない

Slide 9

Slide 9 text

Q1: メジャーなデータベース管理システム Q. ウェブ検索エンジンを⽤いて,世の中に あるメジャーなデータベース管理システ ムを調べよ.また,調べたデータベース 管理システムを「関係データベースを扱 うもの」とそうでないものに分類せよ. 関係データベースを扱う 関係データベースを扱わない →グラフDB →ドキュメント指向DB →ベクトルDB

Slide 10

Slide 10 text

現代のデータ処理に求められる機能 多様かつ大規模なデータの管理 データの正しさの保証 高速で効率的なデータ処理 並列処理・同時処理 アクセス権のコントロール ● ● ● ● ●

Slide 11

Slide 11 text

要件1 (= 前提): 多様かつ⼤規模なデータの管理 取引ID 顧客ID 品目 単価 数 A001 c001 鶏玉丼 440 1 A002 c001 はーいお茶 120 2 A003 c003 ポテト 1 1 取引ID 顧客ID 品目 単価 数 A001 c001 鶏玉丼 440 1 A002 c001 はーいお茶 120 2 A003 c003 ポテト 1 1 X57925 x67b2 きのこの里 200 3 取引ID 顧客ID 品目 単価 数 A001 c001 鶏玉丼 440 1 A002 c001 はーいお茶 120 2 A003 c003 ポテト 1 1 X57925 x67b2 きのこの里 200 3 取引ID 顧客ID 品目 単価 数 A001 c001 鶏玉丼 440 1 A002 c001 はーいお茶 120 2 A003 c003 ポテト 1 1 X57925 x67b2 きのこの里 200 3 取引ID 顧客ID 品目 単価 数 A001 c001 鶏玉丼 440 1 A002 c001 はーいお茶 120 2 A003 c003 ポテト 1 1 X57925 x67b2 きのこの里 200 3 取引ID 顧客ID 品目 単価 数 A001 c001 鶏玉丼 440 1 A002 c001 はーいお茶 120 2 A003 c003 ポテト 1 1 X57925 x67b2 きのこの里 200 3 … 数百万⾏レベルに & 表の数も増えると… 多種多様なデータが大量に発生する現場 2020年にAmazon.co.jpで販売された商品数は5億点以上 表計算ソフトの限界 多様かつ⼤規模なデータをExcelで複数⼈で管理すると破綻する

Slide 12

Slide 12 text

要件2: データの正しさの保証 データの正しさ,データ間の矛盾のなさを保証 購買ID 購買日 品名 売り上げ(円) 1123 2019/10/05 コーヒー 350 1124 2019/10/06 ホットミルク 300円 1125 2019年10月7日 野菜ジュース 100 1126 2019/10/08 コーヒー 3百万円 存在しない商品 の取引がある 値がおかしくないか 別表にあるデータと整合しているか? ありえない金額 が入力されている 日付の入力形式 が異なる

Slide 13

Slide 13 text

要件3: ⾼速で効率的なデータ処理 データベースへの大量の問い合わせに対して できるだけ短時間で結果を返す 商品ID 名称 単価 登録日 AB0023 鶏玉丼 440 2010/07/15 AC0027 はーいお茶 130 2010/09/25 AD0002 ポテト 150 2011/10/02 QR1127 きのこの里 200 2023/04/01 … 100万⾏ある表データ 要領が悪すぎ (最悪100万回) ある商品IDの⾏を 先頭から順に調べる =

Slide 14

Slide 14 text

Q2: 線形探索 Q. 100万個ある商品リストの中に特定の商品が 含まれているかを確認したい.商品リスト の先頭から末尾まで順に商品名を確認する とき,平均で何回(何個)の確認で商品の 有無を確認できるか? 商品ID 名称 単価 登録日 AB0023 鶏玉丼 440 2010/07/15 AC0027 はーいお茶 130 2010/09/25 AD0002 ポテト 150 2011/10/02 QR1127 きのこの里 200 2023/04/01 … 順番に 調べると…

Slide 15

Slide 15 text

Q2: 線形探索 商品ID 名称 単価 登録日 AB0023 鶏玉丼 440 2010/07/15 AC0027 はーいお茶 130 2010/09/25 AD0002 ポテト 150 2011/10/02 QR1127 きのこの里 200 2023/04/01 … 順番に 調べると… どこに正解があるかはランダム(等確率)と仮定すると, 100万 1 ×1回 + 100万 1 ×2回 + … + 100万 1 × 100万回 = 100万 1 2 100万 100万1 × = 約50万回 先頭から 1つ⽬で当たり 先頭から 2つ⽬で当たり

Slide 16

Slide 16 text

要件4: 並列処理・同時処理 複数人・複数サービス(アプリ)が 同時/並列にアクセスすることを想定する必要あり データベース データベース管理システム ユーザA (アプリA) 問い合わせ ユーザB (アプリB) ユーザC (アプリC) 問い合わせ 問い合わせ データベースシステム

Slide 17

Slide 17 text

同時・並列処理がうまくできないと困るケース Xさんの⼝座 Aさんが10万円を 振り込む処理 「振込先⼝座」残⾼ 100万円 振込⾦額 10万円 計算 100万円 + 10万円 110 万円 ? 処理 「振込先⼝座」残⾼ 100万円 振込⾦額 10万円 計算 100万円 + 10万円 110 万円 100 万円 Bさんが10万円を 振り込む処理 何がマズかったのか?

Slide 18

Slide 18 text

現代のデータ処理に求められる機能 多様かつ大規模なデータの管理 データの正しさの保証 高速で効率的なデータ処理 並列処理・同時処理 アクセス権のコントロール ユーザに応じてアクセスできるデータや可能な処理を決める ● ● ● ● ●

Slide 19

Slide 19 text

データベースを⽤いるメリット 大規模なデータ管理 データの正しさを保証 アクセス権のコントロール 高速で効率的なデータ処理 同時実行・並列処理 ● データ格納⽅式 ⼀貫性制約 インデックス 問い合わせ最適化 トランザクション ロール管理 ● ● ● ●

Slide 20

Slide 20 text

データベースの本質: データの独⽴化 アプリA プログラム コード データファイル アプリB プログラム コード アプリC プログラム コード プログラム コード プログラム コード プログラム コード データベースシステム アプリA アプリB アプリC 問い合わせ 問い合わせ データ処理 部分 データ処理 部分 データ処理 部分 データベース(実際のデータ集合) データベース管理システム データベースを使う場合 データベースを使わない場合 データベースはデータとアプリを切り離す データの処理や管理を⼀元化(⼀⼿に引き受ける)することで アプリケーションやデータ分析のコードから冗⻑な箇所を排除

Slide 21

Slide 21 text

Q3: データベース管理システムの利⽤例 Q. 普段利⽤しているサービスのうち,データ ベース管理システムを⽤いていると思われ るものを3つピックアップせよ.

Slide 22

Slide 22 text

Q3: データベース管理システムの利⽤例 Q. 普段利⽤しているサービスのうち,データ ベース管理システムを⽤いていると思われ るものを3つピックアップせよ.

Slide 23

Slide 23 text

Q3: データベース管理システムの利⽤例 Q. 普段利⽤しているサービスのうち,データ ベース管理システムを⽤いていると思われ るものを3つピックアップせよ. 画像出典: https://mainichi.jp/premier/business/articles/20200602/biz/00m/020/014000c 銀⾏ SNS 学務情報システム

Slide 24

Slide 24 text

データのモデリング 2 Modeling of data

Slide 25

Slide 25 text

モデリングとは? 複雑な仕組み・現象・状態を扱いやすくするために 興味のあるところだけを抽象化(そぎ落とす) 複雑な現象 モデル 本質だけを 抽出して表現

Slide 26

Slide 26 text

「データ」をモデリングするとは? データベース化すべき情報を取捨選択し データに関する枠組みを設計 データモデル ● データの構造 ● データの制約条件 ● データの操作 データモデルの要素

Slide 27

Slide 27 text

様々なデータモデル 階層データモデル※1 ※1: 画像は 北川博之著「データベースシステム」より グラフデータモデル※2 ※2: 画像はWikipedia.orgより ドキュメント指向モデル※2 部屋 教員 学⽣ 研究室 配属 実体関連モデル

Slide 28

Slide 28 text

関係データモデル あるゆるデータを表として表現するモデル - 1970年にEdgar Coddが提唱 - 背後に強⼒な数学的基盤をもつ

Slide 29

Slide 29 text

Q4: CSV/TSVファイル Q. CSVファイルおよびTSVファイルとは何か を調べよ. また,(データベースと⽐較 して)CSV/TSVファイルに存在する⽋点を 挙げよ.

Slide 30

Slide 30 text

Q4: CSV/TSVファイル 商品ID 名称 単価 AB0023 鶏玉丼 440 AC0027 はーいお茶 130 AD0002 ポテト 150 商品ID , 名称 , 単価 AB0023 , 鶏⽟丼 , 440 AC0027 , はーいお茶 , 130 AD0002 , ポテト , 150 商品ID名称単価 AB0023鶏⽟丼 440 AC0027はーいお茶130 AD0002ポテト 150 CSVファイル TSVファイル • 表の⾏をファイル中の1⾏, • 表の列をカンマ区切り • 表の⾏をファイル中の1⾏ • 表の列をTAB⽂字区切り で表現するテキストファイル で表現するテキストファイル CSV/TSVファイルともに表データの配布に⽤いられる

Slide 31

Slide 31 text

CSV/TSVファイルの⽋点 列の要素にカンマが⼊るデータがあると表構造が崩れる (TSVファイルのデータ要素にTAB⽂字が含まれる可能性は低い) CSVファイル固有の問題 データの型を規定できない 共通の問題 書籍ID , 名称 AB0023 , データベース AC0027 , 海辺のカフカ , 130 AD0002 , Data, information, & Knowledge 書籍ID 名称 AB0023 データベース AC0027 海辺のカフカ AD0002 Data Information & Knowledge これがまずい

Slide 32

Slide 32 text

関係データモデルの例 学生ID 姓 名 入学年 所属 s00001 川澄 桜 2023 A学部 s00002 山畑 滝子 2024 B学部 s00003 田辺 通 2024 C学部 科目ID 科目名 開講年度 c0001 線形代数 2023 c0002 線形代数 2024 c0003 統計学入門 2024 科目ID 学生ID 成績 c0001 s00001 不可 c0002 s00001 良 c0002 s00002 優 c0003 s00003 可 学⽣ 科⽬ 履修 … … … 制約を考慮してデータを複数の表に分割し格納 この4種類しか 値は取れない

Slide 33

Slide 33 text

Q5: チューリング賞 Q. 関係データモデルを提唱したEdgar F. Codd⽒は,計算機科学分野のノーベル賞 といわれるチューリング賞の受賞者. Codd⽒以外で,データベースに関する功 績でチューリング賞を受賞した⼈は誰? Edgar Codd

Slide 34

Slide 34 text

Q5: チューリング賞 Q. 関係データモデルを提唱したEdgar F. Codd⽒は,計算機科学分野のノーベル賞 といわれるチューリング賞の受賞者. Codd⽒以外で,データベースに関する功 績でチューリング賞を受賞した⼈は誰? Edgar Codd J. Ullman M. Stonebraker J. Gray C. Bachman

Slide 35

Slide 35 text

回 実施日 トピック 1 04/15 ガイダンス:データベースを使わない世界 2 04/22 データベースの概念 3 04/29(祝) 関係データモデル 4 05/13 SQL (1/3) 5 05/20 SQL (2/3) 6 05/27 SQL (3/3) 7 06/03 SQL演習 – レポート課題1 8 06/10 実体関連モデル (1/3) 9 06/17 実体関連モデル (2/3) 10 06/24 実体関連モデル (3/3) 11 07/01 正規化 (1/2) 12 07/08 正規化 (2/2) 13 07/15(祝) データベース設計演習 – レポート課題2 14 07/22 索引付け 15 07/29 NoSQL 16 08/05 期末試験 今後の予定 40