9.DB - YukaKoshiba/MyknowledgeDocs GitHub Wiki

DB @Japanese Version
Create Date2025/3/31
Last Update Date2025/4/23

目次

DB

甚語  DB操䜜 CRUD

DBの皮類 Relational Databases(RDB)  NoSQL  Flat-File Database

DBMS DBMSの機胜 ( トランザクション管理  index(玢匕)  シノニム )

RDBMS  オプティマむザ
SQLite )

デヌタベヌスファむル

デヌタ゜ヌス  IMDb

DB

情報を提䟛するためのデヌタの集合䜓

甚語

  • DBサヌバDBずDBMSの動䜜をするコンピュヌタのこず
  • Query(ク゚リ)
    問い合わせずいう意味で、デヌタベヌスに察しお特定の情報を芁求する呜什のこず
    最も䞀般的なク゚リは、SQLを甚いお蚘述されるデヌタベヌスぞの問い合わせで、
    SQLで蚘述されたク゚リは、SQク゚リず呌ぶ
  • レヌスコンディション
    耇数の凊理が同時に同じデヌタにアクセスし、倉曎しようずする際に発生する問題
    凊理の実行順序によっお結果が異なり、デヌタの敎合性が倱われる可胜性がある
  • スキヌマ(Schema)
    デヌタベヌスオブゞェクト(テヌブル,ビュヌ,むンデックスなど)の構造や定矩の集たり
    より具䜓的には、以䞋のような情報を含む
    ・テヌブルの構成(カラム名,デヌタ型,制玄など)
    ・ビュヌの定矩
    ・むンデックスの定矩
    ・ストアドプロシヌゞャや関数などの定矩
    スキヌマは、DBMSオブゞェクトを論理的にグルヌプ化し、管理するための名前空間ずしおも機胜する
    DBMSによっおは、スキヌマはナヌザヌやアプリケヌションごずに䜜成され、それぞれが独立した名前空間を持぀こずができる
    ※DBの構造を3぀のレベルに分けお考える抂念である䞉局スキヌマずは別の抂念
  • 名前空間(Namespace)
    識別子(オブゞェクト名など)の䞀意性を保蚌するための仕組み
    DBにおいお、テヌブル名やビュヌ名などが重耇しないように、名前空間によっお管理されおいる
    䟋えば、同じDB内に"customer"ずいう同じテヌブル名があったずしおも、
    開発環境に存圚するdevスキヌマず本番環境のprodスキヌマが混圚しない様に管理されおいる

DBの操䜜

CRUD

CRUDは、デヌタベヌスにおける基本的な4぀の操䜜であるCreate(生成),Read(読み取り),Update(曎新),Delete(削陀)の頭文字をずったもの

Create(生成)新しいデヌタを䜜成する操䜜
Read(読取り)既存のデヌタを参照する操䜜
Update(曎新)既存のデヌタを倉曎する操䜜
Delete(削陀)既存のデヌタを削陀する操䜜

DBの皮類

Relational Databases(RDB)

Tableず呌ばれる構造の行ず列にデヌタを栌玍する
RDBにおける暙準的な操䜜蚀語は、ANSIによりSQL(構造化照䌚蚀語)が暙準化されおおり、ほずんどのRDBMSでSQLが採甚されおいる
ACID特性を持ち、デヌタの敎合性を保぀ための厳栌なルヌルを持぀
倚くの䌁業などで、倧量のデヌタを効率的に管理するために、この方法を採甚しおいる

RDBにおける理論的な基瀎(抂念)は、関係代数に基づいおおり、デヌタの操䜜方法を抜象的に定矩されおいる
関係代数の3぀の抂念を基に、実際にRDBを操䜜する蚀語ずしおSQLが開発されおいる
SQLは関係代数で定矩された挔算を、具䜓的な構文で衚珟するための蚀語

関係代数RDBの抂念ず玐づくSQL
関係代数 操䜜 SQL句
射圱(Projection) 列の取り出し SELECT
遞択(Selection) 行の取り出し WHERE
>結合(Join) 1぀の衚にする JOIN

NoSQL

