C/C++の宿題を片付けます 113代目

このエントリーをはてなブックマークに追加
871デフォルトの名無しさん
>>863
ネタ回答でもしておくか。

問1 サイズが一定でなく、その平均が100バイトであるレコードからなるデータがある。
このとき以下の件数を管理するための適切な方法を述べよ。
(1) 200,000件
(2) 500,000,000件
(3) 10,000,000,000件

(1) オンメモリでOK。データは配列で操作し、構造体のCRCコードをハッシュ値として使い探索することを前提とする。
100byte+管理するための領域を加えて0.2KBと見積もる。
200k件×0.2KB=40MB。

(2) 1ファイルに対するディスク上の最小サイズであるクラスタサイズを
4KBと仮定すると、平均40レコード格納できるが、実際には長い・短いがあるため
余裕を見て20レコードまでとする。
500M件/20レコード×4KB = 100GB なのでハードディスクで格納できる。

(3)既に(2)で1台のPCが管理できるれコード数は500M件と分かっているため、
このレコード数を管理するためには最低20台が必要である。

ただし、この場合複数台のPCのどれもが故障してはいけない状態となるため、
ミラーリングなどを施したりバックアップを容易にとれる構成としなければならない。