パスワードを忘れた? アカウント作成
16650 story

反撃ののろしを上げるPostgreSQL 72

ストーリー by mhatta
私自身はMySQLしか使ったことないなあ 部門より

Anonymous Coward曰く、

やや旧聞に属するが@ITの記事によると、オープンソースのデータベースサーバとしてずっとMySQLの後塵を拝しつづけてきたPostgreSQLが、最近になって急速に勢力を伸ばしていると言う。2006年のIOUG調査ではPostgreSQLを使っている割合はわずかに9%だったが、2007年10月に発表された最新の調査結果では(依然74%はMySQLユーザであるものの)PostgreSQLの利用は20%にまで拡大したそうだ。
これは、高速化などPostgreSQLそのものの改良が急ピッチで進められていることに加え、SonyやAppleがPostgreSQLベースのソリューションを使用していることが知られるようになり(日本だとR25.jpも)、知名度が上がったのが一因だと言う。サードパーティアプリケーションや教育用書籍を充実させていくのが今後の課題と考えられるとのこと。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by gonta (11642) on 2007年11月12日 18時19分 (#1248848) 日記
    よく「MySQLとPostgreSQLの違いは?」と聞かれるので、オープンソースのカンファレンスで注意して聞いていた。次の点が伺えた。

    ・PostgreSQLはハイパフォーマンス時にCPUの性能にスケール。pgpool等高負荷対応ツールも充実。MySQLは途中で頭打ち。
    ・MySQLはエンコーディングが・・・らしい。こんなの [mosql.jp]作る人がいるくらいだし。

    自分はPostgreSQL派なので、MySQLはランタイムで要求されたとき利用。作業する時、PostgreSQLはroot権限いやがるに対し、MySQLは普通にできてしまう。以上「自己流の」理解でした。
    --
    -- gonta --
    "May Macintosh be with you"
    • by Anonymous Coward on 2007年11月12日 22時34分 (#1249030)
      >PostgreSQLはハイパフォーマンス時にCPUの性能にスケール。pgpool等高負荷対応ツールも充実。MySQLは途中で頭打ち。
      FreeBSD 7.0 (今リリース準備中ですね)での結果がありますのでどうぞ。(注: pdfです)
      Introducing FreeBSD 7.0 [freebsd.org]
      親コメント
    • 5年くらい前はPostgreSQLのほうが人気で MySQLはあまり知られてなかったような。
      PostgreSQLはトランザクション処理できたけど、MySQLはだめとかあって。
      でも機能なかった分 MySQLの方が早かったので 千万件くらいの処理のために MySQLにしました。
      PostgreSQLなら一発処理できるのにといいながらも、その後戻らなくてそのまんま居ついたです。
      親コメント
  • ライセンス (スコア:4, 参考になる)

    by Anonymous Coward on 2007年11月12日 18時33分 (#1248859)
    サーバ構築やWebサイト構築を業務にしているのですが、
    ライセンスを理由に、MySQL(GPL or 商用ライセンス)ではなく
    専らPostgreSQL(BSDライセンス)を使用しています。

    単純にデータベースを利用しているだけであり、ソース改変などを
    している訳ではないので問題無いとも思ってはいるのですが、
    後々で突っ込まれるのも面倒なので。。
    • Re:ライセンス (スコア:2, 参考になる)

      by Driver (32138) on 2007年11月12日 20時39分 (#1248950) 日記
      私もほぼ同様の理由でPostgreSQLを使用しています。
      あと、他にも理由があるとすると(2年半前のMySQL5.0との比較ですが)
      ・大量データのインサート性能を測ったとき、同一環境の条件でMySQLがとてつもなく遅くなった(数千万件単位の比較)
      ・日本語を使おうとしたとき、チョット苦労したので、他の人に作業を振るのが不安になった
      ストレージエンジン [mysql.com]の違いを理解するのが面倒になった
      あたりです。

      親コメント
    • 対MySQLの比だけでなく、対Oracleの比についても関係あるかも知れませんよ.

      富士通製図書館用パッケージで使われている DB がオラクルから PostgreSQL に変更されています.
      富士通の方によるとオラクルのライセンス料が高価な事が一因だそうです.
      京都大学の図書館システム [kyoto-u.ac.jp]では既にこの新バージョンが稼働しています.
      親コメント
  • by kanie (911) on 2007年11月13日 0時04分 (#1249089)
    Web 2.0なサービスで、PostgreSQL使っているところは無いでしょうね。
    そもそもPostgreSQLの知名度が低いというのもありますが(日本はSRAが頑張ったので例外)、
    かりにPostgreSQLを知っていても、彼ら/我々はMySQLを選ぶでしょう。
    なぜならMySQLには強力なレプリケーションがあるからです。
    レプリケーションによって参照の負荷を分散しスケールアウトすることで、爆発的なアクセスの
    増加に対処することができ、また可用性もあがります(参照slaveの切り替え)。
    もちろんそれだけでは無理で、そのうちテーブルのパーティショニングが必要になってくるわけ
    ですが、レプリケーションがないと話になりません。
  • 運用面 (スコア:2, 参考になる)

    by tomop (5875) on 2007年11月13日 8時15分 (#1249211) ホームページ
     上でも挙げられていますが、VACUUMの扱いづらさや、
    トランザクションログのインクリメンタルバックアップ
    が不可能、とかでPostgreSQLを避けていました。

    # Postgres95の頃にインストール失敗して苦手意識を
    # 持ったのもあるかもしれない(ぉぃ)。
  • データ容量が小さければ、SQL-Server、Oracle、DB2なんかもタダ使えますね。
    中小企業なんかこれで十分じゃなかろうか。
  • 他にもviewに対するupdate ruleが設定できるとか、
    PostgreSQLを選ぶ理由はいろいろ思いつくな。

    商用で使ってないからパフォーマンスは気にしてない
    のも後押ししている気はする。
  • by Anonymous Coward on 2007年11月12日 17時38分 (#1248826)
    ラッパーコマンドで、コマンドラインから直接ユーザやDBを作成できるのはMySQLよりも便利だと思う。

    あと、権限もMySQLより理解しやすい気が。。。

    皆さんどうでしょうか?
    • by youichi (329) on 2007年11月12日 18時06分 (#1248842)
       ほとんどPostgreSQLばかり使っていて、MySQLはアプリケーションが使っているから仕方なく使っている程度です。
       PostgreSQLはオンラインバックアップがコマンド一発でできるのに、MySQLはスーパーユーザでややこしいことをしないとできなかったり(他のやり方が見つからなかった)と、面倒でした。

       PostgreSQLは日本での利用者が多いと聞いたことがあるので、日本での利用者数だとだいぶ比率が違うのではないでしょうか。
      親コメント
    • MySqlとPostgreSqlは同じように感じたが、PHPMyAdminの存在が大きくて
      MySqlをメインで使ってました。
  • by Anonymous Coward on 2007年11月12日 18時08分 (#1248843)
    SQL データベース詳しくないんだけど元々 MySQL ってなんで人気があるのか良く分からない。
    • オープンソース系で性能追求: PostgreSQL
    • 性能はともかく、お手軽データベース: SQLite
    • 中途半端? 良バランス?: MySQL

    フリーの DB が大規模に使われたりするようになってくれば 必然的に PostgreSQL しかないんじゃないの?

    # あ、FireBird があったか…
    • by tyuu (9154) on 2007年11月12日 19時32分 (#1248904) ホームページ 日記
      > SQL データベース詳しくないんだけど元々 MySQL ってなんで人気があるのか良く分からない。

      フリーで 24x7 な DB が当時(多分 5 年ぐらい前だと思います)なかったんです。

      古い PostgreSQL では VACUUM ANALYZE している時は、
      問合せ等に応答しないというのがネックでした。
      VACUUM が必須だというのに。
      # 更新/削除したレコードは削除フラグが付くだけで VACUUM まで削除されない

      最近は VACUUM 中も応答するとの事なので、
      このような不利な点はないでしょうが、
      当時は、運用の難しさから敬遠した開発者は多いと思います。

      個人的には
       LAST_INSERT_ID() が無い所が嫌いです。
       バックアップでトラぶった事がないのが好きです。

      日本では「シーラカンス本」が優秀で、
      MySQL 向けの本が少なかったので PostgreSQL ユーザが多いように思います。

      # PostgreSQL8.0 リリースのときも、似たような事を言っていますな。
      # http://srad.jp/developers/comments.pl?sid=235314&cid=681283 [srad.jp]
      親コメント
      • LAST_INSERT_ID() が無い所が嫌いです。
        cutrval() [postgresql.jp]じゃだめですか?
        親コメント
        • by tyuu (9154) on 2007年11月12日 22時44分 (#1249036) ホームページ 日記
          すみません。正確には nextval() が嫌いなんです。
          # 貧乏性なもので。

          # PostgreSQL
          INSERT INTO pgsql_memo VALUES(nextval('db_seq'), '!!本当は日付をいれる!!');
          INSERT INTO pgsql_picture VALUES(currval('db_seq'), '/home/tyuu/20050120_01.jpg');

          nextval して currval すると思いますが、
          nextval を実行してから INSERT を評価する為、
          SQL が失敗する可能性があります。

          この場合 SEQUENCE である db_seq は ROLLBACK できないので 1 消費してしまいます。

          # MySQL
          INSERT INTO mysql_memo('day') VALUES('!!本当は日付をいれる!!');
          INSERT INTO mysql_picture VALUES(LAST_INSERT_ID(), '/home/tyuu/20050120_01.jpg');

          MySQL は SQL の評価と db_seq の更新が同時なので、
          無駄に +1 される事がなく、好きです。

          優劣ではなくて、好き嫌いの話ですね。
          ただ、最近 PostgreSQL を触っていないので、
          もしかしたら nextval() 不要になってたりしますでしょうか?
          親コメント
      • by Anonymous Coward on 2007年11月13日 0時10分 (#1249092)
        8.2からは、returning で挿入後の好きな項目を取得できます。

        例:
        table: hogehoge
            id serial
            name text

        insert into hogehoge (name) values ('baka') returning id;

        みたいにすると、idが取得できます。
        親コメント
        • by Anonymous Coward on 2007年11月13日 0時52分 (#1249116)
          これ書いた人ですけど、nextval(とtransaction関係ないsequence)が嫌いって話でしたか
          ってことはこれは関係ないですね

          transaction関係ないってのは、複数DBで同じsequenceを使いたいときか、
          二相コミットとか難しいことしなくてもいいので楽ってのはありますね
          まー、欠番が出るのがもったいない(気持ち悪い)ってのもなんとなくわかりますが。

          もし、欠番が嫌だったら自分でtriggerで実装するという手もありですね。
          親コメント
    • by Anonymous Coward on 2007年11月12日 21時40分 (#1248997)
      サーバー側文字コードにShift-JISが使えない。
      EUCを使おうが、UTF-8を使おうが、クライアントライブラリかアプリ側で文字コード変換が必要。
      文字コード変換に無駄なCPU処理時間を使いたくない。

      私がポスグレあまり使いたくないのはこれだけです。
      親コメント
      • by Anonymous Coward on 2007年11月13日 11時04分 (#1249333)
        > サーバー側文字コードにShift-JISが使えない。
        これは事実ですが、

        > EUCを使おうが、UTF-8を使おうが、クライアントライブラリかアプリ側で文字コード変換が必要。
        これは事実ではありません。PostgreSQL内で変換してくれます。

        > 文字コード変換に無駄なCPU処理時間を使いたくない。
        文字コード変換しなくても、Shift-JISを使うだけで無駄なCPU処理時間使うことになりますけどね。
        親コメント
    • by Anonymous Coward on 2007年11月13日 0時06分 (#1249090)
      自分の印象ではblogが立ち上がりの時期にMySQLだけが対応だったのが
      大きかった気がします。
      これで一気に差が開いた気がします。
      親コメント
      • blogぐらいの機能ならSQLiteのほうがサーバ負荷も少なくていいのですが、さくらとかの月千円以下の鯖屋で使えないと普及しないから、作る側もMySQLを選ぶんだよね。
        そして更にMySQLが使えるサーバが増える、と。

        tDiaryのお陰でRubyが鯖屋に広がったように、DBMSにもキラーアプリが必要なのかも。
        親コメント
    • DBを扱う(Web)アプリケーションの多くがMySQLをデフォルトにしており
      それどころかPostgreSQLはサポートされていない事もままあります

      アプリケーション開発者が何故MySQLを好むのかは分りません。
      • Re:それぞれの位置づけは? (スコア:3, おもしろおかしい)

        by Anonymous Coward on 2007年11月12日 19時28分 (#1248898)
        >アプリケーション開発者が何故MySQLを好むのかは分りません。

        ・読み方がわからない
        ・名前が長い
        親コメント
        • by kicchy (4711) on 2007年11月12日 20時53分 (#1248965)
          >・読み方がわからない
          >・名前が長い

          日本式略称にすると立場逆転であります。
          正式名称はよく分かりませんが

          ポスグレ

          こう読んでいます。
          マイエスキューエルは、どう略していいか分かりません><
          親コメント
          • by tyobi (28936) on 2007年11月13日 13時12分 (#1249468)
            > マイエスキューエルは、どう略していいか分かりません><

            勝手な妄想ですが、「みくる」なんでどうでしょうか。他意はないです。

            うちの近所では日本語の言語サポートが楽であることとバージョン移行のしやすさから、PostgreSQL を使用し続けています。
            みくるはcacti等で必要なときだけ入れましょうな扱いになっています。
            親コメント
        • pgsql(略称)
          ピージーエスキューエル
          Mysql(略称無し)
          マイエスキューエル

          ほんとだ。日本語で2文字も長いですね。
          • なに適当なこと言ってるんですか!

            PostgreSQL
            ポストグレスキューエル
            MySQL
            マイエスキューエル

            と、日本語正式名称でも2文字も長いんですよ!!
      • なんだか LAMP LAMP だと一時期もてはやされていたからでは。
        ウェブアプリを作る側にも、そういう意識があったんだと思う。

        # 「ダブルライセンス」というのがしっくりこないので うちはもっぱら Postgres。ウェブのバックエンドとして使っているだけなので、スピードなんて気にしません。
        --
        ん? 俺、今何か言った?
        親コメント
      • 今は昔、MySQL爆速伝説ありけり
        (以下、続………かない)
        親コメント
      • by Anonymous Coward on 2007年11月12日 22時08分 (#1249017)
        > アプリケーション開発者が何故MySQLを好むのかは分りません。

        日本にいると知名度の差は実感できませんけど、好む好まない以前の問題として PostgreSQL は存在すら知られていないというぐらい知名度が低い(低かった?)のが原因じゃないかと。
        日本以外のエンジニアと話をしていると MySQL を知らない人はまだ会ったことないですが、少し前だと PostgreSQL は名前すら聞いたことがないって人も珍しくはなかったです。
        親コメント
        • by Anonymous Coward on 2007年11月13日 1時03分 (#1249122)
          >日本にいると知名度の差は実感できませんけど、好む好まない以前の問題として PostgreSQL は存在すら知られていないというぐらい知名度が低い(低かった?)のが原因じゃないかと。
          そんな馬鹿な?

          自分の周りの環境の話だけで申し訳ないが、MySQLと比べて7.xまでのPostgresは単一CPUでの処理速度でいつも後塵を拝していたのが原因じゃないのですか?
          少なくともサブクエリできれいに書くのをあきらめれば(あきらめないとMySQLじゃムリだったw)MySQLのシングルCPUでの性能とPostgresは天と地とまで言わなくてもずいぶんと差が合った。(postgres8.xで全く話しは変わってしまう)

          親コメント
          • by Anonymous Coward on 2007年11月13日 2時34分 (#1249156)
            まっとうな意見だね。

            こういうプロダクトの比較話だと、片方しか詳しく無いのに
            自分が選んだほうを推し、他をよく知らないのにディスる輩の意見
            (信者と言われる奴の大半はこれ)が集まってすぐ宗教論争になるのだが(笑)

            かつてのPostgreSQLはMySQLと比べて圧倒的に遅かった。
            7から8にかけて、PostgreSQLは多くの性能に関する改善を行って
            やっと性能でMySQLに追いつけるようになったという感じでしょう。

            ・オプティマイザ
            ・WALとか
            ・バキューム周り
            ・ソート、スキャンの仕組み
            ・バッファ管理
            ・マルチスレッド処理

            今のポスグレの性能は、このあたりの改善があってこそ。

            逆に、初期の頃のポスグレは性能的な観点では、
            MySQLと比べて設計的にダメダメだったと言える。

            にもかかわらず何故、当時から日本人の多くはポスグレを使ったか?
            ひとえに、I井氏のメディア等への激しい露出のお陰ではないかと(笑。
            親コメント
  • by Anonymous Coward on 2007年11月12日 18時36分 (#1248861)
    どのあたりで後塵を拝していたのか解説求む……
    # 解脱ではない
typodupeerror

弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家

読み込み中...