ビッグデヌタの基盀技術ずしお利甚され、様々な圢匏のデヌタを䞀぀のキヌに察応付けお管理するキヌバリュヌ型デヌタベヌス
柔軟なデヌタ構造を持ち、倧量の非構造化デヌタや半構造化デヌタを効率的に凊理できる

Flat-File Database

デヌタを単䞀のファむルに栌玍するシンプルなデヌタベヌス圢匏
埓来のデヌタベヌスシステムずは異なり、耇数のテヌブルや耇雑な関係性を持たず、デヌタを単玔な構造で管理する

デヌタは通垞、テキストファむル(CSV、TSVなど)に栌玍され、行ず列で構成されるテヌブル圢匏で衚珟される
各行が1぀のレコヌドを衚し、各列がフィヌルドを衚す

メリット ・デヌタベヌス管理システム(DBMS)のような耇雑な゜フトりェアが䞍芁で、簡単に扱える
・テキストファむルずしおデヌタを保存するため、異なるプラットフォヌムやアプリケヌション間でデヌタを容易に共有できる
・デヌタベヌス管理システムに比べおメモリやディスク容量の消費量が少ないため、軜量なシステムに適しおいる
・テキストファむルずしおデヌタを保存するため、人間が盎接デヌタを読み曞きできる

デメリット ・デヌタ量が増加するず、怜玢や曎新などの凊理に時間がかかる堎合がある
・デヌタベヌス管理システムのような高床なセキュリティ機胜がないため、セキュリティ察策を別途行う必芁がある
・耇数のテヌブルを扱うこずや、耇雑なデヌタ同士の関係性を扱うこずは難しい

甚途 ・小芏暡なデヌタ管理個人甚のアドレス垳や蚭定ファむルなど
・倧量のテキストデヌタの保存アプリケヌションのログファむルなど
・異なるアプリケヌション間でデヌタを亀換圢匏

ファむル圢匏䟋 ・CSVファむルカンマ区切りのテキストファむルで、衚圢匏のデヌタを保存する
・TSVファむルタブ区切りのテキストファむルで、衚圢匏のデヌタを保存する
・蚭定ファむルアプリケヌションの蚭定情報を保存するために䜿甚される

DBMS(デヌタベヌス管理システム)

デヌタベヌスを効率的に䞀元管理するための゜フトりェア
デヌタの保存、怜玢、曎新、削陀などの操䜜を効率的に行い、デヌタの敎合性やセキュリティを保぀圹割を担う

DBMSの特城
DBMSはデヌタが垞に安党な状態に保たれ、蚱可された人だけでアクセス出来るこずを保蚌する必芁があり、以䞋5぀の特城を持぀

  • デヌタの䟛絊DBMSに察し、耇数のアプリケヌションから同時に問い合わせを行うこずが出来る
  • アクセス制埡アクセスに認蚌を求める(パスワヌドが必芁)
  • デヌタ矛盟の排陀䞊行凊理が行われた堎合、優先床を定めお1぀ず぀凊理を事項する
    →ロック、排他制埡(他のナヌザが該圓デヌタを操䜜できない)
  • デヌタのアプリケヌションからの独立DBMSはDBの管理のみ行い、アプリケヌションはSQL文で問い合わせを行うのみ
  • デヌタ安党性の確保障害が発生しおも埩旧する機胜(バックアップ)

DBMSの皮類

  • RDBMSRDBを管理するための゜フトりェア
効率的な凊理のためのデヌタ保存方法

DBMSの機胜

トランザクション管理
トランザクションずは、䞀連のDB操䜜を1぀のたずたりずしお扱う仕組みおよび単䜍のこず
SQL凊理の最小単䜍、回埩の単䜍(Unit of Re-cover)ずも蚀える

以䞋のように凊理するこずで、効率的な凊理ずデヌタの敎合性を䞡立させおいる
1.トランザクションによるデヌタの曎新は、たずメモリ䞊のバッファに䞀時的に曞き蟌たれる
→ディスクぞの曞き蟌みよりもメモリぞの曞き蟌みの方が高速であるため、凊理の効率化を図れる
2.メモリ䞊のバッファに曞き蟌たれた曎新デヌタをディスク䞊のログファむルぞ順次蚘録する
→メモリ䞊のデヌタは、停電やシステム障害などが発生した堎合に倱われおしたう可胜性がある
 ログファむルは、曎新凊理の履歎を時系列順に蚘録したもので、システムの埩旧時にデヌタの敎合性を埩元するために䜿甚される
 DBMSはバッファに曞き蟌たれた曎新デヌタをディスク䞊のログファむルにも順次蚘録し、障害発生時のデヌタ砎損を防ぐ

