diggの機能

MySpaceの機能とGoogleのデータセンターの機能については既に説明しましたが、 次にdiggのような小規模なプロジェクトを見てみましょう。 最初の2つのケースのように、特にユニークで「カスタムメイド」のものはありませんが、それでも興味深いものです。



起動時には、プロジェクトはApache 1.3とPHP 4.xを備えた単一のLinuxサーバーでホストされていました。 データベース管理には、MySQL 4.0、MyISAMテーブル、および組み込みのMySQL検索が使用されました。 開発者は、特に財政難なしにプロジェクトの迅速な開発を確実にするために、できるだけ多くのオープンソース製品を使用しようとしました。 上記に加えて、ImageMagick、Ispell、prototype / scriptaculousなどの無料パッケージがアプリケーションを見つけました。 すぐに別のサーバーが1つのサーバーに追加され、プロジェクトの急速な成長が始まりました。



2番目のサーバーの出現により、MyISAMテーブルにInnoDBテーブルを追加する必要がありました。 3番目のサーバーが現れ、Apache 2.xとMySQLのマスター/スレーブ複製システムがインストールされた後、memcachedの使用を開始し、PHP 5.xに切り替えてデータベース管理者を雇いました。



diggサーバーシステムは、2つの比較的独立したクラスターで構成されています。 ロードバランサーの背後にある個々のPHPサーバーは、MySQLサーバーと対話して、リアルタイムでページを生成します。







ページ生成プロセスにおける重要な役割は、memcachedキャッシングモジュールに割り当てられ、サーバーの負荷を大幅に削減します。 特定のソーシャルメディアコンテンツに対する作業の効率を高めるために、digg Webサイト専用の追加プログラムコードが作成されました。



MySQLサーバーグループは、プライマリ、検索、運用の特殊なクラスターに分割されます。







この状況では、データベースのパーティション分割(シャーディング)に頼ることができることは明らかです。 このアプローチには長所と短所の両方があります。 シャーディングの利点には、生産性の向上とDBMSの管理性/カスタマイズの改善が含まれ、欠点には、PHPの負荷の増加、複雑なプログラミング、SQLサポートの損失が含まれます。 MySQLはいくつかのタイプのシャーディングをサポートしていますが、diggはそれらのいずれも使用していません。開発者によると、これらのテクノロジーはすべて当時非常に生だったためです。



今日、diggデータベースは、MySQLバージョン5.0.22、5.0.27、5.0.30、5.0.32からはかなり異質な構造であり、CactiをサポートするためのMySQL 4.1もあります。 データベースのインストールとサポートは、Debianオペレーティングシステムを通じて実行されます。



InnoDBテーブルはオンラインOLTPトランザクション処理に使用され(ハードウェア障害からの回復も高速です)、分析OLAP処理にはMyISAMテーブルが使用されます(バージョンのロードと更新が高速化されます)。



Diggの成長は、エンジニアがインフラストラクチャのスケーリングに関連する多くの新しい問題に直面した段階に達しました。 ますます多くのRAMを購入してインストールすると、効果がなくなります。



MySQL UC 2007 Conferenceのプレゼンテーションを介して



All Articles