2013年8月12日月曜日

MySQL vs Maria DB


MySQLと互換性を保ち、完全なオープンソースとして存在しており、これから主役になるといわれているMariaDBについての面白い記事。翻訳と感想を。訳せないところは英文のまま


MariaDBは有名なリレーショナルDBであるMySQLのフォークプロジェクトで、遅いながらも確実に、強いコミュニティを作りMySQLのユーザをとりこんでいる。その明確な証拠は、The Registerの本日のレポートから来ている。それはGoggleがMariaDB Fundationに常勤のエンジニアをアサインしたことだ。

オラクルは、それはMysqlの多様性を生み出す想定内の計画だと答えている。
Googleが開発者を一人送る。それ自体は大きなニュースに見えないかもしれません。しかし、それはMysqlとの戦いのトレンドを成長させていくことを指しています。

MySQLはOracleに買収されて以来、ますます孤立しているオープンソースプロジェクトとなっている。
『孤立している』このケースで言うと、オラクルが外部の寄与を受け付けていないという認識だ。

MysqlはGNU Public Licenceの元2つのデュアルライセンスで提供されている。
GPLが鍵だMysqlをフォークして作られたあらゆるプロジェクトは、ソースコードを公開することを要求される。おそらくそれがMysqlチームの利益になる。これはフリーソフトウエァの"copyleft(ソフトウェアの自由許諾権)"の本質だ。それは、改善が多数のプロジェクト間で共有されることを保証する。
しかし、MySQL、MariaDBのオリジナル製作者であるMonty Wideniusのような人は関係が続いている。オラクルは慎重にいくつかの変更を受け付けている。
GPLに親プロジェクトにコードの変更が受け付けられなければならないというルールはない。

そのような政策によって、MariaDBのようなMySQLから派生したDBが、MySQLと互換性を保つことを難しくしている。
While some forked projects in the open source world don't give a flying fig about compatibility  MariaDB most certainly does—otherwise, it would not be able to be a one-to-one replacement for existing MySQL databases.

WideniusとMariaDBチームはグーグルの参入によって、開発はギアアップされると思っている。彼らは多様性がMariaDBをよりよいプロジェクトにし、 そして商業的な1つにコントロールされなくなると信じている。
 確かにレジスターの記事はなぜグーグルが開発に開発に参入したか推測する。
グーグルのクラウドSQLプロダクトは、MySQLをベースにしている。そのためオラクルの気まぐれに運命を縛られるからである。

SkySQLのCEO Patrik SallnerはThe Regに「なぜGoogleが参加しているか?」かれの理論を述べている。彼らが、金銭面のスポンサーになっていないが、リソースを提供している会社はたくさんある。なぜならば彼らはコミュニティーの一員であることに価値を見るので。
That's another thing we learned from MySQL, to make sure there are enough contributors. At MySQL there were not that many externally,' he said.
'None, none,' Widenus [sic] chipped in during our conversation.
Did Oracle Pick Up The Clue Phone?
Widenius may have gotten ahead of himself with that statement to the Register, as Oracle may be wising up to the fact that if it wants to keep interest going in MySQL as an open source project, it has better start opening the shell a little.

MySQLのコミュニティーマネージャーである、Dave Stokes は外部のコントリビューターに呼びかけを行った。Stokesのリクエストは嘲笑と、苦情を受けた。それは、Oracle Contributors Agreementに同意を求めるものだ。そららは知的財産権の放棄などに関する物で、開発コミュニティーをイライラさせた。

以前のMySQL CommunityのマネージャGiuseppe Maxia は数日後に、オラクルの援護に現れた。

私はそれが好みではないが、私がオラクルを去ったときはそれはビジネスの一部でそれが残っていると思う。この機能はオープンソースを造るために、開発者を助けると思う。合理的なトレードオフだと思う。
それにMontyProgramも同じことを求めているし、ApacheもCanonicalも同じだとMaxiaは書いている。

Myxiaは彼の経験から、MySQLのコントリビューターになることは他のプロジェクトよりも難しいと挙げている。それはデータベースのソースコードの複雑さに起因することだ。


もしオラクルの取り組みがうまくいけば、プロジェクトの多様性を増加させる。
しかし、MariaDBのmore open than Mysqlからくる動きを止めることはできない。

もめてるようですねー。しかし長い目でみると、オラクルが面倒なことを続ける限りコントリビューターが減って、トーンダウンしそう。
ただ、世の中のMySQLがMariaDBに変わって行くかといわれると、なかなかその動きは見えないですね、少なくとも日本では。まあ、DBというシステムの根幹に関わるミドルウェアだと慎重になりますよね。
私的には引き続き、付かず離れずですね。

2013年6月25日火曜日

Memcache のSlab Reassign, Slab Automoveについて

Memcache1.4.5を使用しているのだが、アプリケーションにとって不都合な点がでている・・・
具体的に言うと、メモリは余裕があるのに、Evictionが発生してしまっているのだ。
検索したところ、ちょいと記事が古いがMemcachedのメモリ使用方法について詳しいものを見つけた。

