Keiです。
データベース/SQLについて学んだことを言語化していきます。
データベースとは?
Webサイト上で扱う、個人情報や商品情報、画像や映像といった様々なデータを保存しておく倉庫。
そのデータを扱うための技術がSQLという言語。
テーブルと呼ばれる書庫の棚のようなものの中に、関連するデータをまとめて格納するイメージ。
SQLとは?
Structured Query Language(構造化問い合わせ言語)といい、データベース上にあるデータを取得、更新、削除する際に用いられる。
サーバーサイド言語と組み合わせて、実際のサービスでデータを扱う仕組みを作れる。
データベースの種類
①リレーショナルデータベース(RDBMS):
データは表(テーブル)に格納されて、行(レコード)と列(フィールド)で構成
SQL(Structured Query Language)を使用してデータを操作する
②NoSQLデーターベース:
例:MongoDB、Cassandra、Redis
データベース構造が定義されていないためデータ構造が柔軟(スキーマ)
ドキュメント、キーバリュー、グラフなどの形式でデータを格納する
データベースを使う理由
データの整合性:エラーや矛盾を防ぐことができる
セキュリティ:データへのアクセスを制御することで、不正アクセスから保護できる
スケーラビリティ:データ量が増えても管理が効率的に行える
リレーショナルデータベースの種類と違い
MySQL
メリット:シェア率が高いため、サポートや情報が充実している。
読み取り操作が高速で大規模なWebサイトやアプリケーションに適している。
レプリケーションやシャーディング(コピー作成や負荷分散)機能が充実している。
デメリット: InnoDBストレージエンジンはACID準拠ですが、古いMyISAMエンジンはそうではない。(要するに使いどころが限られている?)
PostgreSQLに比べると複雑なトランザクション(銀行口座のような引き出して残高を減らす)を管理する機能に限りがある。
要するに:たくさんの人が使っているから困ったときに助けを呼びやすいけど、PostgreSQLに比べると機能は少ないかな。
PostgreSQL
メリット:SQL準拠であり、地理空間データの処理、複雑なクエリ、カスタムタイプなどの高度な機能をサポートできる(?)
機能を拡張するための拡張機能が豊富にある。
ACID準拠で、堅牢なトランザクションのサポートが出来る。
デメリット:高性能だが、システムリソースを多く消費する傾向がある。
高度な機能設定と管理をするにはより高度な専門知識が必要。
要するに:MySQLよりも複雑で便利なことが出来るしデータを守る力も強いけど、コストパフォーマンスが低いよ。
SQLite
メリット:非常に軽量でセットアップや管理が非常に簡単。また、サーバーレスで動作しアプリケーションに組み込むことが出来る。
データベース全体が単一のファイルに保存されているため、簡単に移動やコピーが可能。
デメリット:多数のユーザーが同時アクセスするような環境には向いてない。
高負荷で大規模なデータを扱うことはできない。
要するに:とてもシンプルで軽いから個人使用する分には便利だけど、たくさんの人に使ってもらいたいって場合には不向きだね。
まとめ
データベースは、個人情報や商品などの様々なデータを保存しておくための箱
SQLは、データベースの中に保存されているデータを管理するための言語
データベースの種類に関しては、ここで挙げた例は一部でしかないが、それぞれのプロジェクトの要件や技術者の技量など様々な観点から適切なものを選択する必要がある