勉強

placement newの速度

普通のnewと、placement newがどのくらい速度が違うのかを比較してみました。 #include "stdafx.h" #include <new> #include "TIME.H" class MyClass { public: MyClass() : m_value(0), m_dbl(0.0) { } MyClass(int value) : m_value(value), m_dbl(0.0) { } pub</new>…

サーバ/インフラを支える技術 2章 (2.3 2.4 2.5)

2.3 MySQLのレプリケーション レプリケーションとはデータを別の場所へリアルタイムに複製すること。レプリケーションには二つの役割があり、それぞれマスタとスレーブと言います。 マスタは、 更新と参照の両方のクエリを受け付ける スレーブは、 更新の…

サーバ/インフラを支える技術 2章 キャッシュサーバの導入

HTTPはステートレスだからこそキャッシュを有効に使えるというのは、なるほど、と思いました。逆に状態を持つということは、状態が変化するためでだから、変化するものはキャッシュしにくいということだと思います。 Squidとmemcachedについて説明があり、そ…

サーバ/インフラを支える技術 2章 リバースプロキシの導入

まず、リバースプロキシのリバースとは、 通常プロキシサーバはLAN→WANの要求を代理で行いますが、リバースプロキシはWAN→LANの要求を代理します。(P42) という意味で、通常とは反対の役割をするということです。 以前にひとつのマシン内でUR…

サーバ/インフラを支える技術 1章

冗長化とは(2P)、 障害が発生しても予備の機材でシステムの機能を継続できること で、その本質は(2P)、 障害を想定する 障害に備えて予備の機材を準備する 障害が発生した際に予備の機材に切り替えられる運用体制を整備する です。 そして、WEBサーバ、ロー…

Googleを支える技術 第4章 Sawzall

分散処理をより手軽に扱えるようにするためにデザインされたDSLのこと。 RDBに対するSQLのような存在。SawzallはGFSからデータを抽出します。 p165 Sawzallでは、Mapに相当する処理を「フィルタ」(Filter)、Reduceに相当するものを「アグリゲータ」(Aggre…

Googleを支える技術 第4章 MapReduce

これまでで一番目から鱗な考え方だと思いました。 まずはその定義から。 Map + Reduce = MapReduce Mapとは(p138) ひとまとまりのデータを受け取って新しいデータを生成していくプロセス Reduceとは(p138) Mapによって作られたデータをまとめて、最終的に手…

Googleを支える技術 第3章 Chubby

Chubbyの特徴は、GFSやBigTableに比べるととても小さなデータを扱うことで、設定ファイルのような扱いになる。 また、Chubbyファイルにはロックする機能があります(おそらくこの意味が大きい)。GFSにはロック機能はないが、Chubbyを利用することによってGF…

Googleを支える技術 第3章 BigTable

BigTableとは普通のRDBとは違い、多次元に及ぶデータベースになっている(多次元マップ)。 多次元は、「行キー」「コラムキー」「タイムスタンプ」によって表される。 タイムスタンプによってテーブルに奥行きを持たせるっていうのは面白い。WEBのデータは…

Googleを支える技術 第3章 Google File System

OSのファイルシステムではなく巨大なディスクを実現するためにある分散ファイルシステムのこと。 分散ファイルシステムなんてこれまで考えたことなかったし結構おもしろかった。マスタとチャンクサーバのやりとりはなるほどと感心させられる。常に障害対策…

Googleを支える技術 第2章

はじめは小さかったGoogleのシステムを次第に巨大化していく。それらをどのように行っていったのかが書いてある。 ポイントはスケールと負荷分散。 スケールするといっても当然適材適所であり、スケールするかを判断する必要がある。 負荷分散にもいろいろな…

Googleを支える技術 第1章

初代Googleの全体像についての解説。 クローラによるWEBページの収集からそれらを解析してインデックスを作成。そしてそれらのインデックスを利用して検索結果を求める、そんな一連の過程が説明されています。 自分でも驚くくらい分かりやすく、著者西田圭介…