これらを見ると一度確保されたチャンクのページは、他のチャンクに割り振られることがないので、最初に容量を確保されてしまったら、開放されることがない模様。

しかし、 version 1.4.11からは「Slab Reassign」、「Slab Automove」と言う、使っていないチャンクのページを、頻繁に使っているチャンクに割り振り直す機能があるようなので、公式ページを見てみた。

以下要約

Slab Reassign

 

 長い間稼働しているmemcahedインスタンスは、すべての利用可能なメモリが特定のスラブクラスに割り当てられている問題に直面するかもしれない。
100バイトのリクエストがたくさんあり、その後200バイトのリクエストが、異なるチャンクに保存された。その場合Memcachedは100バイトのチャンクを使うことができず、200バイトのデータは少ししか保持できない。

 1.4.11はスラブページを再割り当てする機能をもつ。 この機能、コマンドはベータです。近々のリリースで変わるかもしれません。覚えておいてください。コマンドが確定したとき、リリースノートにかかれるでしょう。

Slab Reassignを有効にするには、スタート時に以下オプションをつける必要がある。
$memcached -o slab_reassign
一度すべてのメモリが割り当てられてしまった場合は、以下コマンドでリアサインできる。

$ echo "slabs reassign 1 4" | nc localhost 11211
それは成功を表すエラーコードを返す、または後でリトライするひつようがある。
成功はスラブが移動したことを意味してはない。しかし、 バックグラウンドスレッドがメモリ移動を試みることを意味している。


Slab Automove

slab reassignは手動実行の機能である。Slab Automoveは自動できに実行されるアルゴリズムだ。
$ memcached -o slab_reassign, slab_automove
 上記はスタートアップ時に有効にする。slab_automoveは slab_reassignが最初に有効になっていなければならない。

automoveは起動中にも変更可能
$ echo "slabs automove 0" | nc localhost 11211
 このアルゴリズムは遅くて、古くさい。10秒のあいだに3回Evictionが発生すると、30秒の間Evictionが発生していないスラブクラスからページを移動させる。このアルゴリズムは十分出ないです。コミュニティを助けてください!改修したらパッチを送ってください!

Slab Reassign Implementation

スラブページのリアサインはトレードオフがある。
  • 500kより大きなすべてのアイテムが、1MBのスペースをとる。
  • メモリをリアサインしたとき、 1MBのページにいたすべてのアイテムは追い出される。
  • スラブリアサインが有効な時、追加のバックグラウンドスレッドが使われる。 
1つめのものは、のちのバージョンで改修される。そして、 -o slab_reassignオプションをつけなければ回避されます。


ふむふむ。あまり洗練された機能ではなさそうだな。
先のバージョンで改修があるかもしれないので、見てみよう。
1.4.14 で機能に改修があるのを見つけた。以下要約。

slabs reassign -1 15と与えると、どこかのスラブから、クラス15に対してページが移動される。

slabs automoveはアグレッシブなページリアサインアルゴリズムになった。
追い出し発生後とに、移動ができるか試みる。あなたが何が起こっているか本当に理解していないと、決して動かすべきでない。ほとんどの人は、ヒットレートがさがる。
緊急時には使える。

警告します。


結論

緊急時意外使わない方がいいのでは。

2013年6月11日火曜日

オープンソースの経験はあなたに仕事をみつけてくれる?

 『オープンソースに参加すると、キャリアにどのような影響を与えることができるか?』という興味深いテーマについて言及した記事を見つけたので要約する。

原文はこちら。

新卒にとっては就職状況が厳しくなっている。だが、オープンソースプロジェクトに参加していると、キャリアのスタートを加速することができる。

仕事を得るときに、実務の経験があなたのキャリアの武器になる。オープンソースプロジェクトに参加することは、あなたに実務の経験を与えてくれる。
オープンソースへの貢献は公的に見ることができる。事実採用の際に、レジュメの代わりにgithubのアカウントを尋ねる。

オープンソースに関わると、世界中の技術者と一緒に仕事ができる。

どこから始めていいかわからなければ、Openhatch.orgを見てスキル、興味から探してください。
おすすめは以下
  • Drupal
  • Python
  • LiberaOffice
 オープンソースに参加することの最良の事は、人々と出会えること、その人々と一緒に経験できること、そして世界中の人とプログラムを学べることだ。
オープンソースに参加する機会を得て、スキル向上と人的ネットワークの構築をしてください。
やはりオープンソースへの参加は得るものがおおそうですね。
私はまずLinux Mintのコミュニティでも覗いてみよう!

2013年5月28日火曜日

あなたが貢献を始める7つのオープンソースプロジェクト

オープンソースコミュニティに貢献することに興味があるので、検索していたら英語の面白い記事を見つけた。要約しそのコミュニティが日本でどうなのか調べてみる。

