Upgrade to Pro — share decks privately, control downloads, hide ads and more …

データベースの基礎

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for saireya saireya
August 06, 2024

 データベースの基礎

データベースの基礎に関するスライドです。
作成途中のものですが、諸事情により先にアップロードします。

Avatar for saireya

saireya

August 06, 2024
Tweet

More Decks by saireya

Other Decks in Technology

Transcript

  1. 本日の内容: データベースの基礎 データベース(DB)に関する基礎事項を扱う • 基本的な概念 → DBの基礎概念と用語を理解する • DBの用途 →

    DBの利用場面や意義を理解する • DBの歴史 → DBの発展に関する歴史を理解する • 科目の概要 2
  2. 本日の内容: データベースの基礎 データベース(DB)に関する基礎事項を扱う • 基本的な概念 → DBの基礎概念と用語を理解する • DBの用途 →

    DBの利用場面や意義を理解する • DBの歴史 → DBの発展に関する歴史を理解する • 科目の概要 3
  3. データベースのイメージ データベースは「データが保管されている基地」 database = data + base データ 基地 cf.

    石油備蓄基地は「石油が保管されている基地」 4 (出典) 増永『データベース入門』(2006)p.2 データベース 石油備蓄基地 保管対象 データ 石油 保管する器 テーブル 貯油施設(タンク) 管理システム DBMS 操油施設(ポンプ)
  4. DBMSの種類と例 ▪ 関係データベース (RDB) ▪ NoSQL系 (RDB以外) オープン ソース •

    MySQL • PostgreSQL • SQLite • MariaDB • MongoDB • Redis • Cassandra 商用 • Oracle Database • Microsoft SQL Server • IBM Db2 • Microsoft Access • Snowflake • Elasticsearch • Databricks 対象 関係データ(関係表) オブジェクト・文書・ グラフ・XML・ 時系列・空間… 11 (参考) DB-Engines「DB-Engines Ranking」(2024/10時点) https://db-engines.com/en/ranking
  5. DBMSのランキング(2024/10時点) Oracle MySQL Microsoft SQL Server PostgreSQL MongoDB Redis Snowflake

    Elasticsearch IBM Db2 SQLite Cassandra Microsoft Access Splunk Databricks MariaDB 0 200 400 600 800 1000 1200 1400 データベース管理システム (上位15製品) DB-Enginesが算出した得点 12 (出典) DB-Engines「DB-Engines Ranking」(2024/10時点) https://db-engines.com/en/ranking 主要なDBMSの大半が 「関係データベース」を採用 用途によってはNoSQL系が 使われることも増加している
  6. データベースの定義 データベース(database, DB): 適用業務分野で使用するデータの集まりであって, データの特性とそれに対応する実体の間の関係とを 記述した概念的な構造によって編成されたもの (JIS X0017:1997, 下記の和訳) database:

    collection of data organized according to a conceptual structure describing the characteristics of these data and the relationships among their corresponding entities, supporting one or more application areas (ISO/IEC 2382-1:1993) 13 (出典) ISO/IEC『ISO/IEC 2382』(2015), https://www.iso.org/obp/ui/#iso:std:iso-iec:2382:ed-1:v1:en
  7. データベースの定義 データベース(database, DB): 1. 適用業務分野で使用する 2. データの集まりであって, 3. データの特性と 4.

    それに対応する実体の間の関係とを記述した 5. 概念的な構造によって 6. 編成されたもの 14 (出典) ISO/IEC『ISO/IEC 2382』(2015), https://www.iso.org/obp/ui/#iso:std:iso-iec:2382:ed-1:v1:en
  8. データベースの定義 データベース(database, DB): 1. 適用業務分野で使用する ← 各種のソフトウェア 2. データの集まりであって, ←

    データの「集合」 3. データの特性と ← データの「属性」 4. それに対応する実体の間の関係とを記述した ← データ間の「関係」 5. 概念的な構造によって ← 関係表の「スキーマ」 6. 編成されたもの ← 単なる集合ではない 15 (出典) ISO/IEC『ISO/IEC 2382』(2015), https://www.iso.org/obp/ui/#iso:std:iso-iec:2382:ed-1:v1:en
  9. 関係データベース いくつかの表をもついくつかのデータベースからなる 16 aaa bbb ccc ddd … … …

    … … … … … … … … … aaa bbb ccc ddd … … … … … … … … … … … … aaa bbb ccc ddd … … … … … … … … … … … … aaa bbb ccc ddd … … … … … … … … … … … … aaa bbb ccc ddd … … … … … … … … … … … … aaa bbb ccc ddd … … … … … … … … … … … … aaa bbb ccc ddd … … … … … … … … … … … … aaa bbb ccc ddd … … … … … … … … … … … … aaa bbb ccc ddd … … … … … … … … … … … … aaa bbb ccc ddd … … … … … … … … … … … … aaa bbb ccc ddd … … … … … … … … … … … … aaa bbb ccc ddd … … … … … … … … … … … … 関係データベース 管理システム (RDBMS)
  10. 関係表 表(table): データの関係を格子状にまとめたもの (これを関係表(relational table)、 もしくは単に関係(relation)という) 利用者名簿 17 (出典) UserLocal「個人情報テストデータジェネレーター」https://testdata.userlocal.jp

    氏名 よみがな 年齢 電話番号 大久保 藍 おおくぼ あい 77 0574-43-3139 福島 紀子 ふくしま のりこ 44 01586-5-7658 加藤 吉孝 かとう よしたか 55 03-6479-7858 滝沢 俊之 たきざわ としゆき 35 06-7797-2829 村上 浩二 むらかみ こうじ 49 03-2822-4810
  11. 関係表 表(table): データの関係を格子状にまとめたもの (これを関係表(relational table)、 もしくは単に関係(relation)という) 利用者名簿 18 (出典) UserLocal「個人情報テストデータジェネレーター」https://testdata.userlocal.jp

    氏名 よみがな 年齢 電話番号 大久保 藍 おおくぼ あい 77 0574-43-3139 福島 紀子 ふくしま のりこ 44 01586-5-7658 加藤 吉孝 かとう よしたか 55 03-6479-7858 滝沢 俊之 たきざわ としゆき 35 06-7797-2829 村上 浩二 むらかみ こうじ 49 03-2822-4810 「氏名が[大久保 藍]の人のよみがなは[おおくぼ あい]、 年齢は[77]歳で、電話番号は[0574-43-3139]である」 …という「関係」を表す(厳密な定義は後で扱う)
  12. 関係表 表(table): データの関係を格子状にまとめたもの (これを関係表(relational table)、 もしくは単に関係(relation)という) 利用者名簿 19 (出典) UserLocal「個人情報テストデータジェネレーター」https://testdata.userlocal.jp

    氏名 よみがな 年齢 電話番号 大久保 藍 おおくぼ あい 77 0574-43-3139 福島 紀子 ふくしま のりこ 44 01586-5-7658 加藤 吉孝 かとう よしたか 55 03-6479-7858 滝沢 俊之 たきざわ としゆき 35 06-7797-2829 村上 浩二 むらかみ こうじ 49 03-2822-4810 列(column) 属性(attribute) 行(row)・組(tuple) レコード(record) テーブル名 関係名・リレーション名 属性名
  13. (参考) 用語の使い分け 表(表現形式) としての用語 関係データベース としての用語 数学的構造 としての用語 表 (table)

    関係表 (relation table) 関係 (relation) テーブル名 関係名 行(row) レコード(record) 組(tuple) 列(column) 属性(attribute) 次元(dimension) セル(cell) 属性値 フィールド(field) 要素(element) 行数 関係の大きさ (cardinality) 組数 列数 次数(degree) 見出し(heading) 属性名 属性の型(type) 定義域(domain) 20
  14. 本日の内容: データベースの基礎 データベース(DB)に関する基礎事項を扱う • 基本的な概念 → DBの基礎概念と用語を理解する • DBの用途 →

    DBの利用場面や意義を理解する • DBの歴史 → DBの発展に関する歴史を理解する • 科目の概要 21
  15. データベースと表計算の比較 データベース 表計算 手軽さ △ システムやプログラム を準備する必要あり ◦ ソフトをインストール するだけで使える

    処理速度 ◦ 巨大なデータでも 高速に処理できる △ 巨大なデータを扱うと 著しく速度が低下する 個々の表 テーブル テーブル(or シート) 表をまとめたもの データベース スプレッドシート データの処理 ◦ (内部) ◦ (内部) データの表示 × (外部) ◦ (内部) データの管理 ◦ (内部) ◦ (内部) Officeソフトの例 Microsoft Access Microsoft Excel 主な利用場面 企業・大規模 個人・小規模 22
  16. 「情報爆発」・ビッグデータ Q. あなたが1日に生み出す/通信するデータ量は? 23 生み出すデータ 通信するデータ 所持するデータ テキスト B/日 B/日

    B 画像・写真 B/日 B/日 B 音声・音楽 B/日 B/日 B 動画 B/日 B/日 B B/日 B/日 B B/日 B/日 B B/日 B/日 B 合計 B/日 B/日 B
  17. 「情報爆発」・ビッグデータ 世界のデータ量は2025年に175ZBになる(予測) ※175ZB = 175 × 1021B 24 (出典) IDC「The

    Digitization of the World From Edge to Core」(2018) https://www.seagate.com/files/www-content/our-story/trends/files/ idc-seagate-dataage-whitepaper.pdf
  18. 本日の内容: データベースの基礎 データベース(DB)に関する基礎事項を扱う • 基本的な概念 → DBの基礎概念と用語を理解する • DBの用途 →

    DBの利用場面や意義を理解する • DBの歴史 → DBの発展に関する歴史を理解する • 科目の概要 27
  19. DBの歴史 年 事項 人物・企業 分類 B.C.2000? 粘土板目録 目録(DB以前) 19c カード目録

    M.Dewey 1964 GE IDS GE ネットワーク型DB 1968 IBM IMS IBM 階層型DB 1969 関係モデル E.F.Codd 関係DB 1974 SEQUEL(→SQL) IBM 1975 実体-関連モデル(ERモデル) P.Chen 1979 Oracle RDBMS(v2) Oracle 1982 IBM Db2 IBM 1989 Postgre(→PostgreSQL) オブジェクト指向DB 1992 Data Ware House(DWH) 1993 OLAP Codd 1998 NoSQL 1999 XMLDB 28 (出典) 木暮「データベースの歴史(概要)」 http://www.kogures.com/hitoshi/history/db-gaiyou/
  20. 最古の図書目録(ニップル, BC2000頃) シュメール人が 楔形文字で記した、 蔵書(粘土板)の一覧 内容: 1. Hymn of King

    Shulgi. 2. Hymn of King Lipit-Ishtar. 3. Myth, "The Creation of the Pickax". 4. Hymn to Inanna, queen of heaven. 5. Hymn to Enlil, the air- god. ︙ 29 (出典) S.N.Kramer『Sumerian Mythology』(1944) https://www.sacred-texts.com/ane/sum/sum05.htm
  21. 冊子目録(book catalog) 文献の一覧を冊子の形 に製本 • 文献の一覧が特定の 分類方法に沿って並 んでおり、その分類方 法による検索が可能 •

    項目の挿入・更新は 困難 • 現在も文庫や新書の 目録として、書店など に存在 30 (出典) 京都府立図書館「目録のおはなしその2 目録の「カタチ」」(2016) https://www.library.pref.kyoto.jp/?post_type=column
  22. カード目録(card catalog) 文献に対応するカードを 作成し、文献検索用に整 理して管理 • 19世紀にM.Dewey が発明(Deweyは、図 書分類法のデューイ 十進分類法も発明)

    • カードの挿入・更新・ 削除が容易 • 現在も図書館に存在 (現役のものも多い) 31 (出典) Wikimedia Commons「File:Schlagwortkatalog.jpg」 https://commons.wikimedia.org/wiki/File:Schlagwortkatalog.jpg
  23. (参考) 日本十進分類法(新訂10版・抜粋) 35 (出典) NDC Navi「日本十進分類法10版」 http://jasmine.media.osaka-cu.ac.jp/ndc_navi10/list3 0 総記 00

    総記 002 知識, 学問, 学術 007 情報学, 情報科学 01 図書館, 図書館情報学 014 情報資源の収集・組織化・保存 1 哲学 14 心理学 2 歴史 3 社会科学 35 統計 4 自然科学 5 技術 54 電気工学 547 通信工学, 電気通信 548 情報工学 6 産業 69 通信事業 7 芸術 72 絵画 727 グラフィックデザイン, 図案 75 工芸 757 デザイン, 装飾美術 8 言語 80 言語 800 言語学 810 日本語 9 文学
  24. 最初のネットワーク型DB: GE IDS(1964) GE(General Electric)が開発した最初の商用DB • Integrated Data Storeの略 •

    階層型より複雑なネットワーク型が先に登場した • 開発者のC. W. Bachmanは「バックマン線図」 (データ構造図の一種)の考案者でもある • COBOLの標準化団体であるCODASYLにより 規格化(「CODASYL DBTG提案」(1969)) • 規格化の過程でデータ記述言語(DDL)と データ操作言語(DML)が別々に検討される → ISO規格のNDL(1987)では再統合される • (参考) 横山(1988)「データベース言語NDL」 http://id.nii.ac.jp/1001/00020740/ 37 (出典) C. W. Bachman「The Origin of the Integrated Data Store (IDS)」(2009) IEEE Annals of the History of Computing, Vol.31, No.4, doi:10.1109/MAHC.2009.110
  25. (参考) Bachman線図 38 (出典) C. W. Bachman「Data structure diagrams」(1969) ACM

    SIGMIS Database, Vol.1, No.2, doi:10.1145/1017466.1017467
  26. 最初の階層型DB: IBM IMS(1968) IBMが開発した最初の階層型DB • Information Management Systemの略 • IBM製メインフレームの専用OS上でのみ動作

    • DBへの問い合わせはData Language/1 (DL/I, DL/1)という言語で行う • NASAのアポロ計画のために開発が開始された • 現在でも銀行の勘定系システムなどで稼働中 • IBM「Information Management System」 https://www.ibm.com/jp-ja/products/ims 39 (出典) 舟久保「メインフレーム・ミドルウェアの歩み」(2014) PROVISION, No.81 https://www.ibm.com/downloads/cas/W9V7R5E4
  27. Edgar F. Coddの関係モデル(1969) 1970年に関係データベースの理論を発表 • 代数学を学び、オートマトン理論を研究 • IBMでデータベースの理論を研究し、 1969年に社内報で、1970年に論文で、 関係モデルの理論を発表

    • E.F.Codd(1969) 「Derivability, redundancy and consistency of relations stored in large data banks」 doi:10.1145/1558334.1558336 • E.F.Codd(1970)「A Relational Model of Data for Large Shared Data Banks」 doi:10.1145/362384.362685 • 関係モデル: 代数学を基に、データを関係 (relation)の表(table)として扱う 41
  28. IBMのRDB: System R(1974), DB2(1982) 当時、IMSを主力としていたIBMは、 Coddの関係モデルに基づくDBの開発に躊躇 (RDB開発の遅さに失望し、CoddはIBMを退社) • System R(1974)

    • IBM内部で開発され、本格的な製品には至らず • SEQUEL(後のSQL): System Rの問い合わせ言語 • DB2(1982): IBM初のRDB製品 • System Rを基に開発 • 現在も、大規模DBとして開発継続中 • IBM「IBM Db2」 https://www.ibm.com/jp-ja/products/db2 42 (出典) D.D.Chamberlin他「A History and Evaluation of System R」(1981) doi:10.1145/358769.358784
  29. 本格的なRDB: Oracle, MySQL/MariaDB • Oracle DB(1979): 最初の商用RDB • IBMより先に発表される •

    2022年時点でも多くの企業で採用 • 開発元のOracle社は「ITの巨人」 • Oracle「データベース」 https://www.oracle.com/jp/database/ • MySQL(1995)/MariaDB(2009): 最も普及しているオープンソースのRDB • 2010年のOracleによる買収後は、Oracleが開発 • オープンな体制で開発されていたMySQLの買収に 反発した開発者が、MariaDBへのforkを開始 • 「MySQL」https://www.mysql.com • 「MariaDB」 https://mariadb.com 43
  30. オブジェクト指向DB: PostgreSQL(1989) オブジェクト指向DBとして最も普及 • オープンソースで開発中 • 前身のRDBであるIngresの後継(post)として、 当初はPostgresという名称だった • プログラミング言語のオブジェクト指向と同様に、

    継承による表や型などの定義が可能 (関係モデルでは「よく似た表」の重複が多発) • 通常のRDBとしても使える (オブジェクト指向の機能を使わないことも多い) • 「PostgreSQL」 https://www.postgresql.org 47
  31. (参考) オブジェクト指向DBの機能 分類 詳細 データ 表現 • オブジェクト識別性(とオブジェクトIDによる参照) • 複合オブジェクト

    • カプセル化 • オブジェクトの永続性(2次記憶管理を含む) • バージョン管理 データ モデル • スキーマ表現: 型/クラス、型階層/クラス階層と(多重)継承、スキーマ進化機能 • 操作系: 計算完全性(DBPL)、型検査・型推論、問合せ機能 • 完全性制約 DBの 共有性 • ビュー • 並行処理制御と障害回復 • 分散機能 • 長時間(設計)トランザクション その他 • DB管理ユーティリティ(ユーザインタフェースを含む) • アーキテクチャと性能評価 48 (出典) 田中「オブジェクト指向データベースの基礎概念」(1991) http://id.nii.ac.jp/1001/00004673
  32. Data WareHouse(DWH) B.Inmonの定義 「意志決定のため、主題別に編成され、統合され、時系 列で、削除や更新しないデータの集合体(Wikipedia)」 • 多次元データベース(MDDB)に対して、 • 即時的で分析的な処理(OLAP)を行い、 •

    事業の意思決定(Business Intelligence, BI)など に活用する • 主な製品: Google BigQuery (https://cloud.google.com/bigquery), Amazon Redshift (https://aws.amazon.com/redshift), Snowflake (https://www.snowflake.com) 49 (出典) Wikipedia「データウェアハウス」(2023/1時点) https://ja.wikipedia.org/wiki/データウェアハウス
  33. OLAPとOLTP • OLAP (On-Line Analytic Processing) 1回きりの非定型な処理 ⇒ 問い合わせに応じて適切な表を切り出す必要 ⇒

    処理元になるDBは多次元DB • OLTP (On-Line Transaction Processing) 頻繁に行う定型的な処理 ⇒ 事前に適切な表を作っておくとよい ⇒ 処理元になるDBは2次元のRDB 50 (出典) 嶋田「多次元データの格納と処理方式に関する研究」(2011) http://hdl.handle.net/10098/3491
  34. 多次元データベース(MDDB) • データを2次元の表(table)ではなく、 高次元の立体的な構造(cube)として扱う • DWHでデータを扱うための基盤 • SQLに似た問い合わせ言語MDXが使われる • roll-up,

    drill-downなどの操作により、 OLAPの問い合わせで必要な表を取り出す (表計算ソフトのピボットテーブル機能に類似) 53 (出典) J.Grey et al.「Data Cube: A Relational Aggregation Operator Generalizing Group-By, Cross-Tab, and Sub-Totals」(1993) doi:10.1109/ICDE.1996.492099
  35. NoSQL: Not Only SQL RDBでは処理効率が悪い場面で、 RDBではないデータ構造を採用したDBが台頭 55 (出典) Microsoft「リレーショナル データ

    ソースとNoSQLデータ」(2022) https://learn.microsoft.com/ja-jp/dotnet/architecture/cloud-native/relational-vs-nosql-data 文書 指向 Key- Value型 列 指向 グラフ 指向 MongoDB, Elasticsearch, BaseX Redis, DynamoDB Cassandra, BigTable, HBase Neo4j
  36. NoSQL系DBの特徴と利用場面 RDBより簡素なため高速・スケーラブル • RDBのうちよく問い合わせされるデータを キャッシュして格納するために使用 • IoTデバイスのログなど、頻繁に書き込まれるが、 読み出しが少ないデータを格納するために使用 • 集計などの高度な処理は難しい

    • 「NoSQL」は「SQLを使わない」というよりも、 「関係データベースではない」という意味に近い 56 (出典) 桑野「RDBMSだけで本当にいいの? NoSQL on AWSの勘所」(2018) https://d1.awsstatic.com/events/jp/2018/summit/tokyo/aws/59.pdf
  37. 列指向DB 行単位ではなく列単位の処理に特化したDB • 複数の列を列ファミリーとしてグループ化 • 列には同じ値が多いので、データの圧縮効率が高い • 大規模なWebサービスで使用するために開発 例: •

    Cassandra (FacebookからApacheへ移管) (https://cassandra.apache.org) FacebookやYahoo!Japanなどで使用 • Google BigTable (https://cloud.google.com/bigtable) Googleの多くのWebサービスで使用 58 (出典) F.Chang et al.「Bigtable: A Distributed Storage System for Structured Data」 (2008) doi:10.1145/1365815.1365816
  38. グラフ指向DB 節点(node)と枝(edge)からなるグラフを扱うDB • 表で扱うと非効率なグラフ構造を効率的に管理 • 「ある節点から𝒏-hopで辿り着ける節点は?」の ような問い合わせを高速に処理可能 例: • Neo4j

    (https://neo4j.com) 59 (出典) 岡本「グラフデータベースとは何か――ネットワーク状のデータ構造から瞬時に情報を検索する DBを解説」(2018) https://www.imagazine.co.jp/12805-2/
  39. 文書指向DB JSONやXMLなどの半構造データを扱うDB • RDBよりも柔軟で可変な構造を扱える • XMLDBではXPath/XQueryを使用 例: • MongoDB (https://www.mongodb.com)

    • Elasticsearch (https://www.elastic.co/elasticsearch) • BaseX (https://basex.org) (XMLDB) 60 (出典) K.Seguin「MongoDBの薄い本」(2012)(濱野訳) https://www.cuspy.org/diary/2012-04-17/the-little-mongodb-book-ja.pdf
  40. 時系列DB・空間DB 特定の種類のデータに特化したDB • 時系列DB: 時間を含むデータの処理に特化 • 金融・経済系・IoT機器などに活用 • 例: InfluxDB

    (https://www.influxdata.com), kdb (https://kx.com), TimescaleDB※ (https://www.timescale.com) • 空間DB: 地理情報・幾何データの処理に特化 • 例: PostGIS※(https://postgis.net) • 近年はRDBにも時空間データを扱う機能が実装 (但し、時系列DB・空間DBよりは非効率) ※: PostgreSQLがベースになっている 61 (出典) 近藤「RDBエンジニアから見たInfluxDB」(2021) https://www.sraoss.co.jp/wp- content/uploads/files/event_seminar/material/2021/RDB_-engineer_InfluxDB.pdf
  41. 本日の内容: データベースの基礎 データベース(DB)に関する基礎事項を扱う • 基本的な概念 → DBの基礎概念と用語を理解する • DBの用途 →

    DBの利用場面や意義を理解する • DBの歴史 → DBの発展に関する歴史を理解する • 科目の概要 62