この記事は、各RDBMSの識者にマサカリを投げてほしい記事です!マサカリ歓迎!
あらすじ
最近MisskeyというSNSを始めた。具体的にはMisskey.ioという一番大きめなインスタンスにアカウントを構えたのだ。
MisskeyはRDMBSとしてPostgreSQLを採用している。その一方、自分は仕事では主にMySQLを使用している。軽く調べてみたりしたが、データ型が異なる、PostgreSQLは追記型のアーキテクチャである、みたいな情報がヒットしたが、いまいちピンとこないし、「だいたい一緒だな・・・」みたいな感想になってしまった。
そして、ちょっとやそっとエンジニアが試してみたくらいでは大してクエリの速度が変化するわけでもない。仮に、MySQLでは激刺さりして使いものにならないクエリがPostgreSQLでは楽に通る、といったシチュエーションを用意するとして、たぶんMySQL側の人間は「そんなクエリ書くなや(爆笑)」みたいになって永遠に分かりあえないのではないかと思う。MySQLもPostgreSQLもめちゃ詳しい人間は世の中にはあまりいない。
MySQL PostreSQL 違い
自分が知っている情報はだいたい以下の通り。
- MySQLは典型的なシンプルクエリでの性能がチューニングされている
- したがって、素朴なWebアプリではこれで十分速い
- PostgreSQLはまんべんなく速い
- MySQLを使っているとJOINしまくりみたいなSQLは敬遠されがちだが、PostgreSQLは普通に通る
- 普通にリレーショナルデータベースをやっているみたいな感じ
- PostgreSQLは便利なデータ型がある
- GIS用の型などがあるので、地理情報をDBに入れたい場合は便利そう
- PostgreSQLは書き込みに少し強いが、MySQLは並行してたくさん読まれるようなワークロードに強い
- MySQLはいくつかエンジンを持っているが、PostgreSQLは1つのエンジン
基本的にMySQLのことしか知らないので、違いがあることすら知らない場所があって「そこ違いがあったんだ!!」といった感じになってしまうと思う。
AI君に聞いた
ここが違う!! みたいなのを教えてほしい
といってもあまりまだピンと来ていない。調べてみてもプログラミングスクールの記事ばかりが表示されるし、あまり有効な結果が得られないのだ。「この機能があった/なかったからMySQL/PostgreSQLを選んだ」といったエピソードなどを教えてもらえると嬉しいです。