MySQL、Zabbixの特徴

# MySQLとZabbixの特徴　まとめ 
**はじめに**<br>
参画前に現場で使うMySQLとZabbixについて勉強したためまとめます。

:::note warn
2025年5月7日時点の情報をまとめており、
確認は行っていますが間違っている箇所があるかもしれません。
:::
***

# MySQLの特徴
そもそも**データベース管理システム**(DBMS)とは、データを構造的に効率よく管理するために使用するもののこと。あらゆるITシステムを構築する際において、システムの裏側にはデータベース管理システムが必ず利用されている。<br>

:::note info
データ保存形式は以下の3つがある。
* 階層型
* ネットワーク型
* リレーショナル型

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4075824/7e4007b3-7088-45b0-9ff3-a0b309ad3533.png)
:::
***

**MySQL**は、世界で最も利用されているデータベース管理システムの1つである。
また、MySQLでは上のデータ保存形式の中で主流の形式である**リレーショナル型**を採用している。
<br>

**リレーショナルデータベース**（RDBMS）では、ひとまとまりのデータをテーブルという単位で管理している。さらに、テーブルに設定したキーと呼ばれる項目でテーブル同士を結びつけることで、データ同士の複雑な関係性を表せる。<br>
***
:::note info
**MySQLの主な特徴**

1. オープンソースでありフリーで利用可能
2. 規模問わず対応可能
3. 多数の拡張機能が存在する
4. データの一貫性を保つ仕組みが強力
5. 様々な環境で動作可能
:::
<br>
特徴について以下で詳しく説明する。

***


### 1. オープンソースでありフリーで利用可能
</font>

MySQLは**オープンソースで開発、運用されていて、原則無料**で利用できる。

**オープンソース**とは、システムのコードが世間一般に公開されていて自由に利用できる仕組みのこと。
コードを参照して新たなシステムを開発したり、有志を集めて既存のシステムのさらなる開発をしたりできる点が特徴。

さらに、MySQLの学習が容易にできる点も特徴の1つ。

### 2. 規模問わず対応可能
MySQLは**拡張性の高さや動作の高速さ**から、小規模なシステムから大規模なシステムまで幅広く適用できる。
特に、大規模なシステムにおいては、可用性や拡張性が求められる。
MySQLは**レプリケーションやクラスタリング**と呼ばれる機能により、複数のサーバでの並列処理やサーバ停止時の切り替え処理を実現する。

### 3. 多数の拡張機能が存在する
MySQLは各種システムへの採用事例も多いため、**多数の拡張機能が存在している**のも特徴の1つ。
<br>

:::note info
**主な拡張機能**
* phpMyAdmin：データベースをブラウザから管理できるツール
* MySQL Workbench：ER図などを作成してデータベースやテーブルを自動生成できるツール
* MySQL Enterprise Backup：データベースのバックアップ機能を提供 [^1]
* MySQL Enterprise Firewall：データベースのセキュリティを向上 [^1]
その他にも様々なツールが多数用意されている。

:::
[^1]:有償ではあるもののMySQLの高機能バージョンであるMySQL Enterprise Editionで利用可能な管理ツール


### 4. データの一貫性を保つ仕組みが強力
MySQLには、**トランザクション**と呼ばれるデータの一貫性を保つ仕組みが強力に備わっている。

トランザクションとは、一連のデータベース操作を1つの論理的な単位として扱う仕組み。

一連の処理が完了するまでデータを変更しないようにすることで、やりとりの途中でトラブルがあった場合には処理を破棄して、データのズレを防ぐことができる。

特に、金融機関やECサイトなどで金銭のやりとりをする際、入出金データや受発注個数に誤りがあると甚大な影響が出てしまう場合に役立つ。

データベースには顧客情報や在庫データなどありとあらゆるデータが保管されており、データの一貫性を保つことが大前提として求められる。




### 5. 様々な環境で動作可能
MySQLは、WindowsやMacOS、Linuxなど、**さまざまなOS環境で動かせる**ことも特徴の1つ。

ITシステムの構築においては相互運用性・互換性が重要で、特定の環境でしか操作できないシステムは使い勝手に欠けると言わざるを得ない。

MySQLの場合は、**ほとんどの動作環境で使用でき、これまで解説した拡張性の高さやシステムの規模を問わず利用できる点から**、多くのユーザーに支持されている。

***
***

