MySQL vs PostgreSQL Part2
■ このスレッドは過去ログ倉庫に格納されています
同じオープンソースRDBMSとしてのMySQLとPostgreSQLを語ろう。
どちらが良い・悪いの宗教論争ではなく、漏れたちユーザにとってのそれぞれの使い所を見出そう。
前スレ
MySQL vs PostgreSQL
http://pc8.2ch.net/test/read.cgi/db/1056943680/l50
MySQLがPostgreSQLに勝る点
(1)オフィシャルサポートby Oracleがある
(2)DB毎、テーブル毎のレプリケーションができる
(3)サポートされているシステムやソフトが多い
以上。
パフォーマンスは使いかた次第。CPUコアに対するスケーラビリティはまだPostgresの勝ち。
ただしベンチマークだけで評価するのは素人。アプリ次第でパフォーマンスなんてどうにでもなる。
MySQLはトリガ、ストアドプロシージャがまだまだ弱い。check制約も未サポート。MyISAMは外部キーも未サポート。
ただしこれらを使うか使わないかはあなた次第。
メジャーバージョン間の互換性はPostgresが高い、というかMySQLはマイナーバージョンですら
互換性なくすから実際に運用してみるとどうしようもないことがわかる。
SQLレベルでもころころ仕様がかわるから、アプリケーションまで含めたシステムのバージョンアップに
とてつもないコストがかかる。
>>526
にあるように、レプリケーション用のスレーブを準備するのが大変。バックアップ/リストア機能がとてつもなく貧弱。
これが運用上最大の欠点。
ファイルシステムのスナップショット機能を利用するしかない。あらかじめ準備してなかったり、古い環境で作業させられたりするとアウト。
MySQLはバグも多い。バグフィックスの数が膨大。
もともと開発の稚拙さが目立っていたが最近ではAlterTableでクラッシュするバグが1年以上放置されたりとひどい。
スラドに「PostgreSQLやSQLiteがMySQLの代用になるとか、天と地が逆さになってもありえない。」
とか書いてるキチガイがいるな >>570
あんな基地外シッタカ放置だろ。言っていることの
全てに突っ込みどころがありまくり。 ./見てないけどSQLiteはともかくDRBMSなんてどれも同じだろ殆ど
運用方法や方言が違うだけで SQLiteは両者と比べてどの辺の位置づけになりますか?
http://gro.cc/across/ MySQL 5.5 になって、CPUスケーラビリティは PostgreSQL に追いつきましたか?
5.1 までは酷い性能だったみたいですが。 5.1+InnoDB Pluginでも実はまだ負けてたんだけど
5.5ならPostgreSQLとほぼ互角だと思われる MySQL vs PostgreSQL の時代は終わり。
Oracle vs PostgreSQL が適当。 MySQLのライセンスがよくわからんのでちょっと教えてください(´д`;)
(というか、みなさんどうやってるんだろう・・・)
【ケース1】
店主AはサイトBからMySQLを使ったフリーのショッピングカートシステム(PHP)をダウンロード。
店主Aはショッピングカートシステム(PHP)のソースをちょこっと変更して(文言とかデザインとか設定とか)
店主AはレンタルサーバC(MySQL利用可)にそのシステムをインストール。
店主Aはネットショップをオープン。
【ケース2】
店主Dは個人Eにネットショップの開発、設置を依頼。
個人EはMySQLを用いたショッピングカートシステム(PHP)を開発。
個人Eは店主Dが契約したレンタルサーバF(MySQL利用可)にそのシステムをインストール。
店主Dはネットショップをオープン。
これらのケースはよくあるパターンだと思うけど、誰がライセンス料を払う義務があるの?
・サイトBは自由にダウンロードできる状態でソースを公開してるのでGPLですかね。
・店主Aはソースを変更した上でソース非公開(※)で使ってるのでOEM?
※ショッピングサイトで「このサイトのシステムをダウンロード」があるのはおかしいw
・個人EがOEMとするとお小遣い稼ぎ程度のちょっとしたプログラム作成依頼でも全部OEM?
・MySQLをインストールした上で自由にユーザーに使わせてるレンタルサーバ屋は
ライセンス料とは無関係? MySQLというか、GPLについて
>・サイトBは自由にダウンロードできる状態でソースを公開してるのでGPLですかね。
GPLなWEBアプリの利用者は店主Aであって、サイトBの利用者ではない。
よって、ソースコードの公開は必要ない。
ただし、店主Aが変更したGPLアプリを、他人のWebサイトにセットアップするのであれば、
Webサイトの所有者に対し、GPLでソースコードを提供しなければならない。
>・個人EがOEMとするとお小遣い稼ぎ程度のちょっとしたプログラム作成依頼でも全部OEM?
GPLなWEBアプリを店主Dが利用するなら、当然個人Eは、そのソースコードを店主Dに提供しなければならない。
>・MySQLをインストールした上で自由にユーザーに使わせてるレンタルサーバ屋は
インストールしたMySQLのソースコードが公開されているWebサイトを紹介すれば、GPLに違反しているとは思われない。
よって、ライセンス料を支払う必要はない。 >サイトBは自由にダウンロードできる状態でソースを公開してるのでGPLですかね。
サイトBが提供している、ショッピングカートシステム(PHP)がGPLかどうかは、
提供者に聞かないと分からない。
ダウンロードできるなら、利用ライセンスがどこかに書いてあると思うが… MySQLで、ライセンス料を払わなければいけないのは、
MySQLで動く自社著作物のソフトウェアを、
(独占的ライセンスで利用権を販売するなど)非GPLで他社に提供する場合。
GPLにおいて、レンタルサーバで動かすアプリケーションの利用者とは借り手のこと。サーバにアクセスする人は対象外。
GPLのソフトウェアのソースコードは、利用者にのみ提供すればそれでいい。
他社に請負で作ってもらった、著作権が自社に帰属する自社利用のWebアプリケーションは、My SQLのライセンス料を払わなくていいし、
GPLアプリケーションを改良し、自社で利用するだけであれば、他社に公開する必要もない。 >>583 >>584
レスありがとうございます。
ちょっと勘違いしてました。GPLとするときにソースを公開しないといけない相手は
「(WEB利用者も含む)世の中全体」ではなくて
「プログラムの著作物の複製物を所持している者」なのですね。
ケース2の場合だと店主Dに対してソースを公開するならGPLとなり
個人Eはライセンス料を払う必要がないのですね。
(ただし、店主Dには頒布権が発生しますから、店主Dによって個人Eが作成した
プログラムが世の中にばらまかれる可能性はありますが、そこは信頼関係でカバー?w)
この記事を読んで混乱したのですが、これは間違ってるということでいいんでしょうか?
http://www.atmarkit.co.jp/flinux/rensai/mysql01/mysql01.html#c
>MySQLをインストールしたサーバをASPなどの商用に利用する場合にはライセンス料が発生します
レンタルサーバ会社にもライセンス料が発生するようにも読めますが・・・
レンタルサーバ以外の一般的な有料ASPサービス(ショッピングカート、予約システムなど)の場合であっても
そもそも第三者にプログラムを頒布しませんから関係ないですよね?
>開発したアプリケーションのソースコードを広く一般に公開すれば課金はまぬがれますが
「広く一般に」ではなく「販売先(頒布先)に」ですよね?
>>585
わかりやすい解説ありがとうございます!
独占的ライセンスが必要な時以外はGPLでOKなんですね〜
しかし、A社が納品したプログラムをB社が完全に自由にできるっていうのもなんだかなぁ・・・
(丸ごとコピーして売ってもいいし、自社HPから自由にDLさせても良いということになるよね) >(ただし、店主Dには頒布権が発生しますから、店主Dによって個人Eが作成した
> プログラムが世の中にばらまかれる可能性はありますが、そこは信頼関係でカバー?w)
>(丸ごとコピーして売ってもいいし、自社HPから自由にDLさせても良いということになるよね)
GPLの理念は、利用者のソフトウェアの自由を保障することだから、これを禁止してはいけない
これはあなたが他のGPLソフトウェアを利用する時の権利にもなる
>MySQLをインストールしたサーバをASPなどの商用に利用する場合にはライセンス料が発生します
http://www.mysql.com/about/legal/licensing/oem/
http://www.softagency.co.jp/products/mysql/license/
などを読む限り、頒布しないかぎりライセンス料は発生しないと思われる(責任は持たない)
さらに気になるなら、上記リンク先から、問い合わせることもできる。
>しかし、A社が納品したプログラムをB社が完全に自由にできるっていうのもなんだかなぁ・・・
日本で一般的なソフトウェア開発は、開発者の労働役務の提供による請負契約で、
著作物の権利は、すべて納品先に帰属する。
そうでなく、著作物のソフトウェア製品の利用ライセンスを販売する、製品販売契約の場合、あなたは当然GPLやその他のライセンスを適用できる。
ただし、GPL以外でMy SQLを利用した製品を販売する場合、上記の通りMy SQLにライセンス料を払わなくてはならない。 >>588
どう読んでも、そんな結論にならないだろ。
MYSQLを使用したソフトウェアを引き渡す場合、(形態を問わず)
GPL(ソフトウェアのソースを公開)にして下さい。
GPLにしない場合、コマーシャルライセンスを買ってください。
だろ。
「頒布しないかぎりライセンス料は発生しない」
ってどこを読んだんだよ。 >>591
MySQLは、自分自身もGPLだけど、使うソフト(WEBサイト)もGPLであることを求めている。
GPLの規約自体は、この際あまり関係ない。
ものすごくわかりにくいけど、ここの2番目の章。
http://www-jp.mysql.com/about/legal/licensing/faq.html
要約すると、
「MySQLはオープンソースを推進しているので、オープンソースのソフトからMySQLを使用しても金を取りません。」
1番目の章でも、良く読めば、
「MySQL 製品を使用」する場合、使用するアプリケーション(WEBサイト含む)はGPLにして下さい。
そうしない場合、商用ライセンスを購入してください。 」
ってあいまいに書いている。 >>590
これは流石に酷い・・。中国並みのライセンス意識だわ・・。
MySQLというソフトを使用するなら、日本だと、MySQLの販売代理店に金を払う。
「mysql 購入」でググれば、代理店いっぱい出てくる。
頒布しなくても、windowsを使用する場合、windowsのライセンスは買うだろ。
まあ、お前は海賊版使ってるのかもしれないけどさ。 >>591
使うソフト(WEBサイト)を自社のみで使う(NDAなどで委託先に開発させたものを含む)場合には、
利用者(自社)がソースコードなどをGPLに基づいて利用できる状態にあればよいわけで
GPLを尊守しているかぎり、第三者にバイナリを提供していないにもかかわらずソースコードを開示する義務はなくて、
従って、バイナリやソースコードを第三者に頒布しなくとも(GPLを尊守しているかぎり)、
商用ライセンスを購入する必要はないと読める >>593
MySQLを自分で使用するだけなら金を払う必要ないよ。
RHELやCentOSにMySQLの価格は含まれていないでしょう。
もし金を払う必要があったら本屋で売ってる
CentOSのDVD-ROM付きガイド本が20万円以上することになる
買うのはサポートが欲しいときと、GPLを外したいとき >>595
ぽかーん
CentOSにMySQL入ってないだろ。
MySQLのダウンロードは無料。
使用するなら、使用するソフトをGPLで公開する。
じゃなきゃ、金を払う。
MySQLは営利企業が開発して、販売してるソフトだぞ。
ただ、使うソフトをGPLで公開すれば、無料で使えますってだけ。 >>597
入ってるのか。
いつも最小インストールだから、知らなかった。 CentOSはGPL。ここポイントな。
「第三者にバイナリを提供していないにもかかわらず」は、
内部の社員からの流出はライセンス的には止められない可能性がある。
なんにせよ、GPL汚染が怖いならフリー版のMySQLは候補にはならないよ。 >>596
GPLには公開する義務なんてないよ。何言ってんだ? >>599
内部の社員からの流出は、プログラムがGPLかどうかとは関係がない
GPLソフトウェアの扱いにも守秘義務が課せられるということは、
GPLでないソフトウェアと何ら違いはない
GPLの条項が理解できない場合や受け入れなれない場合は、
フリー版のMySQLは利用できない MySQLのライセンスのポイントは2つ。
1)MySQL自体の改変についてはGPLに従う。
2)MySQLを使用して開発した成果物(ソフトウェア・WEBサイトなど)もGPLに従う。
で、1)と2)は基本的に関係の無いライセンス規定で、
金銭的に問題になるのは2)。
1)のMySQL改変なんてやる人は滅多にいないけど、この規定のせいで
「MySQL自体を改変しなけりゃ、使って大丈夫」っていうデマが流れるようになった。
日本の(貧乏)企業の半数がPostgreSQLを使用しているのは、
2)の規定を読んでMySQLの使用を避けたか、MySQL販売代理店に確認したためと思われる。 >2)MySQLを使用して開発した成果物(ソフトウェア・WEBサイトなど)もGPLに従う。
って事は、MySQLを利用したWebサイトを作成してサイトを公開しただけなら、そのサイトを構成するcgi等を公開する必要は無いって事? >>604
レスさんくす。
やっぱ、そうなるよね。 >>604
604のリンク先を読むと、無条件で公開しなくていいわけではないようだが。
公にするならソースコードを公開しろという事だから、WEBサイトにつかうなら公開する
必要があるだろう。エクストラネットで内部だけで使うならともかく。
ここでいう「公にする」ってのはソフトウェアを頒布するということ。
Webでサービスを提供するのは当てはまらない。
無条件で公開しなくてよいわけではもちろんないが、GPLソフトウェアの
派生物を頒布する場合はその改変されたソースコードも提供しなければ
ならないといっているだけに過ぎない。 >>606
>WEBサイトにつかうなら公開する必要があるだろう。エクストラネットで内部だけで使うならともかく。
GPLが直接対象としている公開先は、バイナリの保持者であって、
GPLソフトウェアで作られているWEBサイトにアクセスする人に対しては、GPLソフトウェアを公開する必要はない。
GPLとは別に、Webアプリケーションの利用者に対してもソースコードを利用する権利を認めようとする、Affero General Public License (AGPL)というものがある。 うわっ AGPLなんて物もあるのか。こりゃ徹底してるな。 >>602
MySQLは当時サブクエリも使えなかったからな。
PostgreSQLに流れたのは当然。 >>606
それを要求するのはAGPLであってGPLじゃない。 >>610
今でもまともにJOINもできないけどね > MySQL MySQLはオワコン
ttp://slashdot.jp/apple/11/08/04/0816215.shtml レンタルサーバのDBがほとんどMySQLばっかりだからなあ
半々ぐらいになってくればPostgresも利用するんだがねぇ。
なんでMySQLばっかなんだろ。ただ単に他の業者がMySQLだからうちもって感じなのかな。 ちょっと前のPHPの標準扱いだったからじゃないかなあ 今は格安VPSあるからそれ使うのが主流になるんじゃね うちのPC管理者が
「社内イントラネットで使うデータベース(外部には非公開)であっても
業務で使うなら、MySQLは商用ライセンスが必要。
だからPostgreSQLじゃなきゃだめ」
って言い張っているんですが、純粋に自分らで作って自分らだけで使うんなら
商用ライセンスなんて要らないですよね?
サポート欲しけりゃライセンス買え。
MySQL使ったシステムを配布するならライセンス買うか、GPLに従って求められればソース出せ。
配布もしないし、サポートも要らないなら好きにしろ。
じゃないの? >>618
>商用ライセンスなんて要らないですよね?
要らないと思うけど問い合わせてみれば? >>620
問い合わせると「サポート無しでは云々」とか言われそうで。
うちのPC管理者ってマジで紙テープも使っていたCOBOL爺なんだが
(昔はパッチを当てるというのは、こうやって紙テープのアナをふさいだりアナを手であけたり
したもんだ、と実演してくれたw)
PHPとかもやっているくせに、どうも一度信じきったこと(MySQLを業務で使うには商用ライセンスが必要)
はナカナカ考えを変えそうにないんでねー。
>>621
具体的に何を言われたかは知らないけど、
たとえライセンス条項の文言に違反はしてなくても、
ライセンス元の権利者が商用ライセンスを買わないと使わせないというのなら、
従うべきのような気もする その使い方なら商用ライセンスはいらないが、
「2ちゃんに書いてありました」って言ったところで信じないだろう >>622
GPLの場合に限れば、オリジナルの権利者以外もサブライセンスできるから
実質ライセンス条項の文言がすべてだな。
ただ、ライセンスの話とサポートは別だが。 >>621
PostgreSQLでなにが悪いんだ。最近はこちらの方が昇り龍。 >>625
PostgresをVistaHomeに入れようとしたらハマったでござるの巻。
>>628
クソなPHPつかうところはちゃんと妥協できてんのに、
ほかで融通利かない点がカスなんだとおもう。 >>629
PHPは
print(”残高は$zandaka円です”);
っていう記述が出来るので好き。あと変数に$をつけるので
うっかり予約語と被らないところとかが好き。
言語体型がCと似ているので好き。
うちの近所の図書館には
PostgreSQLがキーワードな本が1冊も無い。
MySQLなら8冊ある
俺は絶対に
print ”残高は” . $zandaka . ”円です”;
と書くな
もしくは
printf(”残高は%d円です”, $zandaka);
元Javaプログラマだからってのもあるだろうが >>630
PHPが糞ってかプログラマが糞なのがよくわかるな >>632
print ”残高は” . $zandaka . ”円です”;
↑
これ、PHP3だと記述できないんだっけ?
(カッコでくくる必要がある) 全文検索をやってる人いますか?
検索結果の表示順序を決めるものとしてPostgreでは相関値rankがありますが
MySQLでは類似値が無いようなので、その面ではPostgresがよいかなと。 MySQLほどレスポンス求められないなら分析関数使えるPgかな。 最近レプリケーションも出来るように成ったとのことで、ポスグレに鞍替えしようかと思っているのですが、sqlでどこら辺がちがうなど、代表的なモノを幾つかお教えいただきたいのですが… 標準ではダメだけどMySQLではOKな緩いやつが蹴られるかな
GROUP BY 周りとか。 なるほど、group はMySQLはゆるいんですね。
ありがとうございます。
一応SQLの本を読みつつMySQLを覚えたのですが、ひょっとしてゆるいSQLで記載してるかもなので、見直してみます MySQLは、一回のselectで一つのテーブルに関して使われるインデックスは
一つだけという上限があるみたいなんですが、ポスグレはどんなでしょ? >>641
PostgreSQLにはそういう制限はない。 ども >>642
ということは、2つ以上のインデックスが活きるような検索なら、
MySQLよりかなり速いってことも有り得そうですね。 >>643
容量節約できるくらいじゃない?
適切なインデックスを張る前提だけど、そこは横着しないでしょ。ふつう。 一度のテーブルスキャンするのに使われるindexはどのDBMSでも
高々1つだと思うんだが、>>641の制限ってどういう状況?
1クエリ内で同じテーブルを複数回スキャンする場合に1つの
同じindexしか使われないということなのか、あるいはそもそも
1クエリ内のindex scanはテーブル毎に1回ずつしか使われないと
いうことなのか。 こんなスレがあったとは。
つかぬことをうかがいますが、MySQLとPostgreSQLでは、どちらがより省メモリでしょうか。
速いのはMySQLだそうですが、速さよりもメモリ消費量の少なさに興味があります。
「条件次第」といわれればそれまでですが、こんなときはMySQL or PostgreSQLのほうが省メモリだよー、というのを教えてください。 RDBMSにおけるメモリ使用量のほとんどはデータのキャッシュ領域なので
(PostgreSQLでshared_buffers、MySQLでinnodb_buffer_pool_size)、
そこを少なく設定すれば省メモリになる。もちろんその分性能は下がる。
そこを同じ設定にしたと仮定すると、
PostgreSQLはマルチプロセスアーキテクチャ、
MySQLはマルチスレッドアーキテクチャなので、
データベースへの接続数が多い場合はMySQLの方がメモリ使用量は少ない。
>>632
php的には
?>残高は<?=$zandaka?>円です<?
だろ。ちがうかw SELECT 〜 limit 100 とかした場合でも、条件に合う総件数を知りたい場合、
MySQLだとSELECT SQL_CALC_FOUND_ROWS 〜 とかやれば出来るんですけど、
PostgreSQLの場合はどうしたらいいんでしょ? SELECT count(*) OVER() ... LIMIT 100 overなる語も加えてぐぐってみました。
成程、ウインドウ関数とかいうものを使うのですね。
MySQLくらいしか知らなかった者では目が向かない部分でした。
ありがとうございました。 >>649
ポスグレのshared_buffersについて根本的に勘違いしてね?
shared_buffersは共有メモリとして1つだけ確保、クライアントと接続するバックエンドプロセスは
その共有メモリにアクセスするんだよ。MySQLのInnoDBと同じ。
バックエンドプロセス間の排他制御は様々な工夫がこらされて、パフォーマンスはとてつもなく向上してる。
ベンチマークはいろいろ公開されてるから調べるとよろし。
ポスグレのバージョンが古いけどそれでもMySQLより速いことが多いはず。
今ならもっと速い。MySQLもパフォーマンス向上してるけどさ。
・メモリをたくさん設定するとディスクI/Oが減るので速い
・最近のバージョンではshared_bufferへのアクセス排他制御が良くなっているので速い
という二つの話題が混ざっているんだな MySQL使うメリットってクラスタ組める以外に何かある? ■ このスレッドは過去ログ倉庫に格納されています