読書メモ ・「Googleを支える技術 〜巨大システムの内側の世界」 ・検索エンジンで使うDBはRDBのようなものではない。高性能が求められるため、原始的だが限界まで効率化されたものを使用。 RDBの検索機能では無駄が多い。 ・システムのスケールアップ(より高性能のシステムに入れ替える)の利点はシステムを単純にできること。 ハードウエアを入れ替えるだけで性能アップ。 スケールアウト(ハードウエアを追加)だと最初から複数のハードを想定してソフトウエアを作る必要がある。 ・GFS:Google File System。多数のマシンを用いることを想定。大量データを連続して転送する場合に限って高性能を発揮するように設計。 小さなデータの読み書きには不向き。 ・Bigtable:DBのためのシステム。厳密にはDBではなく、「構造データのための分散ストレージシステム」。大規模分散システムにおいて、 複雑なデータ構造を効率的に読み書きできる。 ・Chubby:小さな分散ファイルシステム。分散システムにおいて排他制御(ロック)を行う「ロックサービス」。 イベント通知のためにも利用できる。DNSに代わって名前解決の手段としても用いられる。 ・MapReduce:多数のマシンで効率的にデータ処理を行うための仕組み。 ・Hadoop:OSSの大規模分散システム。米国Yahoo!が中心に開発。Hadoop版のMapReduce実装もある。 ・GFSに代わるHDFS ・Bigtableに代わるHBase ・Sawzallに代わるPig ・Hadoopのセットアップ済み仮想マシン(VMWareイメージ) ・Amazon EC2はすぐに利用できる環境 ・CPUの動作電力=a x C x V x V x f: CMOS回路が充放電を繰り返す頻度a、静電容量C、電圧V、クロック周波数f ・CPUの電圧やクロックを下げることは性能が犠牲になる。電圧を下げるためにはクロックも下げる必要がある。 クロックを下げるために電圧を下げれば、Vの三乗のオーダーで電力を下げられる。 ・マルチコアは電力性能比を高めるのに寄与する。コアの数を2倍にすると、消費電力は元のコア数と同じでも性能は最大で73%アップする。 ・スレッド(またはプロセス)が1つしかなければ、ディスクの読み書きなどのためにCPUの待ち時間が発生し無駄。 ・PCの電源ユニットは交流100Vを基板が必要とする直流12Vなどに変換する。このときに一部のエネルギーが熱として逃げる。 ・Googleの全プロジェクトの進捗状況はDBで管理されている ・コードレビュー:開発者同士がソースコードを通して、お互いの知識を交換。ノウハウの共有や学習の効果がある ・Googleの開発者の週報:プロジェクトで行っていること、困っていること、上手くいったことなどを書く。全社で共有し、 互いの進捗を把握したり、助言したりする。 ・Googleの開発者の四半期報:プロジェクトの目標、達成度をまとめる ・レビューシステム:Mondrian。独自システム。バグ管理システムTracに似ている。パッチを送る。コメントを付けられる。 ・Googleではテスト自動化のための専門のエンジニアのチームがある。効率的なテストを行うための仕組みを作る。 |