(原文) 7 open source projects to cut your teeth on (and the ones to avoid)

最初の貢献にフレンドリーな7つのプロジェクトはどこか?

 

Drupal

オープンソースのCMS。日本ではあまり使われていないが、世界的には有名らしい。コミュニティは初心者に寛容で、フレンドリー。PHPで書かれているようだ。Drupal Gardensでアカウントを作れば自前サーバがなくても、動作させることができる。
貢献者向けのドキュメントもある。Getting Involved Guide
日本のコミュニティもあるが、投稿日時をみるとそれほど活発でなさそう。日本だとwordpressのほうが活発かな?

Python

日本でもおなじみのよく知られたプログラミング言語。コミュニティは大きくて、フレンドリーかつ活発な模様。貢献者向けドキュメントあり。メンターシッププログラムあり。女性も活発に活動しているようだ。
日本だと翻訳プロジェクトがある。

LibreOffice

フリーのオフィスで2010から活動している。The EasyHacksのページから始めるとやりやすい模様。日本語でもメーリングリストやフォーラムで活動しているようだ。LibreOffice日本
Twitterのアカウントも発見

PostgreSQL

フリーのORM。C言語ベースのプロジェクトで、Cが得意な人には貢献しやすそう。ToDoページがある。日本のコミュニテイはなんとNPO法人があるようだ。

Ubuntu

大人気のLinuxディストリビューション。コミュニティの動きがかなり活発なようだ。使用している人が多いだけあって、国際的に様々な人が参加している模様。how to contributeなサイトもあり。もちろん日本コミュニティも存在し、フォーラムを覗いたが、活発にやり取りされていた。

PC-BSD

FreeBSDをベースに作られたOS。Ubuntuに興味があるけど、少し違ったものに貢献したい人におすすめらしい。プロジェクトに貢献をはじめるためのドキュメントも存在する。
日本のコミュニティは発見できず・・・

Documentation

正確に言うとオープンソースプロジェクトではないが、だいたいのプロジェクトにおいて弱い面であるので、最初の貢献にはおすすめらしい。ドキュメントは目に見えるところなので、貢献のインパクトは高い。

どのようなプロジェクトを探すべきか?

とにかく自分が使用していて、見つけたバグなど、小さな問題からとりかかるのがいいらしい。ほとんどの人は、自分が使用してもっと改良したいなど、自分のための理由から一歩を踏み出すことが多いようだ。 自分もLinux mint使用しているので、このへんから初めて見るかな。

避けたほうがよいプロジェクト

Linuxカーネルプロジェクト。へっぽこがヤンキースでプレイするようなものだと。
改善の兆しはあるが、あまり親切なコミュニティではないらしい。 カーネルのメンテナーたちは非常にコードにうるさいと。
まあ、プロジェクトの大きさなど考えると、綺麗なコードでないとメンテできないので、当然ですよね。
でもちょっと意外だった・・・

 wikipedia。なんか怖いらしい。

2013年5月19日日曜日

gemでインストールしたパッケージのダウンロード元、ライセンスについて

gemでcompass, sassをインストールしたが、「それのダウンロード元、ライセンスについて報告しろ」と言われ調べた。

まず、-v オプションをつけてsassをインストールしてみる。
sudo gem install -V sass
Password:
GET http://rubygems.org/latest_specs.4.8.gz
302 Moved Temporarily
GET http://production.s3.rubygems.org/latest_specs.4.8.gz
304 Not Modified
Installing gem sass-3.2.9
Downloading gem sass-3.2.9.gem
GET http://rubygems.org/gems/sass-3.2.9.gem
302 Moved Temporarily
GET http://tokyo-m.rubygems.org/gems/sass-3.2.9.gem
200 OK
/Library/Ruby/Gems/1.8/gems/sass-3.2.9/README.md
/Library/Ruby/Gems/1.8/gems/sass-3.2.9/VERSION_NAME
/Library/Ruby/Gems/1.8/gems/sass-3.2.9/VERSION_DATE
/Library/Ruby/Gems/1.8/gems/sass-3.2.9/REVISION
/Library/Ruby/Gems/1.8/gems/sass-3.2.9/MIT-LICENSE
/Library/Ruby/Gems/1.8/gems/sass-3.2.9/VERSION
/Library/Ruby/Gems/1.8/gems/sass-3.2.9/CONTRIBUTING
/usr/bin/sass
/usr/bin/sass-convert
/usr/bin/scss
Successfully installed sass-3.2.9
1 gem installed
Installing ri documentation for sass-3.2.9...
Installing RDoc documentation for sass-3.2.9...

ふむふむ、取得先は「http://tokyo-m.rubygems.org/gems/sass-3.2.9.gem」ということか。
ライセンスは「/Library/Ruby/Gems/1.8/gems/sass-3.2.9/MIT-LICENSE」に記述がある。

compassも同様に調べることが可能だ。

OSSといえど使用する際は、ライセンスに気をつけよう。