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

カスタム検索
ラベル scaling の投稿を表示しています。 すべての投稿を表示
ラベル scaling の投稿を表示しています。 すべての投稿を表示

2010-04-13

快適スケールアウト生活への第一歩。SPIDERストレージエンジンを使ってみよう!

先月、Not Only NoSQL!! 驚異的なまでにWRITE性能をスケールさせるSPIDERストレージエンジンというエントリでSPIDERストレージエンジンによるスケールアウトが凄い!という話を書いた。SPIDERストレージエンジンは凄いヤツだが、ノウハウがあまりウェブ上で見つからない。唯一見つかる日本語の記事は、ウノウラボによる「国産MySQLストレージエンジン「Spider」の作者、斯波健徳氏に聞く 」だけである。SPIDERストレージエンジンは斯波氏による単独の作品であるため、斯波氏は開発だけで手いっぱいであり、使い方の紹介記事を書くことまでは手が回らないのであろう。こんな凄いストレージエンジンをドキュメントが足りないせいで使って貰えないなんて勿体ない!!

というわけで、今日はSPIDERストレージエンジンの基本的な使い方について紹介する。少し長いエントリであるが、最後までお付き合い頂ければ幸いである。

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サイトで用いられる典型的なデータストアとなったのである。

2009-04-06

Distribution Awareness - MySQL Clusterにおけるスキーマチューニングの定石

MySQL Clusterはデータノードが増えると性能が低下する???

そのような噂を聞いたことがないだろうか。この噂は事実を含んでいる面もあるが、殆どの場合は適切にスキーマを設計していないことが原因で起きる。実はMySQL Clusterはその性能を遺憾なく発揮するためにはスキーマの設計が非常に大事なのである。

MySQL Clusterは複数のデータノード(ノードグループ)に対して主キーの値に基づいて行単位で分散されている。主キーに偏りがなければ各データノードに格納される行数は均等になる。つまり、MySQL ClusterはSharding(アプリケーションパーティショニング/Level2分散)を自ら行っていると言えるだろう。

2009-02-02

コンピュータ業界の展望と多様性

コンピュータシステムは、誕生してから現在に至るまで非常に様々な進化を遂げてきた。そして、まるで生物が単細胞生物から多細胞生物へと進化したように、コンピュータも相互接続を行うようになり、あるコンピュータの集合が一つの大きなシステムを構成するようになった。

2009-01-26

スケーリングと多様性

ゾウの時間 ネズミの時間というベストセラーになった本がある。この本が出版されたのはかなり前なのだがとても興味深く、単細胞生物からほ乳類に至るまでの種々の生物において、なぜそれらが大きくなれないのか・または大きくなれたのかを説明している。(生物にとって、サイズが大きいのは生存競争に勝ち抜く上で非常に重要なことである。)コンピュータエンジニアとしてこの本を読むと、コンピュータと生物の類似性に気づかせてくれる。そして様々な考察を与えてくれるのである。

なぜシステムがスケールしないのか・またはスケールするのか・さらに進化したシステムとはどのような形態になるべきなのか・・・