Scalaで書かれたShardingを実現するミドルウェア2010年4月7日Twitterは独自に開発した分散フレームワークの「Gizzard」をオープンソースとして公開しました。GizzardはScalaで書かれたJavaVM上で動作するミドルウェアで、PHPやRubyといったWebアプリケーションからの要求を自動的にデータベースに分散することで、大規模で可用性の高い分散データベースを容易に実現するためのものです。datastores」では、Gizzardは次のようなものであると説明されています。databases.GizzardはScala製フレームワークであり、独自のフォルトトレラントな分散データベースを容易に実現する。Gizzardは以下の図のように、Webアプリケーションとデータストレージのあいだに入るミドルウェアとなり、Webアプリケーションからのデータの「Sharding」を行うことで分散データベースを実現する構造になっています。GizzardはWebアプリケーションとデータベースのあいだでShardingを行うミドルウェア。datastores」に掲載されていたものを加工Webアプリケーション層では、PHPやRubyなどが典型的なものとされ、データベース層ではリレーショナルデータベースやLucene、Redisなどネットワーク対応のあらゆるデータベースに対応すると説明されています。Shardingによるデータ分割とレプリケーションを実現Gizzardの核になっているのが「Sharding」(シャーディング)と呼ばれる技術です。Twitterの説明を借りると、Shardingとは「パーティショニング」と「レプリケーション」の2つの技術からなります。パーティショニングとは、1つのデータベースをハッシュなどを使って複数の部分に分けることで複数のデータベースに分散すること。レプリケーションは、あるデータのレプリカ(複製)を別のサーバにも作ることです。レプリケーションにより、全体として耐障害性が増すとともに、大量のアクセスに対して複数のサーバが同時にレスポンスできるようになるため性能向上が期待できます。この2つの技術からなる「Sharding」は、しかし難しい技術だといいます。failures.問題は、Shardingは難しい、ということだ。データに対して適切なパーティショニングの構造を決定するには多くのことを考慮しなければならない。難しいのは、ネットワークやサーバなどの故障を想定しつつ、すべてのデータの一貫性を実現しなければならないことだ。既存のオープンソースとして公開されているさまざまなソフトウェアはまだ未成熟だったり制限があったために、独自にGizzardを作ったと。web.残念なことに、現時点では多くのオープンソースはまだ未熟だったり、制限があったりする。トラフィックに対応するための挑戦が続くTwitterTwitterはめざましい成長の裏で、ずっと「いかに大量のトラフィックをさばくか」という技術的なチャレンジを続けてきました。このチャレンジについては以下の記事でその一部を紹介しました。Publickey上記の記事ではMySQLとMemcachedのボトルネックをいかに克服したか、という内容でしたが、その後Twitterは大量のデータ管理のためにNoSQLデータベースのCassandraを選択したとも伝えられていました。TwitterとDiggがNoSQLの「Cassandra」を選ぶ理由そして今回のGizzardの発表です。Twitterの技術部門では、大量のデータとトラフィックに対応するためにさまざまな選択肢を検討しているということなのでしょう。仮想化が変えるサーバ。Bridge」はダミープラグ方式(修正)≪前の記事SVGは普及する。Niino(jniino)IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。RDSやAuroraのスナップショットをParquet形式でS3へ保存可能に。dHCI」発表ITエンジニアが投票した「ITエンジニア本大賞2020」ベスト10発表。Kubernetes」が正式版に。ElasticsearchやKibanaなどをKubernetes環境にデプロイ、Operatorにより運用も容易にKubernetesとコンテナの実行に最適化された統合システム「Diamanti」のアーキテクチャはどうなっているか[PR][速報]AWS、2021年初頭に大阪リージョンを開設すると発表。10へログイン可能に。10へ拡大Google、コーディング不要でアプリケーション開発ができる「AppSheet」買収。usPublickeyについて/運営者についてお問い合わせ広告についてプライバシーポリシ。