# Zabbixの特徴
そもそも**統合監視ソフトウェア**とは、複数の異なるネットワーク機器やサーバー、アプリケーションなどを、1つのツールで集中監視するためのソフトウェアのこと。<br><br>


**Zabbix**とは、サーバー、ネットワーク、アプリケーションを集中監視するための**オープンソースの統合監視ソフトウェア**のこと。
統合監視に必要な監視、障害検知、通知機能を備えていて、多数のプラットフォームに対応した ZabbixエージェントとSNMPに対応しているため、システム全体をZabbix 1つで監視することが可能。

:::note info
**Zabbixの主な特徴**
1. オープンソースのシステム監視ソフトウェアではデファクトスタンダード
2. 監視データを柔軟に活用可能
3. Webブラウザ上での簡単操作
4. 多くのプラットホームに対応
5. シンプルかつ軽快な動作
:::

<br>

### 1. オープンソースのシステム監視ソフトウェアではデファクトスタンダード
商用のソフトウェアはライセンス体系によって「利用可能な監視機能」が制限されているが、Zabbixは「インストールさえすれば、**多数の監視機能を使用することができる**」オールインワン・ソフトウェアです。

:::note info
**提供されている主な監視機能**
* 基本監視
* CPU監視
* メモリ監視
* ネットワーク監視
* ディスク監視
* ファイル監視
* サービス監視
* ログ監視
* Web監視
など
:::

### 2. 監視データを柔軟に活用可能
統計データを RDBMSに保存するため、グラフやレポートを様々な組み合わせや期間で表示できるなど**監視データを柔軟に活用すること**が可能。また、外部のソフトウェアからのアクセスも容易であるため、独自のインターフェイスを作成するなどカスタマイズも容易に行うことが可能。
<br>

:::note info
#### Zabbixには以下のソフトウェアが含まれる
* **Zabbixサーバ**
Zabbixサーバは監視システムの中心となるソフトウェア。監視設定、収集データの保存、閾値の判定、アラート通知、監視の実行を行う。すべての監視設定と収集データはMariaDBやMySQLなどのデータベースに保存する。
* **Zabbix エージェント**
Zabbixエージェントは監視対象サーバー上で動作し、**Zabbixサーバーからの指示に従ってサーバ内部のリソース情報やアプリケーションの稼働情報を収集、Zabbixサーバーへ送信**する。様々なOSに対応しており、OSネイティブに動作するため動作が非常に軽量である。
* **Zabbixエージェント2**
Zabbixエージェント2はZabbixバージョン 4.4系以降にて追加された新モジュール。従来、軽量なC言語で開発を行っていたものを、プラグイン機能やパフォーマンスの向上を行うためにGo言語で作成したもの。
* **Webインターフェース**
Zabbix WebインターフェースはPHPで作成されており、Apacheもしくは、Nginx上でWebアプリケーションとして動作する。すべての監視設定と情報表示はWebインターフェースから行うことができるため、設定のために専用のクライアントソフトウェアをインストールする必要はない。
:::

### 3. Webブラウザ上での簡単操作
Webブラウザで監視ステータスの表示や設定を行うことができ、管理ツールのインストールが不要なため、**操作が簡単で出先からの急な対応も可能**。また、高度なグラフ、マップ、レポート表示機能を有しており、**システム状況を簡単にグラフィカルに表示させることが可能であるため、Zabbixを導入することによりシステム全体の可視化や、定期的な稼働、統計分析を容易に行うことが可能**である。


### 4. 多くのプラットホームに対応
Zabbixは統合監視ソフトウェアの中でも**トップクラスの対応プラットフォーム数**を誇る。SNMPやIMPI, ODBC, ssh, HTTP, 任意のコマンド実行など、エージェントレス監視にも対応しているため、Zabbixひとつでシステム全体の監視を行うことができる。

### 5. シンプルかつ軽快な動作
総合監視機能に特化したソフトウェアであるため、**シンプルなインターフェースから直感的に操作する**ことができる。また、動作は他の監視ソフトの比較して軽快であるため、システムの負担になることはない。
***

## 参考文献
* [データベースの種類を３つ紹介！RDBMSとNoSQLの違いも解説](https://it-trend.jp/database/article/89-0066) <br>
* [MySQLとは？特徴やできること・学習メリット・使い方・学習法を解説](https://rookie.levtech.jp/guide/detail/116/)
* [オープンソースの統合監視ソフトウェアZabbixとは](https://www.cybertrust.co.jp/zabbix/about-zabbix.html#04)