データベース入門
データベースとは
データベースとは、データ管理・保管するソフトウェアです。(データの永続性を担保するもの)。単純に管理・保管だけならaccessでも可能ですが、あくまでも個人利用や小規模チーム利用を想定しているため、企業用途の使用には耐えられません。そこで、大規模なデータの保管やデータベースから情報をたくさんのユーザーがアクセスがしても、耐えられるようなソフトウェアとハードウェアが登場しました。企業のようなディープな使用に耐えらえるようなデータベースソフトが、代表的なデータベース製品がOracleデータベース、SQLServerデータベース、MySQL、PostgraSQL、DB2など。
データベース構造の種類
データベースの構造には大きく分けて、階層型、ネットワーク型、リレーショナル型、オブジェクト型データベース、カード型データベース、分散型データベースの6つの型があります。
型名 | 管理方法 |
---|---|
階層型 | データ階層構造で管理。IBM社の「IMS」が有名 |
ネットワーク型 | データを網目のように相互に関連付けて管理 |
リレーショナル型 | データを行と列で構成される2次元の表として管理 |
階層型データベース
ネットワーク型データベース
リレーショナル型データベース
リレーショナルデータベースとはリレーショナル型でデータを管理している(Excelのシートを相互に関連付けしたようなイメージ)データベースを表し、「Relational DataBase」の頭文字をとってRDBと呼ばれています。リレーショナルデータベースは検索及び更新を容易に行うことができるため、現在ではほとんどのデータベースはRDBとなっています。
リレーショナルデータベースを扱うソフトウェアはリレーショナル・データベース管理システム(RDBMS:Relationl DataBase Management System)と呼ばれています。
RDBMSの代表的な製品としては、Oracle社のOracleDatabaseやMySQL、IBM社のDB2 UDB、Microsoft社のSQLServer、富士通社のSymfoware、オープンソースのPostgreSQL、MariaDBなどあります。
いずれもSQL言語を使用してデータベースを操作(データ検索、登録、更新、削除、)します。
システム開発においては、上記の製品のいずれかを必ず使用してるため、プログラマやシステムエンジニア、インフラエンジニアなどは技術を習得する必要があります。
SQLServer
SQL Serverは、Sybase社のSybaseSQL Server4.2を元にMicrosoft社とSybase社が共同開発した、SQL Server4.2 for OS/2が始まりです。そのためSQLServerにはMicrosoft社のSQLServerとSybase社のSQLServerが存在します。
Sybase社との提携はSQLServer6.5まで、SQLServer7.0ではデータベースの第一人者であるJimGray(ジム・グレイ)氏をMicrosoft社に招き入れ、6.5のソースコードの大半を書き換えてデータベースのアーキテクチャを一新させました。
SQL Serverのバージョン歴史
発売年 | バージョン | 内部バージョン | コードネーム | 技術情報 |
---|---|---|---|---|
1993 | SQL Server 4.21 | 4.21 | SQLNT | |
1995 | SQL Server 6.0 | 6 | SQL95 | |
1996 | SQL Server 6.5 | 6.5 | Hydra | |
1998 | SQL Server 7.0 | 7 | Sphinx | |
2000 | SQL Server 2000 | 8 | Shiloh | |
2005 | SQL Server 2005 | 9 | Liberty | |
2008 | SQL Server 2008 | 10 | Katmai | |
2010 | Azure SQL Database | 10.25 | Matrix (aka CloudDB) | |
2010 | SQL Server 2008 R2 | 10.5 | Kilimanjaro (aka KJ) | |
2012 | SQL Server 2012 | 11 | Denali | |
2014 | SQL Server 2014 | 12 | Hekaton | |
2016 | SQL Server 2016 | 13 | ||
2017 | SQL Server 2017 | 14 | ||
2019 | SQL Server 2019 | 15 | 公式 | |
2022 | SQL Server 2022 | 16 | 公式 |
SQL Server世代
世代 | バージョン |
---|---|
第1世代 | SQL Server 4.2/6.0/6.5 |
第2世代 | SQL Server 7.0 / 2000 |
第3世代 | SQL Server 2005 / 2008 / 2008 R2 |
第4世代 | SQL Server 2012 / 2014 /2016 /2017 |
デフォルトのポート番号
SQLServerサーバーポート番号:1433
SQLServerインストール方法
データ型
SQLServerのデータ型はこちらのページで解説
一時テーブル
SQLServerで一時テーブルの作成方法はこちらのページで解説
チューニング関係
SQL Server内部構造について
- SQL Serverの内部構造 CPUリソース
- SQL Serverの内部構造 メモリ管理1
- SQL Serverの内部構造 メモリ管理2
- SQL Serverの内部構造 I/O動作
- SQL Serverのバックアップと復元方法
- SQLServerのネットワークコンポーネント
- SQLServerのリレーショナルエンジン
- SQLServerのデータベース破損原因と対応方法
- SQLServerのデータベース構造解説1
- SQLServerのデータベース構造解説2
その他
トランザクションログ
SQLServerは、データの更新があるとトランザクションログに更新したデータの履歴を記録します。
トランザクションログファイルが肥大化し、PCのHDDの容量を圧迫したときの対象方法
MySQL
MySQLとは
現在、MySQLのダウンロードは数は1000万人を超えている、商法RDBである「Oracle Database」に続き、世界で2番目に利用されているデータベースです。ただし、日本では「PostgreSQL」が5割から8割を占めている。
Mysqlの特徴は、オープンソースライセンスと商用ライセンスの両方を持っています。MySQLのソースコードはオープンソースの1つであるGPL(GNU Public License)に基づいて公開されています。
MySQLの歴史
MySQLは、スウェ-デンの「TcX DataKonsult AB(AB:株式会社)」のMichaelWidenius(通称Monty)によって開発が開始され、1995年にMySQL1.0がリリースされましたが主な目的はTcx社での内部使用であり使用許諾ライセンスもTcX社独自のものでした。1996年にが社内で開発していたデータベースソフトのソースコードをインターネットに公開しました。これがMySQL3.11.0です。2000年になるとMontyは「David Axmark」、「Allan Larsson」らとともに、MySQL開発の専門会社であるMySQL ABを設立しました。翌2001年には、「Marten Mickos」をCEOとして招き本格的な企業系をスタートさせます。
同年、フィンランドでInnobase Oyを経営していた「Heikki Tuuri」は、MySQLのストレージエンジンの可換の仕組みに目を付けて、開発していたInnoDBをMySQLに対応させます。InnoDBを搭載したMySQLの最初のバージョンは、「MySQL 3.23.34」、2001年3月のことでした。InnoDBは当初からMySQLに搭載されていたシンプルなMyISAMストレージエンジンとは異なり、トランザクションの機能を備えていました。
2008年にサンマイクロシステムズ社に買収され、2009年には、サンマイクロシステムズ社がOracle社に買収され現在は、Oracle社の事業部門として活動しています。
バージョン番号
MySQLのバージョン番号は3つの数字をドットでつないだ形式(5.7.15など)で表されます。最初の2つ部分がシリーズ(メジャーバージョン)です。最後の一桁がマイナーバージョンとなります。
プロダクションレベル
各シリーズは「開発途上版」の数回のリリースを経て、実運用で推奨される「製品版」がリリースされる流れになっています。製品版(安定版)のことをMySQLでは、GA(General Availability)呼び、GA前は-dmr(Development Milestone Release)や-RC(Release Candidateリリース候補版)が付けれます。
MySQL8.0になった理由について
MySQL5.7からMySQL8.0となったのは、MySQL6.0というバージョンは過去にかつて存在しており、GAになることなくMySQL5.4と統合されMySQL5.5というバージョンに統合されリリースされました。MySQL7.0は、他の製品ですでに7が使用されており、他製品を含めて8というバージョンで統一したかったので、MySQL8.0としてリリースされることになりました。
MySQLシリーズのバージョン
GAになった年月 | GAになった番号 | EOL (通所サポート) | EOL (Extended Support) |
---|---|---|---|
1999/01 | 3.22.35 | – | – |
2001/01 | 3.23.31 | ||
2003/03 | 4.0.12 | 2008/12 | |
2004/10 | 4.1.7 | 2009/12 | |
2005/10 | 5.0.15 | 2011/12 | |
2008/12 | 5.1.30 | 2013/12 | |
2010/12 | 5.5.8 | 2015/12 | 2018/12 |
2013/02 | 5.6.10 | 2018/02 | 2021/02 |
2015/10 | 5.7.9 | 2020/10 | 2023/10 |
2018/04 | 8.0.11 | 2023/04 | 2026/04 |
MySQLのシリーズ毎の機能追加
バージョン | 変更点 |
---|---|
3.21 | ・Windows版ネイティブバイナリ ・sjis/ujis追加(ビルド時に指定した文字コード専用のバイナリ) |
3.23 | ・複数の文字コードを同一バイナリで扱えるようになった。 ・MyISAM追加 ・InnoDB追加(トランザクション対応) ・レプリケーション ・バイナリログ ・OpenSSLによる暗号化通信 |
4.0 | ・クエリーキャッシュ ・MyISAMに全文検索機能 ・SAVEPOINT |
4.1 | ・サブクエリー ・MyISAMにGIS機能 ・utf8 ・プリペアドステートメント ・クライアント/サーバー間での文字コード自動変換 |
5.0 | ・ストアドプロシージャ ・ビュー ・トリガ ・cp932/euc jpms(cp932は4.1にもバックポート) |
5.1 | ・イベントスケジューラ ・パーティショニング ・プラグインAPI ・行ベースレプリケーション ・INFORMATION_SCHEMA |
バージョン | 変更点 |
---|---|
5.5 | ・デフォルトストレージエンジンがInnoDBになった ・utf8mb4 ・準同期レプリケーション ・SIGNAL/RESIGNAL ・PERFORMANCE_SCHEMA |
5.6 | ・GTID(Global Transaction ID) ・オンラインDDL ・遅延レプリケーション ・マルチスレッドスレーブ ・オプティマイザトレーシング |
5.7 | ・JSON ・ドキュメントストア ・MeCabによる日本語全文検索対応 ・sysスキーマ ・Generated Column ・マルチソースレプリケーション ・グループレプリケーション ・SQLモード「ONLY_FULL_GROUP_BY」がデフォルト |
8.0 | ・CTE ・Window関数 ・測地系に考慮したGIS ・クエリーキャッシュ廃止 ・データディクショナリ ・DDLの処理がアトミックに ・デフォルト文字コードがlatin1からutf8mb4に ・コレーションutf8mb4_ja_0900_as_cs_ks追加 |
データベースファイルと設定ファイル(RPM系)
項目 | ファイルまたはディレクトリ |
---|---|
データベースディレクトリ | /var/lib/mysql/ |
設定ファイル | /etc/my.cnf |
デフォルトのポート番号
MySQLサーバーポート番号:3307
MySQL8.0インストール手順
対応OS:RockyLinux AlmaLinux
・RedHat系のLinuxにMySQL8.0をYumでインストール
MySQL5.7インストール手順
対応OS:CentOS、RockyLinux、AlmaLinux
・RedHat系のLinuxにMySQL5.7をYumでインストール
MySQLバージョンの確認方法
$ mysqld --version
実行例
[rin@localhost ~]$ mysqld --version
/usr/sbin/mysqld Ver 8.0.31 for Linux on x86_64 (MySQL Community Server - GPL)
[rin@localhost ~]$
MySQL データ型
MySQLデータ型はこちらのページで解説
MySQL Workbench 8.0インストール
MySQL Workbench 8.0のインストール方法はこちらのページで解説