開発ノート【database】
開発ノート【database】です。
当サイトは、Bootstrap5で製作しています。
データベースとDBMS
- データベースは、データを蓄積するための入れ物、箱のこと。
- DBMSは、データベース管理ソフトのこと。
- DBMSは、データベースにデータをどのように入れるか、どのようにデータベースからデータを取り出すかを管理出来る。
データベースが必要な理由
- 大量のデータから必要なデータを取り出すため。
- 多人数でデータを共有して利用するため。
- データの保護。
データベース(DBMS)の種類
-
階層型
データの親子関係を保持した状態でデータ蓄積出来る。
組織図や家系図のようなデータ構造。
データを登録する際に、親子をたどるための「ルート」を登録するため、データをたどりやすく、検索スピードが速いというメリットがある。
組織のように、複数の親子関係があり複数の親データに属する子データは、親データ毎に子データを登録するのでデータが重複するというデメリットがある。 -
NoSQL型
その名の通りデータベースを操作する言語であるSQLを使用しないデータベースのこと。
データベースとしての根本的な考え方は、リレーショナル型とほぼ同じだが、NoSQL型の方が構造が単純。
NoSQL型は単純な構造のデータ構築に向いていて、データが増えても問題にはならないが、複雑な構造のデータ構築は扱いが難しくなる。 -
リレーショナル型
表形式でデータ蓄積するため、複数の表を関連付けて複雑な構造を構成出来る。
重複データの登録を排除することもできる。
例えば、複数の部署に所属する社員は、1社員として1データを登録しておき、その上で所属部署と関連付けることによって、複数の部署に所属しているデータとして扱うことが出来る。
複雑なデータの管理に向いているが、データが増えたときに性能劣化が発生する可能性がある。 -
ネットワーク型
データ構造は階層型に近いが、重複データを持たずに、複数の親データと結びつけて管理できる。
重複データを持たないため、階層型より効率的にデータ管理できるが、親:子がn:m(多対多)になるので、管理が複雑になる。
データベース(DBMS)10選
-
PostgreSQL(リレーショナル型):ポストグレスキューエル
無償。
重複データを持たずに構築できるように、データ構造を整理して登録していく。
システム開発の練習用に使われたり、小規模システムのデータベースとして使われている。
PostgreSQLは、原子性、整合性、独立性、耐久性(ACID)プロパティを持つトランザクション、自動更新可能なビュー、マテリアライズドビュー、トリガ、外部キー、ストアドプロシージャを特徴としている。
単一マシンからデータウェアハウスや多数の同時使用ユーザを持つWebサービスまで、様々なワークロードを扱えるように設計されている。
macOS Serverのデフォルトデータベースであり、Linux、FreeBSD、OpenBSD、Windowsでも利用可能である。 -
Oracle Database(リレーショナル型)
有償。
国内のリレーショナル型では、圧倒的なシェアがある。
クライアントサーバーシステムの時代から使われていて、最近のクラウド環境にも対応している。 -
MongoDB(NoSQL型):モンゴDB
データベース自体はオープンソース(無償)だが、サブスクリプションと管理ツールは有償。
NoSQL型では採用の多いデータベース。
クラウド型のアプリで多く採用されていて、最近ではブロックチェーンのデータベースとしても採用されている。 -
Microsoft Access(リレーショナル型)
Microsoft Officeのパッケージに含まれているデータベースアプリケーション。
リレーショナル型データベースの入門用としても使われている。
プログラミングができない人でも、簡単なデータベースシステムを作ることができるので、データベースを理解するための研修で使われてもいる。 -
Microsoft SQL Server(リレーショナル型)
有償。
業務システムで使われるデータベースとしては、Oracleに次ぐシェアを占めている。
Microsoft製のシステム管理ツールを導入する際にも必要。 -
FileMaker(リレーショナル型)
有償。
データベースとしてだけでなく、データベースを扱うためのプラットフォームソフトと一体。
プログラミングのできない人でも簡単なデータベースアプリケーションを作れる。
EXCELからのデータ流用も簡単にできる。 -
MySQL(リレーショナル型)
オープンソースなので無償だが、商用利用すると有償。
無償なので、データベースを使ったプログラミングの研修や個人のシステム開発などで使われている。 -
SQLite(リレーショナル型):エスキューライト
オープンソース(無償)。
他のリレーショナル型と大きく異なり、SQLiteはソフトウェアに組み込んで使う。
容量もコンパクトなので、携帯端末で動作するソフトウェアに向いている。 -
IndexedDB(ユーザーのブラウザ内にデータを永続的に保存する):インデックスデータベース
JavaScriptを使ってデータを管理する、プログラム組み込み型データベース。
キーと値を備え、表形式のイメージを持てるデータ構造。 -
Web SQL(リレーショナル型)
HTMLで扱える種類のデータベース。
当初はHTML5の標準仕様として検討されていたが、結果として標準仕様から外れた。
しかし、多くの主要ブラウザで使われている。
バックエンドとしてSQLiteが使われているため、基本的なSQL文が使える。