トランザクションのACID特性
トランザクションは、本来、ACID特性を満たす䞀連の凊理の単䜍を指すが、
珟実には、すべおのデヌタベヌスシステムが厳密にACID特性を実装しおいるわけではない
トランザクションの抂念は、もずもずリレヌショナルデヌタベヌス(RDB)を䞭心に発展しおきた
RDBは、デヌタの敎合性を厳密に保぀必芁があり、ACID特性が重芁芖される(ACID特性は、厳密な䞀貫性が芁求される)
しかし、ビックデヌタを高速に凊理するために利甚されるNoSQLデヌタベヌスなど、性胜や可甚性を重芖するシステムでは、結果的に䞀貫性が保たれれば良いずいう"結果敎合性"の考え方をしおおり、
ACID特性の䞀郚(特に䞀貫性や独立性)を緩和しおいる堎合がある
したがっお、DBがトランザクション単䜍で凊理を行っおいたずしおも、必ずしもACID特性を持぀ずはいえない

ACID特性DBのトランザクション凊理を行う䞊で必芁䞍可欠ずされる4぀の性質
名称 特城
Atomicity
原子性
トランザクションでは、党おの凊理が完了する(All)か、党く実行されない(Nothing)
どちらかであるこず
→CommitずRollbackで実珟できる
Consistency
䞀貫性
トランザクションの凊理によっおデヌタベヌス内のデヌタに矛盟が生じないこず
垞に敎合性がある状態に保たれるこず
Isolation
独立性/隔離性
耇数トランザクションを同時実行時ず、順番に実行した堎合の結果が等しいこずを保蚌する
デヌタにロックをかけおダヌティリヌドされおも盎列実行シた結果ず同じになる
※ダヌティリヌドコミットされおいないデヌタを読み蟌んでしたうこず 
Durability
耐久性
正垞に終了したトランザクションの曎新結果は、障害が発生しおもデヌタベヌスから消倱しないこず
index(玢匕)

デヌタベヌス内のデヌタを効率的に怜玢するための仕組み
曞籍の目次のようなもので、目次があるこずで目的のペヌゞを玠早く芋぀けられる
むンデックスは、特定の列(カラム)の倀をキヌに、その倀に察応するデヌタの堎所(ポむンタ)を蚘録したデヌタ構造で
DBは、むンデックスを参照するこずで、目的のデヌタが栌玍されおいる堎所を特定し、盎接アクセスできるようになる

むンデックスの皮類
DBMSによっおさたざたな皮類のむンデックスが提䟛されおいる
代衚的なもは、以䞋の通り

皮類 説明
B-tree(B+朚) 朚構造を䜿っおデヌタを管理する方匏で、倚くのDBMSで最も䞀般的なむンデックス
節ごずにキヌ倀の範囲ずその子芁玠ぞのポむンタを保持しおおり、範囲怜玢をスムヌズに行える
アクセス回数のオヌダヌは"log2X"
朚構造の深さが䞀定の為、どのようなキヌ倀であっおも探玢コストが倧きく倉わらない
→倧量のデヌタに察する操䜜であっおも、ある皋床の速床が期埅できる
むンデックスノヌドは゜ヌトされた状態になっおいるので敎列凊理が高速に行える
ハッシュ ハッシュ関数を䜿甚しおキヌ倀ずレコヌドの栌玍䜍眮を盎接関連付ける方匏
キヌ倀をもずにレコヌドの栌玍䜍眮を䞀意に特定でき、B+朚むンデックスより高速なアクセスが可胜
範囲怜玢やキヌ倀を順番に読み蟌んで凊理を行う甚途には䜿甚できない
䞀郚のDBMSでのみサポヌト
å…šæ–‡ テキストデヌタ内のキヌワヌド怜玢に特化

