データベースって聞いたことあるけど、実際には何か、どう使われてるのか、よくわかんないよね。でも実は、君が毎日使ってるスマホアプリやWebサイトの裏側には、ほぼ確実に「データベース」が動いてるんだ。その中でも特に重要な存在が「PostgreSQL」(ポストグレスキューエル)というやつ。この記事を読めば、PostgreSQLが何なのか、なぜそんなに使われてるのか、スッキリ理解できるよ。
- PostgreSQLはリレーショナルデータベースで、Excelのような表形式で大量のデータを管理できる
- オープンソースで信頼性が高いため、世界中の企業やWebサービスで使われている
- プログラムから自動でデータを整理・検索・更新できるので、Excelより何倍も使いやすい
もうちょっと詳しく
PostgreSQLが「ポストグレス」と呼ばれる理由は、昔の有名なデータベース「Ingres」(インガレス)の後を継いで開発されたから。名前の「Post」は「後」という意味だね。開発がスタートしたのは1986年で、30年以上前。その間に世界中のエンジニアが改善し続けて、今では最も信頼できるオープンソースデータベースとして認識されてるんだ。特に金融機関や病院といった「データが絶対に失われたらダメ」という場面でも使われるほど。
30年以上の歴史があって、世界中のエンジニアが信頼してる。だからこそ大企業が安心して使える。
⚠️ よくある勘違い
→ 違うんだ。PostgreSQLはボランティアのエンジニアたちが作ってる無料のオープンソース。有料でもなければ、大企業の専売特許でもないんだよ。
→ 正解。無料で使える。ただし自分でサーバーの管理をする必要がある場合もあるってわけ。
[toc]
そもそもデータベースって何なの?
まず「データベース」という言葉から説明しよう。データベースは「情報を整理して保存する仕組み」なんだ。例えば、君が学校の成績を管理したいとしよう。自分のノートに「○月○日のテストで数学は70点」「英語は80点」と書いてたら、後で「あ、数学って何点だったっけ?」って探すのに時間がかかるよね。でもExcelみたいな表に「学年」「科目」「点数」「日付」みたいに欄を分けて整理しておけば、「あ、ここだ」ってすぐ見つかる。
Webサイトやアプリの裏側も同じ。Instagramなら「ユーザー名」「プロフィール写真」「いいね数」「フォロワー」…こういう情報を、バラバラに保存してたら、「あ、このユーザーの情報を全部知りたい」ってなった時に大変だ。だからキレイに整理して、必要な時にサッと取り出せるようにしてるんだ。これが「データベース」。
データベースの基本的な使い方
データベースは3つの基本的な操作がある。
1つ目は「保存する」操作だ。新しい情報を追加する時、データベースに「ね、この情報を保存しておいてよ」って指令を送る。すると、データベースはその情報を整理して、どこかに保存する。
2つ目は「検索する」操作だ。「あ、あの情報を見たいな」って思った時、「ね、こういう情報ある?」って質問を送ると、データベースが「ありますよ」って該当する情報を返してくれる。Googleで「猫」って検索すると猫の情報がいっぱい出てくるのと同じ仕組み。
3つ目は「更新・削除する」操作だ。「あ、この情報、間違ってた」「もう不要だから消して」みたいな時に使う。
実はこのシンプルな3つの操作だけで、ほぼ全てのWebサービスは動いてるんだ。スマホの連絡先アプリだって、「連絡先を保存する」「連絡先を検索する」「連絡先を削除する」という同じ3操作で成り立ってるんだよ。
リレーショナルデータベースって何が特別?
データベースには色々な種類がある。中でもPostgreSQLは「リレーショナルデータベース」という種類だ。「リレーション」って「関係」という意味なんだ。つまり「データとデータの関係を管理できるデータベース」ってわけ。
例えば、学校の成績管理を考えよう。「学生テーブル」(表1)には「学生ID」「名前」「学年」が入ってる。「テストテーブル」(表2)には「学生ID」「科目」「点数」「日付」が入ってる。この2つのテーブルは「学生ID」という共通の情報でつながってる。だから「山田太郎の全教科の点数を知りたい」って時に、「学生テーブルで山田太郎を探して、その学生IDで、テストテーブルを検索する」みたいなことが簡単にできるんだ。
この「テーブル同士をつなげる」「関係を作る」ってのが、リレーショナルデータベースの大きな特徴。複雑に絡み合った現実の世界の情報を、キレイに整理できるんだよ。
PostgreSQLが選ばれる理由
世界中のWebサービスが、なぜPostgreSQLを選ぶのかって話をしよう。実はデータベースって、大きく分けると「商用の有料版」と「オープンソースの無料版」がある。有料版には「Oracle」(オラクル)とか「Microsoft SQL Server」(マイクロソフト・エスキューエル・サーバー)とかがあるんだけど、これらはめちゃくちゃ高い。ライセンス料だけで、年間何千万円とかかることもあるんだ。
一方、PostgreSQLは無料。でもただ無料なわけじゃなくて、信頼性も高い。「信頼性が高い」ってのは「データが壊れない」「何か問題が起きたら直ちに対応してくれる」「セキュリティがしっかりしてる」っていう意味だね。金融機関とか、病院とか、本当に大事な情報を扱う場所でも、PostgreSQLは使われてるんだ。
オープンソースって何が良いの?
PostgreSQLが「オープンソース」ってのは「誰でも中身のコードを見ることができる」「誰でも改善できる」という意味だ。これが実は、すごく強い。
例えば、もし有料のデータベースに「あ、バグがある」「セキュリティの穴を見つけた」ってなったら、その会社に報告して、修正してくれるのを待つしかない。でもオープンソースなら、世界中のエンジニアが「あ、この問題、俺が直そうか」って勝手に直してくれるんだよ。だから問題が見つかって、修正されるまでのスピードが速い。
また「俺たちの会社に必要な機能ってこれだから、PostgreSQLに足そう」みたいなことも、できるわけ。だから色々な企業の「こういう使い方したい」「こういう機能がほしい」っていう声が反映されて、どんどん改善されていくんだ。
30年以上の歴史がある
PostgreSQLは1986年から開発されてる。もう30年以上前だ。その長い間に、世界中のエンジニアたちが「あ、この使い方だと困る」「もっとこうしたい」っていう経験を積み重ねてきたんだ。
例えば、スマホのOSだって、iPhoneが出たのは2007年で、Androidが出たのも2008年くらい。それから15年以上、みんなが「あ、こういう機能いる」「あ、こういう時に困る」って経験を積み重ねて、今のiOSやAndroidがあるんだ。PostgreSQLもそれと同じ。長い歴史と、世界中のエンジニアの経験が詰まってるんだよ。
PostgreSQLはどこで使われてるの?
君が毎日使ってるアプリやWebサイトの裏側に、PostgreSQLがいるかもしれないんだ。例えば:
・Spotify(音楽配信)は、ユーザーの聴音履歴やプレイリストを管理するのにPostgreSQLを使ってる。「あ、最近ジャズばっかり聴いてるから、ジャズをおすすめしよう」みたいなことを判断するために、膨大なデータを整理する必要があるわけだ。
・Instagram(SNS)も、ユーザーの投稿や「いいね」の情報を管理するのにPostgreSQLを使ってる。
・Slack(ビジネスチャット)も、メッセージの履歴やユーザー情報を管理するのにPostgreSQLを使ってる。
・不動産サイトのhotels.comとか、Airbnbとか、物件情報を膨大に管理する必要があるサービスも、PostgreSQLを使ってることが多い。
こうして見ると「えっ、あんなに大きなサービスが?」って思うかもしれないけど、実は有名なサービスほど、オープンソースを使ってることが多いんだ。なぜなら「信頼できる」「自分たちでカスタマイズできる」「コスト安い」という3つの理由があるからね。
スタートアップからメガサービスまで
PostgreSQLが使われてるのは、大企業だけじゃない。むしろ、今の大企業も、最初はスタートアップだったわけ。その時に「あ、データベースどうしよう」って時に、PostgreSQLを選んでるんだよ。
なぜかというと、スタートアップは予算がない。だからお金がかかるOracleとか、Microsoft SQL Serverは選べない。でもPostgreSQLなら無料だし、信頼性も高い。だから「じゃあ、これで行こう」ってなるわけ。そして会社が大きくなっても「あ、PostgreSQL、けっこう良いな」ってそのまま使い続けることが多いんだ。
つまり、スタートアップの「お金がない時代」から、大企業の「大量のデータを処理する時代」まで、ずっと一緒に成長していける道具ってわけだね。
PostgreSQLの強い機能
PostgreSQLが選ばれる理由は「無料で信頼性高い」だけじゃない。実は、めちゃくちゃ強い機能をいっぱい持ってるんだ。
複雑な検索が簡単にできる
例えば、学生の成績管理の例で考えよう。「2023年度に、数学で80点以上取った女子学生で、学年は3年生。その学生の全教科の平均点を出して、ランキング順に表示してよ」みたいなめちゃくちゃ複雑な条件を、PostgreSQLはサッと処理できる。
これを手で計算したら、何時間かかるかわからない。でも、PostgreSQLに「SQL」(エスキューエル)という専用の言葉で指令を送れば、一瞬で答えが返ってくるんだ。このSQL言葉がめちゃくちゃ強力で、複雑な条件を、直感的に書ける。
大量のデータを高速に処理できる
「数百万人のユーザーの情報から、こういう人を探して」みたいな大量の操作でも、PostgreSQLは爆速で処理する。これは「インデックス」(索引)という機能があるからなんだ。図書館の本を思い出してみて。全部の本から「あ、この著者の本はどこにある?」って探すのは大変だよね。でも図書館には「著者のあいうえお順リスト」みたいな目次(索引)があるから、すぐに見つかる。PostgreSQLも同じ。「この欄でよく検索されるから、事前に索引を作っておこう」って工夫をしてるんだ。
データが絶対に壊れない仕組み
銀行の口座残高とか、病院の患者情報とか「間違ったらダメ」というデータがある。PostgreSQLは「トランザクション」(処理の一まとまり)という機能で、「この処理は最後まで成功するか、失敗したら元に戻すか、どちらかにする」っていう決まりを作ってる。
例えば、ATMから10万円引き出す場合。「自分の口座から10万円を減らす」と「現金を吐き出す」この2つの処理は必ずセットでないといけない。どちらか一方だけ成功したら大変だ。PostgreSQLは「この2つは絶対にセットで成功するように」「どちらかが失敗したら、もう一方も失敗させる」っていう保証をくれるんだ。
セキュリティがしっかりしてる
不正アクセスされたら困るので、PostgreSQLは「ユーザー認証」(あなたは本当にあなたですか?)とか、「権限管理」(あなたはこのデータを見ていいですか?)とか、色々な防御機能を持ってる。銀行とか、個人情報を扱う企業が使ってるくらいだから、セキュリティはかなり強いんだ。
PostgreSQLを学ぶことの価値
もし君が「プログラマーになりたい」「Webサービスを作ってみたい」って思ってるなら、PostgreSQLを学ぶ価値は大きいんだ。
仕事でよく使うスキル
プログラマーの仕事って「Webアプリを作る」「スマホアプリを作る」「データ分析する」とか、色々あるんだけど、ほぼ全てで「データベース」を使う。データベースの中でもPostgreSQLは「シェアが高い」(よく使われてる)から、PostgreSQLを学んでおけば、仕事の幅が広がるんだ。
実際、求人を見てみると「PostgreSQL経験者募集」「MySQL・PostgreSQL使える人募集」みたいなのがいっぱいある。だから学んでおいて損はないんだよ。
実務的なスキル
PostgreSQLを学ぶってことは、単に「このコマンドを打つ」みたいなテクニックじゃなくて、「どうやってデータを整理するか」「どうやって複雑な情報を管理するか」っていう、「データとの向き合い方」を学ぶんだ。
これはプログラミングの基礎中の基礎。データの構造を理解すると、プログラムも上手くなるんだよ。
つくるものの選択肢が広がる
「あ、こんなサービス作ってみたい」って思った時に、データベースの知識があると「あ、このデータはこう整理して、こう管理しよう」ってすぐに判断できるんだ。データベースなしに、ちょっと規模のあるサービスは作れないんだよ。だからPostgreSQLを学ぶと、作れるものの幅がぐーんと広がるわけだね。
