ここだったか
◆みずほ銀行次期システム開発を見守るスレ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で実行することが分かっていながら、ローカルで確かめるのに・・)
◆みずほ銀行次期システム開発を見守るスレ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で実行することが分かっていながら、ローカルで確かめるのに・・)