ちょっと硬派なコンピュータフリークのBlogです。

カスタム検索

2010-03-30

第102回カーネル読書会 at 楽天のプレゼン資料公開しました。 #kernel100329

昨日、Yokohama Linux Users Group(吉岡さん主催)の第102回カーネル読書会において発表を行ったので、その時の資料を公開した。

2010-03-26

ジョナサン・シュワルツの発言から考察するソフトウェア特許の有害性

少し古い話だが、元SunのCEOであるジョナサン・シュワルツ氏が自身のブログ「スティーブ・ジョブズに訴えると脅された」と語った。これは先日、AppleがHTCを提訴したことを受けて語った内容であるが、その辺のいきさつについてはZDNetの記事ITMediaの記事シュワルツ氏のブログエントリなどを見て頂きたい。(ZDNetの記事がよくまとまっている。)

2010-03-23

Not Only NoSQL!! 驚異的なまでにWRITE性能をスケールさせるSPIDERストレージエンジン

Webサービスでは、世界中からのトラフィックを捌く必要があるため、いくらチューニングしようとも一台のRDBMSでは捌ききることが出来ないのが常だ。MySQLは最初からマスター・スレーブ型のレプリケーション機能が搭載されており、スレーブをたくさんぶら下げることによって参照の負荷をスレーブに割り振るというスケールアウトによってその問題に対処してきた。スレーブによるスケールアウトは、参照(=PV)が多いWebサイトと非常に相性が良く、幾多のWebサイトにおいて実績を作ってきているし、まだまだ利用されている。

しかしながら、サイトのトラフィックが劇的に増加してくるようになると、レプリケーションによる負荷分散では追いつかなくなってきた。そこで人々がとった選択肢は、memcachedを利用することである。memcachedはインメモリ型の高速なKVSであり、参照・更新性能はMySQLより格段に高い。MySQLをバックエンドのストレージに利用し、なおかつmemcachedにホットなデータをキャッシュすることにより、データベースへの問い合わせを激減させることができるのである。

1:Nのレプリケーションでは、更新の負荷を分散することが出来ない。Webサイトの規模が大きくなると、更新の負荷も非常に高くなる。そこで次に用いられたのがShardingという技術である。Shardingとは、MySQLサーバーを複数用意し、アプリケーション側でデータを格納するべきサーバーを選択することである。

以上をまとめると、現在多くのWebサイトでは次のようなトポロジによって大規模なトラフィックを捌いている。
  • レプリケーションによるスケールアウト
  • memcachedによるデータベースへの問い合わせ抑制。
  • Shardingによる更新の分散。
かくして、MySQL+memcachedという組み合わせは大規模Webサイトで用いられる典型的なデータストアとなったのである。

2010-03-17

たった3秒でInnoDBのデータローディングが快適になるライフハック

MySQLに限った話ではないが、データベース管理システムに大量のデータを投入するのは時間が掛かり大変苦痛を伴う作業である。劇的に効能があるわけではないが、MySQLを利用しているとき、特にInnoDBを使っている場合にはデータの投入を高速化するためにいくつかテクニックがあるので紹介しよう。皆さんの作業時間が短縮され、少しでも早く帰路に着いたりサービスインさせたりという形でお役に立てれば幸いである。ちなみに、タイトルはネタであるのだが、もし本当に3秒で以下の全ての設定を行えた人が居たら教えて頂きたい!

2010-03-10

InnoDB Pluginことはじめ。快適ストレージエンジン生活はじまる!

MySQL 5.1.38からMySQL本体にInnoDB Pluginバンドルされている。一部の先駆的なユーザー以外に、「InnoDB使ってますよ!」もしくは「検証してるよ!」という話をあまり聞かない。そもそもであるが、InnoDB Pluginってなんぞ?!という人が多いんではないかと思うのだが、実際はどうなのだろう?現在はRC版(リリース候補版)という位置づけのInnoDB Pluginであるが、一部影響度の高いバグが残っていたりしてGA版ほどの安定性は求められないものの、ほとんど実用に耐えうる品質になっているといえる。そんなわけで、今日は改めてInnoDB Pluginの使い方・使いどころについて説明するので、ぜひ皆さんの手でInnoDB Pluginを評価してみて頂きたい。

2010-03-09

InnoDBでCOUNT()を扱う際の注意事項あれこれ。

InnoDBを使うとき、MyISAMと比較して度々やり玉に挙げられるポイントとして「COUNT()が遅い」というものがある。確かにInnoDBにおいて行数を弾き出すのにはテーブルスキャンが必要なのだが、そもそもMyISAMのCOUNT()が速い(テーブルの行数を保持してる)のが特殊なのであって、InnoDBが遅いわけではないのである。とはいえ、高速なCOUNT()については需要が多く、この問題には多くの人取り組んでおられるようだ。しかしながら、COUNT()のチューニングについては未だ語られていない点があるように見受けられるので、今日はCOUNT()のチューニングについて解説しようと思う。

2010-03-04

漢のソフトウェア特許廃止論

最近は長いエントリしか書いてないので投稿の回数が減り気味なのだが、性懲りもなく今回も長文をぶちかますので皆さん時間があるときに読んでくださると幸いである。

コンピュータ産業において最も良くないものは何か?と聞かれると、俺は間違いなく「ソフトウェア特許こそ諸悪の根源であり、癌である!」と答えるだろう。コンピュータ産業はソフトウェア特許という癌に冒され、日々むしばまれ、やがて終焉に向かおうとしているように見える。一般的に、特許と言うと「産業を振興するとても良いもの」のように考える人も多いだろうが、そうではない。今ではあらゆる産業にとっての足かせにしかなっていないのだ!!

今日は、特にソフトウェア産業の領域に絞って、特許が如何に危険で人々のためにならないかを説明しようと思う。