QA@IT
«回答へ戻る

JSONの記述を修正

1138
 - 非同期レプリケーションを標準サポート
 - [数日前にリリースされたPostgreSQL 9.2](http://www.atmarkit.co.jp/news/201209/11/postgresql.html)ではネイティブでJSON対応など機能開発が盛ん
 
-といったところでしょうか。JSON対応というのは、カラムに突っ込んだJSONに対してSQLでクエリが投げられて、ゆるいSchemaでアプリを作っていける、あれ、それならMongoDBじゃなくてもPostgreSQLでもイケんじゃない? という意味だと想像していますが、この辺詳しい方、教えて(この段落を書き換えて頂いても)ください。
+といったところでしょうか。
+
+【choplinさんの指摘を受けてJSON対応に関する記述を修正】
+
+PostgreSQLのJSON型ができることは主に、
+
+- 値を書く際のバリデーション
+- 行や配列型の値からのJSON文字列の組み立て
+
+の2つで、クエリには非対応のようです。
+
+http://www.postgresql.org/docs/9.2/static/datatype-json.html にあるように、TEXT型で入れるのと違ってJSON型で入れるメリットはRFC的にvalidなJSONかどうかをチェックしてくれます。http://www.postgresql.org/docs/9.2/static/functions-json.html にあるように、arrayやrowをJSONに変換する関数が利用できるとうことですね。
 
 ちなみに、ここのQA@ITもPostgreSQLを使っていますが、PostgreSQLのエクステンションとして使えるKVSの[hstore](http://www.postgresql.org/docs/9.2/static/hstore.html)をある種のユーザーアクティビティの抽象化に使っていたり、質問の検索で[Trigram](http://www.postgresql.org/docs/9.2/static/pgtrgm.html)を使って文書の近縁度を判定するクエリを投げたりしていて、いろいろとPostgreSQLは高機能だなという印象を受けています。
 

Ruby on Railsの話ということで、Rails界隈のトレンドの話を少し(kennさんの回答の後で気が引けますが)

Ruby on Rails界隈では、MySQLよりもPostgreSQLに人気がシフトしているトレンドがあるようです。例えば、最近話題になったRailsホスティングに関する、このアンケート調査(調査対象や方法は要確認ですが、1200~1300ユーザーに聞いているので一定の信頼性はあるかもしれません)を見ると、

  • 2009年に80%の人がMySQLを使っていて、60%の人が新規開発でもMySQLを選ぶと回答
  • 2009年にPostgreSQLを使っていたのは14%
  • 2012年の調査では、PostgreSQLを使っているのは40%に増加していて、新規開発にPostgreSQLを選ぶとした人は60%

ということです。逆転しつつあるということですね。

もう1つ、Ruby PaaSのEngine Yardが2012年8月14日に、デフォルトのRDBをMySQLからPostgreSQLへ変更すると発表しているのも気になります。Engine YardのCEOに先日直接聞いたのですが、RubyコミュニティのOracleに対する憂慮を反映して、という側面もあるようです。Hudson→Jenkins、OpenOffice→LibreOfficeと、これまでOracleはオープンソースコミュニティとうまく付き合ってきた実績に欠けています。Engine Yardとしては、本当はMySQLとPostgreSQLの2つを同時にサポートするのはコスト増なので1本化するのが戦略上の合理性があるのだけど、ユーザーの声を聞いた結果だということです。

先のブログ、PostgreSQL is Our New Defaultには、PostgreSQLの優れたメリットが書いてあります。少しだけ抄訳すると:

  • Solr、Sphinxなど別にスタンドアローンのエンジンを立てなくても、標準で全文検索をサポート
  • ロックが必要とされる場面が少ない
  • ActiveRecordやPostgreSQL(SQL)では十分にやりたいことができないときには、ユーザー定義のプロシージャ言語が使えて、例えばV8エンジンを使ったPLV8なんかがある
  • 非同期レプリケーションを標準サポート
  • 数日前にリリースされたPostgreSQL 9.2ではネイティブでJSON対応など機能開発が盛ん

といったところでしょうか。

【choplinさんの指摘を受けてJSON対応に関する記述を修正】

PostgreSQLのJSON型ができることは主に、

  • 値を書く際のバリデーション
  • 行や配列型の値からのJSON文字列の組み立て

の2つで、クエリには非対応のようです。

http://www.postgresql.org/docs/9.2/static/datatype-json.html にあるように、TEXT型で入れるのと違ってJSON型で入れるメリットはRFC的にvalidなJSONかどうかをチェックしてくれます。http://www.postgresql.org/docs/9.2/static/functions-json.html にあるように、arrayやrowをJSONに変換する関数が利用できるとうことですね。

ちなみに、ここのQA@ITもPostgreSQLを使っていますが、PostgreSQLのエクステンションとして使えるKVSのhstoreをある種のユーザーアクティビティの抽象化に使っていたり、質問の検索でTrigramを使って文書の近縁度を判定するクエリを投げたりしていて、いろいろとPostgreSQLは高機能だなという印象を受けています。

kennさんの回答にあるように大規模サービスで限界の性能を引き出すならMySQLというのが妥当だとすると、Rails界のトレンドシフトというのは、Railsの適用事例が比較的中小規模のサービスや業務アプリで増えている、ということもあるのかもしれないなと想像していたりします。

Ruby on Railsの話ということで、Rails界隈のトレンドの話を少し(kennさんの回答の後で気が引けますが)

Ruby on Rails界隈では、MySQLよりもPostgreSQLに人気がシフトしているトレンドがあるようです。例えば、最近話題になったRailsホスティングに関する、[このアンケート調査](http://blog.planetargon.com/entries/2012/8/14/rails-hosting-survey-2012-results-are-in)(調査対象や方法は要確認ですが、1200~1300ユーザーに聞いているので一定の信頼性はあるかもしれません)を見ると、

- 2009年に80%の人がMySQLを使っていて、60%の人が新規開発でもMySQLを選ぶと回答
- 2009年にPostgreSQLを使っていたのは14%
- 2012年の調査では、PostgreSQLを使っているのは40%に増加していて、新規開発にPostgreSQLを選ぶとした人は60%

ということです。逆転しつつあるということですね。

もう1つ、Ruby PaaSのEngine Yardが2012年8月14日に、デフォルトのRDBをMySQLから[PostgreSQLへ変更すると発表](http://www.engineyard.com/blog/2012/postgresql-is-our-new-default/)しているのも気になります。Engine YardのCEOに先日直接聞いたのですが、RubyコミュニティのOracleに対する憂慮を反映して、という側面もあるようです。Hudson→Jenkins、OpenOffice→LibreOfficeと、これまでOracleはオープンソースコミュニティとうまく付き合ってきた実績に欠けています。Engine Yardとしては、本当はMySQLとPostgreSQLの2つを同時にサポートするのはコスト増なので1本化するのが戦略上の合理性があるのだけど、ユーザーの声を聞いた結果だということです。

先のブログ、[PostgreSQL is Our New Default](http://www.engineyard.com/blog/2012/postgresql-is-our-new-default/)には、PostgreSQLの優れたメリットが書いてあります。少しだけ抄訳すると:

- Solr、Sphinxなど別にスタンドアローンのエンジンを立てなくても、標準で全文検索をサポート
- ロックが必要とされる場面が少ない
- ActiveRecordやPostgreSQL(SQL)では十分にやりたいことができないときには、ユーザー定義のプロシージャ言語が使えて、例えばV8エンジンを使った[PLV8](http://code.google.com/p/plv8js/wiki/PLV8)なんかがある
- 非同期レプリケーションを標準サポート
- [数日前にリリースされたPostgreSQL 9.2](http://www.atmarkit.co.jp/news/201209/11/postgresql.html)ではネイティブでJSON対応など機能開発が盛ん

といったところでしょうか。

【choplinさんの指摘を受けてJSON対応に関する記述を修正】

PostgreSQLのJSON型ができることは主に、

- 値を書く際のバリデーション
- 行や配列型の値からのJSON文字列の組み立て

の2つで、クエリには非対応のようです。

http://www.postgresql.org/docs/9.2/static/datatype-json.html にあるように、TEXT型で入れるのと違ってJSON型で入れるメリットはRFC的にvalidなJSONかどうかをチェックしてくれます。http://www.postgresql.org/docs/9.2/static/functions-json.html にあるように、arrayやrowをJSONに変換する関数が利用できるとうことですね。

ちなみに、ここのQA@ITもPostgreSQLを使っていますが、PostgreSQLのエクステンションとして使えるKVSの[hstore](http://www.postgresql.org/docs/9.2/static/hstore.html)をある種のユーザーアクティビティの抽象化に使っていたり、質問の検索で[Trigram](http://www.postgresql.org/docs/9.2/static/pgtrgm.html)を使って文書の近縁度を判定するクエリを投げたりしていて、いろいろとPostgreSQLは高機能だなという印象を受けています。

kennさんの回答にあるように大規模サービスで限界の性能を引き出すならMySQLというのが妥当だとすると、Rails界のトレンドシフトというのは、Railsの適用事例が比較的中小規模のサービスや業務アプリで増えている、ということもあるのかもしれないなと想像していたりします。

hstoreはPostgreSQLのエクステンションだというのが分かるよう

1138
 
 といったところでしょうか。JSON対応というのは、カラムに突っ込んだJSONに対してSQLでクエリが投げられて、ゆるいSchemaでアプリを作っていける、あれ、それならMongoDBじゃなくてもPostgreSQLでもイケんじゃない? という意味だと想像していますが、この辺詳しい方、教えて(この段落を書き換えて頂いても)ください。
 
-ちなみに、ここのQA@ITもPostgreSQLを使っていますが、KVSの[hstore](http://www.postgresql.org/docs/9.2/static/hstore.html)をある種のユーザーアクティビティの抽象化に使っていたり、質問の検索で[Trigram](http://www.postgresql.org/docs/9.2/static/pgtrgm.html)を使って文書の近縁度を判定するクエリを投げたりしていて、いろいろと高機能だなという印象を受けています。
+ちなみに、ここのQA@ITもPostgreSQLを使っていますが、PostgreSQLのエクステンションとして使えるKVSの[hstore](http://www.postgresql.org/docs/9.2/static/hstore.html)をある種のユーザーアクティビティの抽象化に使っていたり、質問の検索で[Trigram](http://www.postgresql.org/docs/9.2/static/pgtrgm.html)を使って文書の近縁度を判定するクエリを投げたりしていて、いろいろとPostgreSQLは高機能だなという印象を受けています。
 
 kennさんの回答にあるように大規模サービスで限界の性能を引き出すならMySQLというのが妥当だとすると、Rails界のトレンドシフトというのは、Railsの適用事例が比較的中小規模のサービスや業務アプリで増えている、ということもあるのかもしれないなと想像していたりします。

Ruby on Railsの話ということで、Rails界隈のトレンドの話を少し(kennさんの回答の後で気が引けますが)

Ruby on Rails界隈では、MySQLよりもPostgreSQLに人気がシフトしているトレンドがあるようです。例えば、最近話題になったRailsホスティングに関する、このアンケート調査(調査対象や方法は要確認ですが、1200~1300ユーザーに聞いているので一定の信頼性はあるかもしれません)を見ると、

  • 2009年に80%の人がMySQLを使っていて、60%の人が新規開発でもMySQLを選ぶと回答
  • 2009年にPostgreSQLを使っていたのは14%
  • 2012年の調査では、PostgreSQLを使っているのは40%に増加していて、新規開発にPostgreSQLを選ぶとした人は60%

ということです。逆転しつつあるということですね。

もう1つ、Ruby PaaSのEngine Yardが2012年8月14日に、デフォルトのRDBをMySQLからPostgreSQLへ変更すると発表しているのも気になります。Engine YardのCEOに先日直接聞いたのですが、RubyコミュニティのOracleに対する憂慮を反映して、という側面もあるようです。Hudson→Jenkins、OpenOffice→LibreOfficeと、これまでOracleはオープンソースコミュニティとうまく付き合ってきた実績に欠けています。Engine Yardとしては、本当はMySQLとPostgreSQLの2つを同時にサポートするのはコスト増なので1本化するのが戦略上の合理性があるのだけど、ユーザーの声を聞いた結果だということです。

先のブログ、PostgreSQL is Our New Defaultには、PostgreSQLの優れたメリットが書いてあります。少しだけ抄訳すると:

  • Solr、Sphinxなど別にスタンドアローンのエンジンを立てなくても、標準で全文検索をサポート
  • ロックが必要とされる場面が少ない
  • ActiveRecordやPostgreSQL(SQL)では十分にやりたいことができないときには、ユーザー定義のプロシージャ言語が使えて、例えばV8エンジンを使ったPLV8なんかがある
  • 非同期レプリケーションを標準サポート
  • 数日前にリリースされたPostgreSQL 9.2ではネイティブでJSON対応など機能開発が盛ん

といったところでしょうか。JSON対応というのは、カラムに突っ込んだJSONに対してSQLでクエリが投げられて、ゆるいSchemaでアプリを作っていける、あれ、それならMongoDBじゃなくてもPostgreSQLでもイケんじゃない? という意味だと想像していますが、この辺詳しい方、教えて(この段落を書き換えて頂いても)ください。

ちなみに、ここのQA@ITもPostgreSQLを使っていますが、PostgreSQLのエクステンションとして使えるKVSのhstoreをある種のユーザーアクティビティの抽象化に使っていたり、質問の検索でTrigramを使って文書の近縁度を判定するクエリを投げたりしていて、いろいろとPostgreSQLは高機能だなという印象を受けています。

kennさんの回答にあるように大規模サービスで限界の性能を引き出すならMySQLというのが妥当だとすると、Rails界のトレンドシフトというのは、Railsの適用事例が比較的中小規模のサービスや業務アプリで増えている、ということもあるのかもしれないなと想像していたりします。

Ruby on Railsの話ということで、Rails界隈のトレンドの話を少し(kennさんの回答の後で気が引けますが)

Ruby on Rails界隈では、MySQLよりもPostgreSQLに人気がシフトしているトレンドがあるようです。例えば、最近話題になったRailsホスティングに関する、[このアンケート調査](http://blog.planetargon.com/entries/2012/8/14/rails-hosting-survey-2012-results-are-in)(調査対象や方法は要確認ですが、1200~1300ユーザーに聞いているので一定の信頼性はあるかもしれません)を見ると、

- 2009年に80%の人がMySQLを使っていて、60%の人が新規開発でもMySQLを選ぶと回答
- 2009年にPostgreSQLを使っていたのは14%
- 2012年の調査では、PostgreSQLを使っているのは40%に増加していて、新規開発にPostgreSQLを選ぶとした人は60%

ということです。逆転しつつあるということですね。

もう1つ、Ruby PaaSのEngine Yardが2012年8月14日に、デフォルトのRDBをMySQLから[PostgreSQLへ変更すると発表](http://www.engineyard.com/blog/2012/postgresql-is-our-new-default/)しているのも気になります。Engine YardのCEOに先日直接聞いたのですが、RubyコミュニティのOracleに対する憂慮を反映して、という側面もあるようです。Hudson→Jenkins、OpenOffice→LibreOfficeと、これまでOracleはオープンソースコミュニティとうまく付き合ってきた実績に欠けています。Engine Yardとしては、本当はMySQLとPostgreSQLの2つを同時にサポートするのはコスト増なので1本化するのが戦略上の合理性があるのだけど、ユーザーの声を聞いた結果だということです。

先のブログ、[PostgreSQL is Our New Default](http://www.engineyard.com/blog/2012/postgresql-is-our-new-default/)には、PostgreSQLの優れたメリットが書いてあります。少しだけ抄訳すると:

- Solr、Sphinxなど別にスタンドアローンのエンジンを立てなくても、標準で全文検索をサポート
- ロックが必要とされる場面が少ない
- ActiveRecordやPostgreSQL(SQL)では十分にやりたいことができないときには、ユーザー定義のプロシージャ言語が使えて、例えばV8エンジンを使った[PLV8](http://code.google.com/p/plv8js/wiki/PLV8)なんかがある
- 非同期レプリケーションを標準サポート
- [数日前にリリースされたPostgreSQL 9.2](http://www.atmarkit.co.jp/news/201209/11/postgresql.html)ではネイティブでJSON対応など機能開発が盛ん

といったところでしょうか。JSON対応というのは、カラムに突っ込んだJSONに対してSQLでクエリが投げられて、ゆるいSchemaでアプリを作っていける、あれ、それならMongoDBじゃなくてもPostgreSQLでもイケんじゃない? という意味だと想像していますが、この辺詳しい方、教えて(この段落を書き換えて頂いても)ください。

ちなみに、ここのQA@ITもPostgreSQLを使っていますが、PostgreSQLのエクステンションとして使えるKVSの[hstore](http://www.postgresql.org/docs/9.2/static/hstore.html)をある種のユーザーアクティビティの抽象化に使っていたり、質問の検索で[Trigram](http://www.postgresql.org/docs/9.2/static/pgtrgm.html)を使って文書の近縁度を判定するクエリを投げたりしていて、いろいろとPostgreSQLは高機能だなという印象を受けています。

kennさんの回答にあるように大規模サービスで限界の性能を引き出すならMySQLというのが妥当だとすると、Rails界のトレンドシフトというのは、Railsの適用事例が比較的中小規模のサービスや業務アプリで増えている、ということもあるのかもしれないなと想像していたりします。

typo

1138
 
 といったところでしょうか。JSON対応というのは、カラムに突っ込んだJSONに対してSQLでクエリが投げられて、ゆるいSchemaでアプリを作っていける、あれ、それならMongoDBじゃなくてもPostgreSQLでもイケんじゃない? という意味だと想像していますが、この辺詳しい方、教えて(この段落を書き換えて頂いても)ください。
 
-ちなみに、ここのQA@ITもPostgreSQLを使っていますが、KVSの[hstore](http://www.postgresql.org/docs/9.2/static/hstore.html)をある種のユーザーアクティビティの抽象化に使っていたり、質問の検索で[Trigram](http://www.postgresql.org/docs/9.2/static/pgtrgm.html)を使って文書の近縁度を判定するクエリを投げたりいたりしていて、いろいろと高機能だなという印象を受けています。
+ちなみに、ここのQA@ITもPostgreSQLを使っていますが、KVSの[hstore](http://www.postgresql.org/docs/9.2/static/hstore.html)をある種のユーザーアクティビティの抽象化に使っていたり、質問の検索で[Trigram](http://www.postgresql.org/docs/9.2/static/pgtrgm.html)を使って文書の近縁度を判定するクエリを投げたりしていて、いろいろと高機能だなという印象を受けています。
 
 kennさんの回答にあるように大規模サービスで限界の性能を引き出すならMySQLというのが妥当だとすると、Rails界のトレンドシフトというのは、Railsの適用事例が比較的中小規模のサービスや業務アプリで増えている、ということもあるのかもしれないなと想像していたりします。

Ruby on Railsの話ということで、Rails界隈のトレンドの話を少し(kennさんの回答の後で気が引けますが)

Ruby on Rails界隈では、MySQLよりもPostgreSQLに人気がシフトしているトレンドがあるようです。例えば、最近話題になったRailsホスティングに関する、このアンケート調査(調査対象や方法は要確認ですが、1200~1300ユーザーに聞いているので一定の信頼性はあるかもしれません)を見ると、

  • 2009年に80%の人がMySQLを使っていて、60%の人が新規開発でもMySQLを選ぶと回答
  • 2009年にPostgreSQLを使っていたのは14%
  • 2012年の調査では、PostgreSQLを使っているのは40%に増加していて、新規開発にPostgreSQLを選ぶとした人は60%

ということです。逆転しつつあるということですね。

もう1つ、Ruby PaaSのEngine Yardが2012年8月14日に、デフォルトのRDBをMySQLからPostgreSQLへ変更すると発表しているのも気になります。Engine YardのCEOに先日直接聞いたのですが、RubyコミュニティのOracleに対する憂慮を反映して、という側面もあるようです。Hudson→Jenkins、OpenOffice→LibreOfficeと、これまでOracleはオープンソースコミュニティとうまく付き合ってきた実績に欠けています。Engine Yardとしては、本当はMySQLとPostgreSQLの2つを同時にサポートするのはコスト増なので1本化するのが戦略上の合理性があるのだけど、ユーザーの声を聞いた結果だということです。

先のブログ、PostgreSQL is Our New Defaultには、PostgreSQLの優れたメリットが書いてあります。少しだけ抄訳すると:

  • Solr、Sphinxなど別にスタンドアローンのエンジンを立てなくても、標準で全文検索をサポート
  • ロックが必要とされる場面が少ない
  • ActiveRecordやPostgreSQL(SQL)では十分にやりたいことができないときには、ユーザー定義のプロシージャ言語が使えて、例えばV8エンジンを使ったPLV8なんかがある
  • 非同期レプリケーションを標準サポート
  • 数日前にリリースされたPostgreSQL 9.2ではネイティブでJSON対応など機能開発が盛ん

といったところでしょうか。JSON対応というのは、カラムに突っ込んだJSONに対してSQLでクエリが投げられて、ゆるいSchemaでアプリを作っていける、あれ、それならMongoDBじゃなくてもPostgreSQLでもイケんじゃない? という意味だと想像していますが、この辺詳しい方、教えて(この段落を書き換えて頂いても)ください。

ちなみに、ここのQA@ITもPostgreSQLを使っていますが、KVSのhstoreをある種のユーザーアクティビティの抽象化に使っていたり、質問の検索でTrigramを使って文書の近縁度を判定するクエリを投げたりしていて、いろいろと高機能だなという印象を受けています。

kennさんの回答にあるように大規模サービスで限界の性能を引き出すならMySQLというのが妥当だとすると、Rails界のトレンドシフトというのは、Railsの適用事例が比較的中小規模のサービスや業務アプリで増えている、ということもあるのかもしれないなと想像していたりします。

Ruby on Railsの話ということで、Rails界隈のトレンドの話を少し(kennさんの回答の後で気が引けますが)

Ruby on Rails界隈では、MySQLよりもPostgreSQLに人気がシフトしているトレンドがあるようです。例えば、最近話題になったRailsホスティングに関する、[このアンケート調査](http://blog.planetargon.com/entries/2012/8/14/rails-hosting-survey-2012-results-are-in)(調査対象や方法は要確認ですが、1200~1300ユーザーに聞いているので一定の信頼性はあるかもしれません)を見ると、

- 2009年に80%の人がMySQLを使っていて、60%の人が新規開発でもMySQLを選ぶと回答
- 2009年にPostgreSQLを使っていたのは14%
- 2012年の調査では、PostgreSQLを使っているのは40%に増加していて、新規開発にPostgreSQLを選ぶとした人は60%

ということです。逆転しつつあるということですね。

もう1つ、Ruby PaaSのEngine Yardが2012年8月14日に、デフォルトのRDBをMySQLから[PostgreSQLへ変更すると発表](http://www.engineyard.com/blog/2012/postgresql-is-our-new-default/)しているのも気になります。Engine YardのCEOに先日直接聞いたのですが、RubyコミュニティのOracleに対する憂慮を反映して、という側面もあるようです。Hudson→Jenkins、OpenOffice→LibreOfficeと、これまでOracleはオープンソースコミュニティとうまく付き合ってきた実績に欠けています。Engine Yardとしては、本当はMySQLとPostgreSQLの2つを同時にサポートするのはコスト増なので1本化するのが戦略上の合理性があるのだけど、ユーザーの声を聞いた結果だということです。

先のブログ、[PostgreSQL is Our New Default](http://www.engineyard.com/blog/2012/postgresql-is-our-new-default/)には、PostgreSQLの優れたメリットが書いてあります。少しだけ抄訳すると:

- Solr、Sphinxなど別にスタンドアローンのエンジンを立てなくても、標準で全文検索をサポート
- ロックが必要とされる場面が少ない
- ActiveRecordやPostgreSQL(SQL)では十分にやりたいことができないときには、ユーザー定義のプロシージャ言語が使えて、例えばV8エンジンを使った[PLV8](http://code.google.com/p/plv8js/wiki/PLV8)なんかがある
- 非同期レプリケーションを標準サポート
- [数日前にリリースされたPostgreSQL 9.2](http://www.atmarkit.co.jp/news/201209/11/postgresql.html)ではネイティブでJSON対応など機能開発が盛ん

といったところでしょうか。JSON対応というのは、カラムに突っ込んだJSONに対してSQLでクエリが投げられて、ゆるいSchemaでアプリを作っていける、あれ、それならMongoDBじゃなくてもPostgreSQLでもイケんじゃない? という意味だと想像していますが、この辺詳しい方、教えて(この段落を書き換えて頂いても)ください。

ちなみに、ここのQA@ITもPostgreSQLを使っていますが、KVSの[hstore](http://www.postgresql.org/docs/9.2/static/hstore.html)をある種のユーザーアクティビティの抽象化に使っていたり、質問の検索で[Trigram](http://www.postgresql.org/docs/9.2/static/pgtrgm.html)を使って文書の近縁度を判定するクエリを投げたりしていて、いろいろと高機能だなという印象を受けています。

kennさんの回答にあるように大規模サービスで限界の性能を引き出すならMySQLというのが妥当だとすると、Rails界のトレンドシフトというのは、Railsの適用事例が比較的中小規模のサービスや業務アプリで増えている、ということもあるのかもしれないなと想像していたりします。

回答を投稿

Ruby on Railsの話ということで、Rails界隈のトレンドの話を少し(kennさんの回答の後で気が引けますが)

Ruby on Rails界隈では、MySQLよりもPostgreSQLに人気がシフトしているトレンドがあるようです。例えば、最近話題になったRailsホスティングに関する、このアンケート調査(調査対象や方法は要確認ですが、1200~1300ユーザーに聞いているので一定の信頼性はあるかもしれません)を見ると、

  • 2009年に80%の人がMySQLを使っていて、60%の人が新規開発でもMySQLを選ぶと回答
  • 2009年にPostgreSQLを使っていたのは14%
  • 2012年の調査では、PostgreSQLを使っているのは40%に増加していて、新規開発にPostgreSQLを選ぶとした人は60%

ということです。逆転しつつあるということですね。

もう1つ、Ruby PaaSのEngine Yardが2012年8月14日に、デフォルトのRDBをMySQLからPostgreSQLへ変更すると発表しているのも気になります。Engine YardのCEOに先日直接聞いたのですが、RubyコミュニティのOracleに対する憂慮を反映して、という側面もあるようです。Hudson→Jenkins、OpenOffice→LibreOfficeと、これまでOracleはオープンソースコミュニティとうまく付き合ってきた実績に欠けています。Engine Yardとしては、本当はMySQLとPostgreSQLの2つを同時にサポートするのはコスト増なので1本化するのが戦略上の合理性があるのだけど、ユーザーの声を聞いた結果だということです。

先のブログ、PostgreSQL is Our New Defaultには、PostgreSQLの優れたメリットが書いてあります。少しだけ抄訳すると:

  • Solr、Sphinxなど別にスタンドアローンのエンジンを立てなくても、標準で全文検索をサポート
  • ロックが必要とされる場面が少ない
  • ActiveRecordやPostgreSQL(SQL)では十分にやりたいことができないときには、ユーザー定義のプロシージャ言語が使えて、例えばV8エンジンを使ったPLV8なんかがある
  • 非同期レプリケーションを標準サポート
  • 数日前にリリースされたPostgreSQL 9.2ではネイティブでJSON対応など機能開発が盛ん

といったところでしょうか。JSON対応というのは、カラムに突っ込んだJSONに対してSQLでクエリが投げられて、ゆるいSchemaでアプリを作っていける、あれ、それならMongoDBじゃなくてもPostgreSQLでもイケんじゃない? という意味だと想像していますが、この辺詳しい方、教えて(この段落を書き換えて頂いても)ください。

ちなみに、ここのQA@ITもPostgreSQLを使っていますが、KVSのhstoreをある種のユーザーアクティビティの抽象化に使っていたり、質問の検索でTrigramを使って文書の近縁度を判定するクエリを投げたりいたりしていて、いろいろと高機能だなという印象を受けています。

kennさんの回答にあるように大規模サービスで限界の性能を引き出すならMySQLというのが妥当だとすると、Rails界のトレンドシフトというのは、Railsの適用事例が比較的中小規模のサービスや業務アプリで増えている、ということもあるのかもしれないなと想像していたりします。

Ruby on Railsの話ということで、Rails界隈のトレンドの話を少し(kennさんの回答の後で気が引けますが)

Ruby on Rails界隈では、MySQLよりもPostgreSQLに人気がシフトしているトレンドがあるようです。例えば、最近話題になったRailsホスティングに関する、[このアンケート調査](http://blog.planetargon.com/entries/2012/8/14/rails-hosting-survey-2012-results-are-in)(調査対象や方法は要確認ですが、1200~1300ユーザーに聞いているので一定の信頼性はあるかもしれません)を見ると、

- 2009年に80%の人がMySQLを使っていて、60%の人が新規開発でもMySQLを選ぶと回答
- 2009年にPostgreSQLを使っていたのは14%
- 2012年の調査では、PostgreSQLを使っているのは40%に増加していて、新規開発にPostgreSQLを選ぶとした人は60%

ということです。逆転しつつあるということですね。

もう1つ、Ruby PaaSのEngine Yardが2012年8月14日に、デフォルトのRDBをMySQLから[PostgreSQLへ変更すると発表](http://www.engineyard.com/blog/2012/postgresql-is-our-new-default/)しているのも気になります。Engine YardのCEOに先日直接聞いたのですが、RubyコミュニティのOracleに対する憂慮を反映して、という側面もあるようです。Hudson→Jenkins、OpenOffice→LibreOfficeと、これまでOracleはオープンソースコミュニティとうまく付き合ってきた実績に欠けています。Engine Yardとしては、本当はMySQLとPostgreSQLの2つを同時にサポートするのはコスト増なので1本化するのが戦略上の合理性があるのだけど、ユーザーの声を聞いた結果だということです。

先のブログ、[PostgreSQL is Our New Default](http://www.engineyard.com/blog/2012/postgresql-is-our-new-default/)には、PostgreSQLの優れたメリットが書いてあります。少しだけ抄訳すると:

- Solr、Sphinxなど別にスタンドアローンのエンジンを立てなくても、標準で全文検索をサポート
- ロックが必要とされる場面が少ない
- ActiveRecordやPostgreSQL(SQL)では十分にやりたいことができないときには、ユーザー定義のプロシージャ言語が使えて、例えばV8エンジンを使った[PLV8](http://code.google.com/p/plv8js/wiki/PLV8)なんかがある
- 非同期レプリケーションを標準サポート
- [数日前にリリースされたPostgreSQL 9.2](http://www.atmarkit.co.jp/news/201209/11/postgresql.html)ではネイティブでJSON対応など機能開発が盛ん

といったところでしょうか。JSON対応というのは、カラムに突っ込んだJSONに対してSQLでクエリが投げられて、ゆるいSchemaでアプリを作っていける、あれ、それならMongoDBじゃなくてもPostgreSQLでもイケんじゃない? という意味だと想像していますが、この辺詳しい方、教えて(この段落を書き換えて頂いても)ください。

ちなみに、ここのQA@ITもPostgreSQLを使っていますが、KVSの[hstore](http://www.postgresql.org/docs/9.2/static/hstore.html)をある種のユーザーアクティビティの抽象化に使っていたり、質問の検索で[Trigram](http://www.postgresql.org/docs/9.2/static/pgtrgm.html)を使って文書の近縁度を判定するクエリを投げたりいたりしていて、いろいろと高機能だなという印象を受けています。

kennさんの回答にあるように大規模サービスで限界の性能を引き出すならMySQLというのが妥当だとすると、Rails界のトレンドシフトというのは、Railsの適用事例が比較的中小規模のサービスや業務アプリで増えている、ということもあるのかもしれないなと想像していたりします。