DBサーバのライセンスを整理する


リレーショナルデータベースである MySQL のライセンスをめぐって憶測を含む様々な記事が出ている。はたして MySQL を使い続けるべきなのかを考えるために、ライセンスについて整理することにしました。

今企画しているのは、Windows .NET で動作するアプリケーションです。データがわりとでかくて管理が大変そうなので、SQLite で DB を作ろうと初めは考えていたのですね。(詳しくは、C#/.NET で SQLite を使う基本中のキホンをどうぞ)CSVとのやり取りなんかもしやすいし、スタンドアロンのプログラムだし、DBの性能もそれほど必要ないと考えていました。SQLite はパブリックドメインですからバグがあっても文句はほとんど言えませんが、FirefoxやChromeでも使われている DB ですし、扱いやすいのです。

でも、いろいろ考えてみると今はそれでもいいけれど、将来的には複数クライアントで処理性能を向上したりする・・・ということも考えておかなくちゃと思ったのです。で、使い慣れた MySQL で話を進めようとしておりました。

MySQLのライセンスってどうなってるの

ご存じのように MySQL は現在は Oracle 社の傘下にあります。MySQL Workbench のような ER 図もかけるDB設計に便利なツールも出してるし、Connector/Net という .NET で使えるライブラリも提供している。どちらも MySQL Community Edition として GPL v2 で公開されています。

よく知られたことですが GPL というのはお仕事で使ううえでは注意が必要です。GPL のコードを変更して使用したり、派生したものを作った時は、その差分を公開するなどして GPL で配布することが求められます。問題は、派生するということがどういうことなのかという点です。

一般的には、MySQLサーバーを単独でインストールしてそのDBを利用するソフトウェアを開発・使用しても、開発・使用したソフトウェアはMySQLのライセンスとは無関係であると考えるのが妥当です。もしそうでないなら、サーバーにインストールされた MySQL はソースコード非公開の業務に使うことができません。しかし、問題はライブラリです。PHP の MySQL ライブラリなら PHP のライセンスの配下にあり、PHP で作られたプログラムやサービスは単なる「スクリプト」とみなすことができます。つまり、PHPやMySQLを使っていてもライセンス的には無関係ということができる。

では、Oracle の .NET ライブラリConnector/Netはどうでしょうか?微妙です。開発する本体プログラムの一部として密接に関係付けられた状態でリンクされるわけですから。開発したソフトウェアを GPL にして公開するのなら問題はないけれど、そうでない製品を作るのなら Connector/Net を使わないで作るか、さもなくば MySQL の商用ライセンスを買うか、MySQL を諦めるかということになります。

そんな微妙さが気になってネット検索してみると、まぁ出てくる出てくる。いろんな記事がでてきます。ちょっとあげておきましょう。

やや憶測も交じっているとはいえ、やっぱり製品として使うには心配が残るわけですよ。安心して商売しようとしたら MySQL の商用ライセンスの購入も視野に入れたくなってくる。

PostgreSQL復活か?

そんなわけで、次に MySQL とおさらばできるかどうかを考えてみる。とりあえず、PostgreSQL です。もう10年くらいいじってないし、今どうなっているかも知らなかった。確かめてみると、PostgreSQL は BSD ライセンスです。少しゆるいお仕事向きです。.NET 用のライブラリ Npgsql は本家には書いてありませんが、日本語情報のところには LGPL v2.1 と書いてあります。LGPL は GPL プロジェクトのライブラリによくつかわれるライセンスで、GPL のソースコード開示を緩めて使いやすくしたものです。これがあるおかげで、GPL で開発されたソフトウェアとソースコード非開示の製品ソフトウェアが併存できるという苦肉の策で編み出されたものです。

標準化されてるのに何で悩ましいの?

でも、ここまで考えてきてはっと思ったこと。それはもともと SQL という言語で「標準化」されて使いやすくなっているはずの DB サーバーが、実際にはどれを選ぶかで困ったことになる可能性を秘めているということです。DBの性能ぎりぎりまでチューニングするような用途でDB依存になるのは仕方がないことです。でも、そこまでいかないような私が書く「普通の」ソフトウェアでさえ何を選ぶか考えないと始まらない。そんなのっておかしいよね。

というわけで、LINQ を使って .NET Framework Data Prodvider みたいなもので MS SQL Server でもなんでももってこいな設計にしようかと魔がさしました。でもこれすごくめんどくさいね。最初の小さなプロジェクトだったはずのソフトウェア開発の半分くらいを、なんだかこの互換性の維持に割かなくてはならない気がしています。

いろんな夢を見つつも、結局 SQLite に戻ってしまうのが幸せかなぁというちょっと現実路線とちゃんとしたDBサーバー構築の間で、いまゆらゆらしているところです。

DBサーバ ライセンス
MySQL GPL v.2 または商用ライセンス(ORACLE)
PostgreSQL BSDライセンス
SQLite パブリックドメイン

ここまで読んでくださったんですから、何かご存知でしたらコメントでも残して助けてくださいね。

参考

  • MySQL
    http://dev.mysql.com/
  • PostgreSQL
    http://www.postgresql.org/
  • SQLite
    http://www.sqlite.org/
  • 今さらだけどMySQLとライセンス(スライド)
    http://www.slideshare.net/h141/mysql-22023284
  • 本当は恐ろしい、MySQLのライセンス?
    http://d.hatena.ne.jp/kouji0625/20120209/p1
  • MySQL Workbench
    http://www-jp.mysql.com/products/workbench/
  • Npgsql – .Net Data Provider for Postgresql
    http://npgsql.projects.pgfoundry.org/
  • GNU General Public License (Wikipedia)
    http://ja.wikipedia.org/wiki/GNU_General_Public_License

You can skip to the end and leave a response. Pinging is currently not allowed.
Subscribe to RSS Feed Twitter は Ume108 だよ