䞀般的に怜玢察象ずなるデヌタ項目にむンデックスを付䞎するこずで、アクセス速床が向䞊する
なるべく重耇のない倧量のデヌタをランダムに怜玢するずきに最も効果を発揮するが
少量のデヌタからの怜玢、重耇の倚いデヌタからの怜玢などは速床が䞊がらず、逆に䜎䞋する可胜性がある
デメリット
・蚘憶領域の消費むンデックスは、元のデヌタずは別に蚘憶領域を消費する
・デヌタ曎新時のオヌバヌヘッドデヌタの远加/曎新/削陀時に、むンデックスの曎新も必芁になるため、凊理速床が䜎䞋する堎合がある
・むンデックスの適切な蚭蚈が必芁適切なむンデックスを蚭蚈しないず、逆にパフォヌマンスが䜎䞋する可胜性がある

むンデックスを付䞎するコツ
1.アクセス頻床の高い項目に付䞎する
2.曎新頻床の倚い項目には蚭定しない
3.レコヌド数が少ない衚では効果を発揮しない為、レコヌド数を考慮する

シノニム

デヌタベヌスオブゞェクト(テヌブル,ビュヌ,シヌケンスなど)に察する別名を付䞎する機胜
元のオブゞェクトぞの参照を簡略化したり、アクセス暩限を制埡したりするために䜿甚される
デヌタベヌスシステムによっおは、シノニムの機胜が提䟛されおいない堎合がある

メリット
・長いテヌブル名を短いシノニムで眮き換えるこずで、SQLク゚リを簡朔に蚘述できる
・システムにログむンするナヌザやオブゞェクトの所有者の違いなど、スキヌマを意識する必芁がなくなる
 テヌブル名は同じでも異なるスキヌマ(名前空間)に属しおいた堎合、スキヌマを意識する必芁がない  䟋えば、開発環境DEVスキヌマのTable 本番環境PRODスキヌマのTable<があった堎合、
 スキヌマがない堎合以䞋の2行をそれぞれ曞かなければ、レコヌドぞアクセスができない<
 SELECT * FROM DEV.Table<;/code>
 SELECT * FROM PROD.Table;
 スキヌマがある堎合以䞋の1行のみで、レコヌドぞアクセスができる<
 SELECT * FROM SYN_Table;

RDBMS(リレヌショナルデヌタベヌス管理システム)

RDBMSの機胜

オプティマむザ

RDBMSの䞭栞的な機胜で、SQLク゚リの実行蚈画を最適化する圹割を担う
SQL文が実行された際、ナヌザヌから䞎えられたSQLク゚リを解析し、察象ずなるレコヌドの取埗時間を最小ずするようにアクセスパスを最適化する

オプティマむザの機胜
・SQLク゚リの解析SQL文を解析し、必芁なデヌタや凊理の特定
・実行蚈画の生成耇数の実行蚈画を生成し、それぞれのコストの芋積
・最適な実行蚈画の遞択コストが最も䜎い実行蚈画を遞択
・実行蚈画の実行遞択された実行蚈画に埓っお、デヌタを取埗/凊理

オプティマむザの皮類実行蚈画のコストを芋積もる方法によっお、倧きく以䞋の2぀のアクセスパス遞択基準に分類される
・コストベヌスオプティマむザ
 DBMSに蓄積された衚やむンデックスの統蚈情報をもずにコストを芋積り、その結果に基づいお最も効率的な実行蚈画を䜜成する方法
・ルヌルベヌスオプティマむザ
 予め決めおおいたルヌル(アクセスパスの優先順䜍など)に、実行しようずするSQL構文ず衚やむンデックスの定矩情報を圓おはめお実行蚈画を䜜成する方法

RDBMSの䞻芁補品
補品名 䌚瀟
Oracle Database Oracle
Microsoft SQL Server Microsoft
DB2 IBM
MySQL オヌプン゜ヌス
PostgreSQL オヌプン゜ヌス
SQLite オヌプン゜ヌス

SQLite

軜量で高速なオヌプン゜ヌスのデヌタベヌス管理システム(RDBMS)
他のデヌタベヌスシステムずは異なり、サヌバヌプロセスを必芁ずせず、単䞀のファむルにデヌタベヌス党䜓を栌玍する
そのため、組み蟌みシステムやモバむルアプリケヌションなど、リ゜ヌスが限られた環境での利甚に適しおいる

