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

データベースの基礎

saireya
August 06, 2024

 データベースの基礎

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

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 対象 関係データ(関係表) オブジェクト・文書・ グラフ・XML・ 時系列・空間… 11 (出典) DB-Engines「DB-Engines Ranking」(2022/9時点) https://db-engines.com/en/ranking
  5. DBMSのランキング(2022/9時点) Oracle MySQL Microsoft SQL Server PostgreSQL MongoDB Redis Elasticsearch

    IBM Db2 Microsoft Access SQLite Cassandra MariaDB Snowflake 0 200 400 600 800 1000 1200 1400 データベース管理システム (得点>100のもの) DB-Enginesが算出した得点 12 (出典) DB-Engines「DB-Engines Ranking」(2022/9時点) 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): データの関係を格子状にまとめたもの (これを関係表(relation 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) フィールド(field) 行(row)・組(tuple) レコード(record) テーブル名 関係名・リレーション名 属性名
  13. (参考) 用語の使い分け 表(表現形式) としての用語 関係データベース としての用語 数学的構造 としての用語 表 (table)

    関係表 (relation table) 関係 (relation) テーブル名 関係名 行(row) レコード(record) 組(tuple) 列(column) 属性(attribute) フィールド(field) 次元(dimension) セル(cell) 属性値 要素(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