kiyoka.2010_09_06 RSSPLAIN

Related pages: !kiyoka.blog.list kiyoka.2010_09_18 Sekka.FAQ !kiyoka.blog.2010_09
5455555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
5

[KVS][Sekka] 個人的なNoSQL(KVS)のライセンス調査

4

SekkaをBSDLにしたいのと、将来どこかのSaaSでホスティングしたいという観点から、どのNoSQL DBを選べば良いか調査してみた。

5

ドライバはRubyのみを想定している。

5

また、SekkaはRuby 1.9.xでしか動かないので、1.9.x に対応したドライバが欲しい。

5

ちょっと偏ったコメントが混ざっているので、その点だけご注意下さい。

5
 RUpoSi
5

 

5

ポイントは、SekkaサーバにリンクするドライバのライセンスがGPL2 or GPL3以外のものであること。

5

ちなみに現在開発中のSekkaで使っているKyotoCabinetはRubyのクライアントライブラリがGPL3なのですでにNG。

5

KyotoCabinetの商用ライセンスを買えばOKになるが、目的は配布するSekkaをBSDLにすることなので、そのオプションは無しとする。

5

また、今後の運用のことを考えて、なるべくSaaS環境で利用できるDBを優先して選択したい。

5

そんなわけで、最近流行りにNoSQLサーバを順番に当たってみた。

5

 

5

memcached

5

永続化機能が無いので、Sekkaの辞書DBには利用できない。

5

しかし多くのDBがこのmemcachedの互換プロトコルをサポートしているので、クライアントだけ調査しておく。

5

ライセンス的にも修正BSDLなので問題ない。

5

もしかしたら、Sekkaがこの互換プロトコルの範囲で十分やっていけるのであれば、DBを選ばないこのライブラリがベストという可能性もある。

5
クライアントライブラリ: gem install memcache-client でインストール可能。
5
ライセンス: 修正BSDL (3条項)
5
Ruby1.9.x対応: 〇
5

 

5

memcachedb

5

上記のmemcachdに永続化機能を追加したもの。

5
memcachedの互換プロトコル: 〇
5

 

5

Kyoto Cabinet

5

現在も活発に開発が進んでいるDBである。

5

高速だし、Rubyから使いやすいので、ライセンスの問題が無ければこのDBを使い続けたかった。

5
クライアントライブラリ: kyotocabinet-ruby-1.17.tar.gzEXT
5
ライセンス: × GPLv3
5
Ruby1.9.x対応: 〇
5
memcachedの互換プロトコル: × 
5
提供SaaSベンダ: なし
5

 

5

Tokyo Cabinet

5

開発はKyoto Cabinetに移行しているはずなので、今更使いたくない。

5

ライセンスはLGPLのためGPL感染せず問題ない。

5

memcachedのクライアントからアクセスするという方法もある。

5
クライアントライブラリ: tokyocabinet-ruby-1.30.tar.gzEXT
5
ライセンス: 〇 LGPLv2.1
5
Ruby1.9.x対応: ?
5
memcachedの互換プロトコル: 〇
5
提供SaaSベンダ: EngineYard
5

 

5

mongoDB

5

Heroku上でmongoHQというadd-onsで利用可能なので、SaaS環境もOK。

5

少し、RDBMSに近い使いかたもできるので、将来的にも学習のしがいがある。

5

パフォーマンスがKyoto Cabinetoに比べて遜色無いかどうかは不明。

5
クライアントライブラリ: gem install mongo でインストール可能。
5
ライセンス: 〇 Apache License 2.0
5
Ruby1.9.x対応: ?
5
memcachedの互換プロトコル: × 
5
提供SaaSベンダ: mongoHQ(herokuのオプションとして使用可能)
5

 

5

couchDB

5

クライアントは、複数ある(RubyLibrary - Couchdb WikiEXT)ようだ。

5

あまり、高速ではないという噂があるので、Google Suggestのようなリアルタイム検索が主体のSekkaには向いていないと思う。

5
クライアントライブラリ: 例えば、CouchObjectEXT であれあば
5
ライセンス: 〇 MIT
5
Ruby1.9.x対応: ?
5
memcachedの互換プロトコル: × 
5
提供SaaSベンダ: Cloudant: CouchDB hostingEXT(herokuのオプションとして使用可能)
5

 

5

KumofsEXT

5

特に、専用クライアントは無いようだ。memcahced互換プロトコルなので、memcachedクライアントを使う。

5
memcachedの互換プロトコル: 〇
5

 

5

ROMA

5

まだまだ、楽天以外で使っているという声を聞いたことがないROMA。

5

まだ使うべきではない気がする。クライアントライセンスが何故 GPLv3 なのか。

5

楽天以外で使ってもらう気があるのであれば、ライセンスを変更したほうがいいと思うけど、そこまで言うのはおせっかいか。

5

但し、memcached互換プロトコルでアクセスできるらしいので、上記Kumofsと同じになる。

5
クライアントライブラリ: gem install roma-client でインストール可能。
5
ライセンス: × GPLv3
5
Ruby1.9.x対応: ?
5
memcachedの互換プロトコル: 〇
5

 

5

Cassandora

5

クライアントライブラリが、ThriftからAvroに移行していくらしいのだが、用途としてはちょっと大袈裟で合わない感じがする。

5

使う気は無いのでスルー。

5

 

5

redis - Project Hosting on Google CodeEXT

5
 参考:永続化対応のインメモリDB「Redis」が登場EXT
5

Kyoto CabinetよりももっとInMemory DBの要素を強くした感じのDB。

5

複数のサーバ間で、数分おきにDISKに書きこむなどの仕組みを持つ。

5

memcahced互換プロトコルではないので、どうかとも思ったが、EngineYardとherokuの両方がサポートしている。

5
クライアントライブラリ: gem install redis でインストール可能。
5
ライセンス: 〇 the very liberal BSD license
5
Ruby1.9.x対応: 〇
5
提供SaaSベンダ: EngineYard、heroku
5
memcachedの互換プロトコル: ×
5

 

5

Amazon SimpleDB - WikipediaEXT

5

Sekkaには向いていないかも。Amazonにロックインされるという問題もあり。

5

以下略。

5

 

5

Hypertable - WikipediaEXT

5

Bigtableの互換オープンソース製品。SekkaをJRuby+GAEで動かす予定ならこれもあり。

5

まだまだRubyでGAEを利用しようとすると、パフォーマンス面で苦労するそうなので、スルー。

5

以下略。

5

 

5

後、数日考えてみて、どうするか決めよう。

5

mongoDBかredis対応が優勢かな。それともmemcachedとredisの両方のクライアントで動くようにしておこうかな。

5

 

5

...comment disabled...