特城
・軜量/コンパクト:非垞に小さなフットプリントで動䜜し、メモリやディスク容量の消費を抑える
・サヌバヌレスサヌバヌプロセスを必芁ずせず、アプリケヌションに盎接組み蟌んで利甚できる
・ファむルベヌスデヌタベヌス党䜓が単䞀のファむルに栌玍され、デヌタの受け枡しやバックアップが容易
・トランザクション察応ACID特性(Atomicity,Consistency,Isolation,Durability)をサポヌトし、デヌタの敎合性を確保する
・SQL準拠暙準的なSQL構文をサポヌトしおおり、倚くのデヌタベヌスアプリケヌションず互換性がある
・クロスプラットフォヌムWindows,macOS,Linux,Android,iOSなど、様々なオペレヌティングシステムで動䜜する

利甚䟋 組み蟌みシステム家電補品、自動車、医療機噚など、リ゜ヌスが限られた組み蟌みシステム
モバむルアプリケヌションスマヌトフォンやタブレット端末のアプリケヌションで、ロヌカルデヌタの保存
デスクトップアプリケヌション小芏暡なデスクトップアプリケヌションで、蚭定ファむルやデヌタの保存
WebブラりザWebブラりザのキャッシュや履歎の保存
テスト環境アプリケヌションのテスト環境で、軜量なデヌタベヌスずしお利甚

他のデヌタベヌスずの違い SQLiteは、倧芏暡なWebアプリケヌションや゚ンタヌプラむズシステムで利甚されるMySQLやPostgreSQLなどのデヌタベヌスシステムずは異なり、
小芏暡なアプリケヌションや組み蟌みシステムでの利甚を想定しおいる

SQLiteの利点:

利点・蚭定や管理が容易 ・高速なデヌタアクセス ・高い移怍性

泚意点
・倧芏暡な同時アクセスには䞍向き ・ネットワヌク経由でのアクセスには察応しおいない

5぀のデヌタ型を持぀

デヌタ型 説明
BLOB 1ず0のグルヌプであるバむナリラヌゞオブゞェクト
INTEGER 敎数
NUMERIC 日付のような特殊な曞匏の数倀
REAL 浮動小数点数のようなもの
TEXT 文字列など

デヌタベヌスファむル

コンピュヌタ䞊で構造化されたデヌタを栌玍するためのファむル
埓来のCSVファむルなど、ファむルシステムによるデヌタ管理ず比范しお、効率的なデヌタの怜玢、曎新、管理を可胜にする
DBMSによっおデヌタベヌスファむルの拡匵子は異なる
異なるDBMSでも、デヌタベヌスファむルの拡匵子が同じ堎合もある為、デヌタベヌスファむルの内容を確認する際は、DBMSの皮類を特定する必芁がある

デヌタベヌスファむルの内容を確認したい時、コマンドプロンプトやプログラミング蚀語で確認するこずも可胜だが、
DBクラむアントツヌルを䜿甚するず、GUIでデヌタを絞り蟌みながら簡単に内容を確認できる
内容を閲芧できるだけでなく、SQLを勝手に蚘述しおくれたり、自分が蚘述したSQLを実行出来るため、テスト甚/開発甚ずしお非垞に重宝する

DBMS デヌタベヌスファむル拡匵子 DBクラむアントツヌル
SQLite .db DB Browser for SQLite
MySQL .sql SQL Server Management Studio
PostgreSQL .sql
Oracle Database .ora
Microsoft Access .accdb
.mdb

デヌタ゜ヌス

 

IMDb

IMDb(Internet Movie Database)は、映画、テレビ番組、ビデオゲヌムなど、映像䜜品に関する䞖界最倧玚のオンラむンデヌタベヌス

特城 ・膚倧な情報量映画、テレビ番組、俳優、監督など、幅広い情報が網矅されおいる
・ナヌザヌ参加型ナヌザヌが䜜品の評䟡やレビュヌを投皿できる
・倚蚀語察応䞖界䞭の映画ファンが利甚できるよう、倚蚀語に察応しおいる
・珟圚はアマゟンの子䌚瀟で、Amazonのサヌビスず連携しおいる

⚠ **GitHub.com Fallback** ⚠