SlideShare a Scribd company logo
1 of 34
Download to read offline
データベース入門(第1回)
データベースとは。
データベース
システムにはデータベースというものがつきものです。
システムを作るうえで、データベースはかならずといって
いいほど使うことになります。
ここでは、そのデータベースというものについて、
どんなものがあるのか、その概要などをお話していきます。
データベースとは。
そもそもデータベースとはなんでしょうか。
データベースとは、簡潔にいえば、
「データをアプリケーションソフトウェアとは独立して整
理・収集・管理するシステム」のことです。
自分で書いたプログラムそのものが、データの保管や管理
をするのではなく、データの扱いについては、別のシステ
ム、つまりデータベースに任せるのが主流です。
じゃあファイルではだめなのか。
データベースでなくとも、普段パソコンでテキストなどを保存するには
「ファイル」の形で扱うことがほとんどだと思います。
メモ帳などを保存したテキストファイルにしても、Excelファイルにしても、
圧縮されたZipファイルにしても、みんなファイルです。
ですが、これらのファイルのなかから目的の情報を探すのは大変です。
そもそも探す仕組みを自分でつくってあげないといけません。
保存する場所や、探す場所は自分で指定してあげないといけません。
ほかのプログラムがファイルを開いていたら、そのファイルは開けません。
大量のファイルをあつかうのも、作ってみれば分かりますが、
大変なことだったりします。
そんな問題がデータベースでデータを管理することで、プログラムで複雑な
ことをしなくても柔軟な対応が可能になります。
DBMSとは。
データベース、とは概念的なもので、
実際にこれを実現したシステムを
DBMS(DataBase Management System)といいます。
また、データベースにはネットワーク型、リレーショナル
型、階層型などさまざまな形態がありますが、今日最も使
われているデータベースは、
データをExcelのような2次元の表の集まりで扱うリレー
ショナルモデルでデータを管理する、
RDBMS(Relational DBMS)が主流です。
いめーじ。
いめーじ。
蛇足。
この辺は基本情報処理試験でも扱う範囲なので
知識としては知っておきましょう。
また、これらの区分とは別に、どういった形で実際のデータを保管するか、
どういったアクセス手段をとるか、という観点では、
オブジェクトDB、XMLDBなども存在します。
オブジェクトDBは、オブジェクト指向プログラムのクラスなどの形の
オブジェクトのままDBにデータを格納します。
(Cach'e、ObjectStoreなど)
Cach'eは過去に業務で使ったことがありますが、メソッドでオブジェクトをそのまま
格納するイメージです。
XMLDBはその名のとおり、XMLの形式でデータを格納します。
(NeoCoreXMS、DB2 pureXMLなど)
今でも使われていますのでググレばすぐに見つかります。
RDBMSの種類。
現在使われているRDBMSとしては以下のようなものがあげられます。
ベンダー製有償データベース(商用データベースともいう)
(製品なのでソースコードは非公開。基本は有償。一部無償版あり。IT企業に
よる開発。大手メーカーでは有償製品をシステムに採用するケースが多い)
・Oracle Database(Oracle社。最新バージョンは12c)
・SQLServer(MicroSoft社。最新バージョンは2014)
・DB2 UDB(IBM社。最新バージョンはv10.5)
オープンソースデータベース
(ソースコードがWebで公開されている。基本は無償。世界中のボランティ
アエンジニアによる開発。有償製品には機能も性能も劣るが、無償のため、中
小企業でも導入するケースは多い)
・PostgreSQL
・MySQL(今はOracleに買収され、互換性のあるMariaDBという無償DBが存在する)
・Firebird
蛇足。
オープンソースのデータベースも年々機能が増え、ベンダー製(商用)データベースに
も引けをとらない、といった話も当然あるのですが、
そうはいってもベンダー製データベースの性能が上がっていないわけでもなく、
機能が増えていないわけでもないので、
性能面や機能面でオープンソースデータベースが有償製品のデータベースに
勝ることはないでしょう。
例えば、OracleDatabase12cではコンテナデータベース(CDB)とプラガブルデータベ
ース(PDB)という、マルチテナンシーの概念が導入され、仮想化などよりも運用コスト
を下げられる技術や、ヒートマップといった自動データ最適化技術、セキュリティや監
査などの機能強化などが投入されています。
こういったEnterprise向け要素は、オープンソースにはありません。
Oracleのまわしものではありません!
RDBMSの種類。
ネット系企業のほとんどはオープンソースのMySQL(MariaDB)を使い、大量
にサーバを構築し、パフォーマンス(スピード)を確保しています。
MySQLが入ったサーバたち
(質より量!)
MySQLを使う企業が多いのは、
台数を増やしやすいという特徴があるから
だといわれています。
また、その情報もネット上に豊富に事例が
紹介されています。
様々なカスタマイズ、ほかのソフトウェアと
の連携も可能であり、調整していく方法はい
ろいろとあります。
RDBMSの種類。
東芝や富士通、NECなど大手企業では、オープンソースのデータベースも扱
いますが、主流はOracleやSQLServerなどの商用製品です。
Oracleが入ったサーバ。
(量より質!)
大手が相手にするお客は当然金銭的にも余裕
がある企業が多く、金融系などはその最たる
ところになります。
このあたりの客層は、金額よりもサポート、
信頼性、スペックなどを重視し、古くから
Oracleを使い続けているなどのお客も多い
ので有償製品を採用するケースが多くなりま
す。
台数は少なくともパフォーマンスは出ます。
うちの会社では?
うちの会社でOracleやSQLServerなどの商用製品を扱うことはないでしょう。
使ってみたい人はいずれも無償版があり、有償版でもOracleで一番安いのが2
万円もしないので個人でも買えます。開発だけなら無償です。
じゃあ、
無償のオープンソースのデータベース、MySQLやPostgreSQLは
使い物にならないのか?
というと、そんなことはありません。
MySQLは世界中で使われていますし、PostgreSQLはオープンソースDBの
なかでも機能が豊富なため、日本国内では業務システムにもよく採用されてい
ます。
ほかにもオープンソースのデータベースは種類がありますが、この2つだけ知
っておけばだいたいOKです。
ただし、
とうぜんながら、オープンソースのソフトウェアは無償、
つまりただなので、
壊れてもだれも面倒見てくれませんし、
全部自己責任で使う必要があります。
そのへんの技術力を持っている人が使わないと、
ただより高いものはない!
にもなりかねないところは注意が必要です。
もどって。
RDBMSが備えている機能。
リレーショナルデータベースはざっくりと「表(テーブル)」「データベース
エンジン」「SQL(問い合わせ言語)」から成り立ちます。
表はデータを格納し、データベース・エンジンはリレーショナル・データベー
スに対して操作をおこないます。またSQLとは、リレーショナル・データ
ベースに要求を出すプログラミング言語です。
では、1つずつ見ていきます。
表(テーブル)
リレーショナルデータベースは、データを「表(テーブル)」に格納します。
Excelのような表をイメージしてください。
リレーショナルデータベースは、データを「行(Row、Record)」と
「列(Field、Column)」の2次元の構造で格納します。
「行」と「列」を指定することにより、取り出したいデータの値を取得します。
表(テーブル)
下の例で考えてみます。
「EMPLOYEE(従業員)」表から高橋さんの電話番号を取り出します。
高橋さんのデータは、EMPNO300番の行に入っています。
次に、高橋さんのデータの電話番号列(TEL列)を選びます。
これで、「行」と「列」が交差する部分の、
高橋さんの電話番号「022-716-6000」というデータを取得できます。
データベースエンジン
データベースに対してクライアント側(プログラム実行部分)からリクエスト
があった時に、
クライアントの要求はいったん「データベース・エンジン」に渡され、
データベース・エンジンがクライアントに代わってデータベースへの処理を
行います。
その結果がデータベース・エンジンからクライアントに返される仕組みになっ
ています。
表とユーザーの仲介役です。
実体はいくつかのプロセスとよばれるプログラムです。
小人さんたちが裏で動いていて、いろいろと仕事をしてくれるとおもえば。
データベースエンジン
蛇足。
MySQLといえば、ストレージエンジンです。
ほかのデータベースがエンジンが1つ、固定であるのに対し、
MySQLはストレージエンジンと呼ばれるコア機能を入れ替えることができ、
これにより、テーブルの動き・機能・検索方法などを変えることができます。
どのストレージエンジンを使うか、というのはテーブル単位でテーブルを
作るときに選ぶことができます。(デフォルトも決められます)
エンジンによって得意不得意があり、目的によって使い分けられるところが
MySQLの柔軟さの1つでもあります。
蛇足。
InnoDB:トランザクションをサポートしている現在標準のエンジンです。
MyISAM:MySQL5.5.5以前は標準のエンジン。
読み出しが非常に高速で、昔からMySQLの標準エンジンとして使われてき
ました。トランザクションには対応していません。
MEMORY:データ、インデックスなどをすべてメモリに格納するエンジン
です。メモリだけを使うので非常に高速ですが、mysqlそのものが終了す
ると、データも消えます。一時的な格納などに使います。(旧称:HEAP)
FEDERATED:リモート(遠隔)のMySQLサーバーをローカル(手元)に
あるように見せかけるエンジンです。
MERGE:同じ定義の複数のMyISAMテーブルを1つのテーブルに見せかけ
るエンジンで、データ量が多い場合など、分割保存する目的で使われます。
SQL
構造化問い合わせ言語「Structured Query Language」の頭文字をとって、
SQL(えすきゅーえる)と呼ばれています。
米国規格協会(ANSI)と国際標準化機構(ISO)の2つの標準化団体の協力に
よって、SQLの規格の標準化が進められています。
歴史を追っていくと、SQL86、SQL89、SQL92、SQL1999、
SQL2003、SQL2008といった規格が制定されています。
番号は、その規格が制定された年号になります。
ざっくり言うと、このSQLという言語を使えばデータベースやその中のテー
ブルを作ったり、テーブルにデータを登録したり、検索したり、更新したりす
ることができます。
いめーじ
SQL
SQLは大きく分けると3つに分類できます。
データ定義言語(通称DDL:Data Definition Language)
なにかを定義します
データ操作言語(通称DML:Data Manipulation Language)
データを操作します
データ制御言語(通称DCL:Data Control Language)
トランザクションなどの制御をします
DDL
なにがありますか?
CREATE
ALTER
DROP
RENAME
TRUNCATE
GRANT
REVOKE
それぞれどんな機能?
DML
なにがありますか?
SELECT
INSERT
UPDATE
DELETE
MERGE
それぞれどんな機能?
DCL
なにがありますか?
COMMIT
ROLLBACK
SAVEPOINT
それぞれどんな機能?
SQL
これらのSQLは、国際標準規格として制定されていることもあり、
基本的にはどのデータベースでも使えます。
OracleでもMySQLでもPostgreSQLでも、その他もろもろのRDBMSでも使
えるということです。
た・だ・し、
データベースの種類によって微妙に文法が
違ったり、使えなかったりします。
方言だとでも思っていてください。
特にMySQLでは実行できないことが多く、PostgreSQLは比較的標準規格に準拠して
いるSQLが多いです。
今回のまとめ
・システム開発ではデータベースを使うことが多い
・データをプログラムが管理するのではなく、DBMS(データベースマネジ
メントシステム)が、管理することでプログラムが煩雑にならなくてすむ
・現在広く使われているのはRDBMS(リレーショナルデータベース)
・RDBMSには商用、オープンソース含めさまざまな種類のデータベース
が存在する
・データベースを操作したりするには、「SQL」という国際的な標準規格で
定められている言語を使う
・SQLは大きく分けてDDL、DML、DCLの3つに分類できる
おっと。
次回は、SQLについて、
もう少し掘り下げてお話します。
次回以降、
インデックスとかシーケンスとかテーブルとか、
データベースの中のオブジェクトについても
お話しようかと考えています。
ご清聴ありがとうございました。

More Related Content

What's hot

What's hot (20)

データベース09 - データベース設計
データベース09 - データベース設計データベース09 - データベース設計
データベース09 - データベース設計
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
 
DeNA のデータ活用を支える BigQuery データの民主化とガバナンス強化の軌跡 | Google Cloud INSIDE Games & App...
DeNA のデータ活用を支える BigQuery データの民主化とガバナンス強化の軌跡 | Google Cloud INSIDE Games & App...DeNA のデータ活用を支える BigQuery データの民主化とガバナンス強化の軌跡 | Google Cloud INSIDE Games & App...
DeNA のデータ活用を支える BigQuery データの民主化とガバナンス強化の軌跡 | Google Cloud INSIDE Games & App...
 
データ基盤の従来~最新の考え方とSynapse Analyticsでの実現
データ基盤の従来~最新の考え方とSynapse Analyticsでの実現データ基盤の従来~最新の考え方とSynapse Analyticsでの実現
データ基盤の従来~最新の考え方とSynapse Analyticsでの実現
 
データベース05 - SQL(SELECT:結合,副問合せ)
データベース05 - SQL(SELECT:結合,副問合せ)データベース05 - SQL(SELECT:結合,副問合せ)
データベース05 - SQL(SELECT:結合,副問合せ)
 
Data warehouse
Data warehouse Data warehouse
Data warehouse
 
機械学習モデルのサービングとは?
機械学習モデルのサービングとは?機械学習モデルのサービングとは?
機械学習モデルのサービングとは?
 
Cookpad TechConf 2016 - DWHに必要なこと
Cookpad TechConf 2016 - DWHに必要なことCookpad TechConf 2016 - DWHに必要なこと
Cookpad TechConf 2016 - DWHに必要なこと
 
Azure Synapse Analytics 専用SQL Poolベストプラクティス
Azure Synapse Analytics 専用SQL PoolベストプラクティスAzure Synapse Analytics 専用SQL Poolベストプラクティス
Azure Synapse Analytics 専用SQL Poolベストプラクティス
 
pg_dbms_statsの紹介
pg_dbms_statsの紹介pg_dbms_statsの紹介
pg_dbms_statsの紹介
 
Data Vault and DW2.0
Data Vault and DW2.0Data Vault and DW2.0
Data Vault and DW2.0
 
データベース08 - 関係データモデルと関係代数
データベース08 - 関係データモデルと関係代数データベース08 - 関係データモデルと関係代数
データベース08 - 関係データモデルと関係代数
 
2018/3/23 Introduction to Deep Learning by Neural Network Console
2018/3/23 Introduction to Deep Learning by Neural Network Console2018/3/23 Introduction to Deep Learning by Neural Network Console
2018/3/23 Introduction to Deep Learning by Neural Network Console
 
Part 2: Data & AI 基盤 (製造リファレンス・アーキテクチャ勉強会)
Part 2: Data & AI 基盤 (製造リファレンス・アーキテクチャ勉強会)Part 2: Data & AI 基盤 (製造リファレンス・アーキテクチャ勉強会)
Part 2: Data & AI 基盤 (製造リファレンス・アーキテクチャ勉強会)
 
Hadoopの概念と基本的知識
Hadoopの概念と基本的知識Hadoopの概念と基本的知識
Hadoopの概念と基本的知識
 
Introduction to database
Introduction to databaseIntroduction to database
Introduction to database
 
データベース02 - SQL概要
データベース02 - SQL概要データベース02 - SQL概要
データベース02 - SQL概要
 
Database auditing essentials
Database auditing essentialsDatabase auditing essentials
Database auditing essentials
 
MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介MySQL SYSスキーマのご紹介
MySQL SYSスキーマのご紹介
 
Mongo db
Mongo dbMongo db
Mongo db
 

Viewers also liked

Viewers also liked (7)

名古屋アジャイル勉強会「春のアジャイル入門」
名古屋アジャイル勉強会「春のアジャイル入門」名古屋アジャイル勉強会「春のアジャイル入門」
名古屋アジャイル勉強会「春のアジャイル入門」
 
テストを書こう!!
テストを書こう!!テストを書こう!!
テストを書こう!!
 
SQL Server 入門
SQL Server 入門SQL Server 入門
SQL Server 入門
 
データベース入門3
データベース入門3データベース入門3
データベース入門3
 
データベース入門2
データベース入門2データベース入門2
データベース入門2
 
Phpcon2015
Phpcon2015Phpcon2015
Phpcon2015
 
サルでもわかるディープラーニング入門 (2017年) (In Japanese)
サルでもわかるディープラーニング入門 (2017年) (In Japanese)サルでもわかるディープラーニング入門 (2017年) (In Japanese)
サルでもわかるディープラーニング入門 (2017年) (In Japanese)
 

Similar to データベース入門1

1 Linux入門 第7章 DBサーバーの概要
1 Linux入門 第7章 DBサーバーの概要1 Linux入門 第7章 DBサーバーの概要
1 Linux入門 第7章 DBサーバーの概要
Enpel
 

Similar to データベース入門1 (12)

実はとても面白い...Documentation library
実はとても面白い...Documentation library実はとても面白い...Documentation library
実はとても面白い...Documentation library
 
ビジネスサイドが知っておくべきシステムの話
ビジネスサイドが知っておくべきシステムの話ビジネスサイドが知っておくべきシステムの話
ビジネスサイドが知っておくべきシステムの話
 
1 Linux入門 第7章 DBサーバーの概要
1 Linux入門 第7章 DBサーバーの概要1 Linux入門 第7章 DBサーバーの概要
1 Linux入門 第7章 DBサーバーの概要
 
第4回 データベース
第4回 データベース第4回 データベース
第4回 データベース
 
BP Study #16
BP Study #16BP Study #16
BP Study #16
 
Power Apps term explanation
Power Apps term explanation Power Apps term explanation
Power Apps term explanation
 
PHP基礎勉強会
PHP基礎勉強会PHP基礎勉強会
PHP基礎勉強会
 
ビッグデータによる価値創造を実現するデータ収集・蓄積・分析クラウドサービス “簡単!賢く!データを活かす!”東芝データレイクサービスの取り組みのご紹介
ビッグデータによる価値創造を実現するデータ収集・蓄積・分析クラウドサービス “簡単!賢く!データを活かす!”東芝データレイクサービスの取り組みのご紹介ビッグデータによる価値創造を実現するデータ収集・蓄積・分析クラウドサービス “簡単!賢く!データを活かす!”東芝データレイクサービスの取り組みのご紹介
ビッグデータによる価値創造を実現するデータ収集・蓄積・分析クラウドサービス “簡単!賢く!データを活かす!”東芝データレイクサービスの取り組みのご紹介
 
ViewsがわかるとDrupalがわかる! Vol.1
ViewsがわかるとDrupalがわかる! Vol.1ViewsがわかるとDrupalがわかる! Vol.1
ViewsがわかるとDrupalがわかる! Vol.1
 
ビジネスインテリジェンス入門~OSSでBIを始めよう~version2(公開版)
ビジネスインテリジェンス入門~OSSでBIを始めよう~version2(公開版)ビジネスインテリジェンス入門~OSSでBIを始めよう~version2(公開版)
ビジネスインテリジェンス入門~OSSでBIを始めよう~version2(公開版)
 
はやわかりHadoop
はやわかりHadoopはやわかりHadoop
はやわかりHadoop
 
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
[db tech showcase Tokyo 2018] #dbts2018 #D1L 『"何が必要?どう実現?"~異種DB間データリアルタイム連携』
 

データベース入門1