ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

MySQLとPostgreSQLとOracleの使い分け

2016-07-12 13:24:44 | Weblog
ここだったか

◆みずほ銀行次期システム開発を見守るスレ25◆ [無断転載禁止]©2ch.net
http://hanabi.2ch.net/test/read.cgi/infosys/1467962368/

もっと前だったかに、銀行でMySQL使うのどうのこうの・・という話があったけど、
MySQLとPostgreSQLとOracleをどう使い分けていて、何故そうなるのか、
知ってるかどうか疑問だったので、ちょっと書いてみる




■使い分け

MySQL:更新処理を早くしたいが、複雑なselectは行わない
Oracle:カネはある
PostgreSQL:上記に外れた場合




■MySQLの選択理由
 なぜ、MySQLは、
「更新処理を早くしたいが、複雑なselectは行わない」
 ときなのかというと、MySQLには、SQLを使った高度な分析をおこなうときに
 便利な以下のものがない

・ウィンドウ関数
集合差を出す(MINUSとかEXCEPT)
・そのほか:以下を参照

[postgresql] MySQLユーザに捧げる、ポスグレの特徴的な機能12選
http://kwatch.houkagoteatime.net/blog/2014/12/20/postgresql-features/

ただし、更新は早く、また、インストールなどが、最近は比較的簡単になってきている。
そのため、更新が多いもので、検索は、キーを中心に取ってくるような、簡単なものしかないような場合(Web系のEC等では多くある)は、MySQLがよい。

 分析が多い場合は他のRDB
 更新が多くても、非構造データや、めちゃくちゃ早くする必要が有る場合は
 NoSQL(Cassandra等)を検討する。




■Oracleの選択理由

 カネがある場合。
 とくに、客先に金があり、商用(仕事)の場合、「なんでこのDBにしたんだ!」と
 突っ込まれたくなかったらOracle。売れてるからね・・・




■PostgreSQLにする場合

 金がなく、分析が多い場合。
 最近のPostgreSQLは、更新などでもそこそこパフォーマンスがいいらしい。
 なので、分析が多く、とくにウィンドウ関数を使えば簡単に出来る(例えばデシル分析などは、ウィンドウ関数のntile(10)で一発でできる
 特にRedshiftを使う|将来的に使うかも?という場合は、Amazon Redshift は PostgreSQL に基づいているためPostgreSQLを選択ということはありかもね・・・

 ちなみに、Redshiftで使えるウィンドウ関数は、

ウィンドウ関数
http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c_Window_functions.html

にある。




■でもOracleの代わりにMySQLで開発するのは、ナシ

 これやる人も居るけど、上記のようにMySQLには、ウィンドウ関数その他もろもろがない。そこで、selectで、それを回避しようとすると、汚い、保守しづらいSQLになってしまう。なので、Oracleを使うことが分かっているなら、MySQLを開発で使うのは、本当は避けたほうがいい。
でも、めんどっちいという理由だけで(PostgreSQLでなく)MySQLで開発してしまうのよねえ~(ひどい場合はRedShiftで実行することが分かっていながら、ローカルで確かめるのに・・)



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする