InfoQ Software Architects' Newsletter A monthly overview of things you need to know as an architect or aspiring architects. View an example Memorial Day Sale: Save up to 60% on InfoQ Dev Summit Boston (June 24-25)
データ処理を分散させるMapReduce設計パターン(source)が2004年にGoogleによって導入され、それにはC++の実装がついてきた。今では、Adam Pisoni氏(サイト・英語)がSkynet(サイト・英語)という名称でリリースした新しいRubyでの実装版が利用可能だ。 Skynetは順応性があり、自動アップグレード機能付きで耐障害性の完全分散型システムで、単一障害点は皆無です。 GoogleのデザインペーパーとSkynetには著しく重要な相違点が2つある。 Skynetが生コードをワーカーに送れないこと。 Skynetはピア・リカバリシステムを利用しており、ワーカーがお互いを監視していること(サイト・英語)。 理由が何であれワーカーが故障する、あるいは機能しなくなると、別のワーカーが気付いて、そのタスクを引き継ぎます。また、Skynetには特別な「マスター」サーバは存在せ
リレーショナルデータベースはクライアント/サーバモデルに適合するものの、サービスの世界では新しいソリューションが必要である(source)。RDBMSはスケーラビリティの問題に陥りやすい。冗長性や並列性をどのようにして実現すればいいのか(source)? (リレーショナルデータベースは)単一故障点となります。特に複製はささいな事ではありません。疑問に思うのであれば、全く同じデータを必要とする2つのデータベースサーバがあることによって起こる問題を考えて見てください。データを読んだり書いたりするために両方のサーバがあると、同時に変更するのが困難になります。マスターサーバとスレーブサーバがあっても、良くありません。なぜなら、マスターはユーザが情報を書き込む際、沢山の熱を帯びるからです。 また、Assaf Arkin氏も整合性を書くこと(source)はRDBMSが自身の重さで内破してしまう理由で
function backgroundLoad ( ids ) { for ( var i=0; i < ids.length; i++ ) { var a = getArticleWithCache(ids[i]); backgroundLoad(a.children); } } このbackgroundLoadはIDの配列を引数に取り、その各IDに対して上で定義したgetArticleWithCacheを呼び出します。これでIDに対応する記事のデータがキャッシュされます。そして読み込んだ記事の子記事のIDに対してbackgroundLoadを再帰的に呼び出すことで、ツリー全体をキャッシュすることができます。 ここまですべてうまくいっているように見えます。しかし、一度でもAjax開発を経験したことのある方ならば、これではうまくいかないということはすでにおわかりだと思います。これまでの例で
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く