
「全世界の人間をデータベースに入れたら、どれくらいの容量が必要なのか?」
これは一見するとSFっぽい問いですが、実はデータベース設計の感覚をつかむにはかなり良い題材です。1,000万行のテーブルにカラムを1つ追加したときの容量増加を考える延長線上で、対象を「全人類」に広げると、スケール感が一気に見えてきます。
結論から言うと、全人類を1人1レコードで管理するだけなら、必要なデータ量は意外と小さいです。基本属性だけなら数TBから数十TB程度。顔写真、本人確認書類、住所履歴、監査ログまで含めると、PB級の世界に入ります。
前提: 世界人口を約83億人とする
ここでは世界人口をざっくり83億人とします。
つまり、DBの行数は次のようになります。
8,300,000,000 rows
普段の業務DBで1,000万行というとそれなりに大きいテーブルですが、全人類を相手にすると830倍です。とはいえ、1レコードあたりのサイズが小さければ、保存容量そのものはまだ現実的な範囲に収まります。
最小構成: IDだけなら100GB前後
極端に単純化して、全人類に一意なIDだけを振るとします。
例えば、BIGINT でIDを持つ場合、1人あたり8 bytesです。
83億人 × 8 bytes = 66.4 GB
UUIDのように16 bytesで持つなら、
83億人 × 16 bytes = 132.8 GB
つまり、「人間を識別するIDの一覧」だけなら、100GB前後で収まります。
この時点ではかなり小さく感じます。現代のストレージ感覚では、個人用PCでも扱えそうなサイズです。
ただし、これはあくまで理論値です。実際のRDBでは、行ヘッダ、ページ管理、インデックス、空き領域、断片化などが乗ります。それでも、IDだけなら数百GB程度で済むでしょう。
基本属性を持たせると数TBになる
次に、人間らしい情報を少し追加します。
例えば、次のようなカラムを持つ人物マスタを考えます。
person_id BIGINTfull_name VARCHAR(200)birth_date DATEsex CHAR(1)country_code CHAR(2)created_at TIMESTAMPupdated_at TIMESTAMP
この程度であれば、1人あたりのデータ量はだいたい100〜300 bytesくらいに収まる可能性があります。
仮に1人あたり200 bytesとすると、
83億人 × 200 bytes = 1.66 TB
データ本体だけなら2TB弱です。
ただし、DBではインデックスが必要になります。person_id の主キーインデックス、国別検索用のインデックス、生年月日や名前検索のためのインデックスなどを追加すると、容量は膨らみます。
実務的には、データ本体の2〜5倍程度を見ておくのが自然です。
本体: 1〜3 TBインデックス込み: 3〜10 TB運用余裕込み: 10〜30 TB
このくらいが、かなりシンプルな全人類人物マスタの目安です。
住所・電話・メールを入れると10TB級になる
もう少し現実的な個人情報DBにすると、1人あたりのデータ量は増えます。
例えば、次のような情報を持つケースです。
- 氏名
- 生年月日
- 性別
- 国籍
- 住所
- 電話番号
- メールアドレス
- ステータス
- 作成日時
- 更新日時
この場合、1人あたり500 bytes〜1KBくらいは見ておいた方がよいです。
1KBで計算すると、
83億人 × 1 KB = 約8.3 TB
ここにインデックス、監査ログ、バックアップ、レプリカを加えると、実運用では数十TBから100TB程度まで見えてきます。
データ本体: 5〜10 TBインデックス込み: 10〜30 TBバックアップ・レプリカ込み: 30〜100 TB
ここまで来ると個人PCの世界ではなくなりますが、クラウドや大規模DB基盤としては十分に現実的なサイズです。
顔写真を入れた瞬間に桁が変わる
データ量を大きく変えるのは、テキスト情報ではなく画像です。
顔写真のサムネイルを1人あたり20KBで持つとします。
83億人 × 20 KB = 約166 TB
1人あたり100KBなら、
83億人 × 100 KB = 約830 TB
この時点で、人物マスタ本体とは桁が違います。
さらに、本人確認書類の画像、原本写真、複数の顔写真、変更履歴、アップロード履歴を持たせると、すぐにPB級になります。
1人あたり100 KB: 約830 TB1人あたり500 KB: 約4.15 PB1人あたり1 MB: 約8.3 PB
つまり、「全人類の基本属性DB」と「全人類の本人確認DB」は、まったく別物です。
検索用インデックスも無視できない
DBでは、データを保存するだけでは不十分です。検索できなければ意味がありません。
例えば、次のような検索要件があるとします。
- IDで1人を即時検索したい
- 国別に一覧したい
- 名前で検索したい
- 生年月日で絞り込みたい
- 電話番号やメールアドレスで照合したい
- 顔認証用の特徴量で近似検索したい
IDや国コードのような単純なインデックスは比較的軽いですが、名前検索や全文検索、顔認証ベクトル検索は重くなります。
特に顔認証や類似検索のためにベクトルを持つ場合、例えば1人あたり512次元のfloatベクトルを保存するとします。
float32なら1要素4 bytesなので、
512 × 4 bytes = 2,048 bytes
つまり、顔特徴量だけで1人あたり約2KBです。
83億人 × 2 KB = 約16.6 TB
さらにANN検索用のインデックスを構築すれば、追加で同程度以上の容量が必要になる可能性があります。
実際の運用ではバックアップとレプリカが効く
本番システムでは、DB本体だけを見積もっても不十分です。
最低でも次のような追加容量が必要です。
- 主系DB
- レプリカDB
- バックアップ
- WAL/binlog
- 一時領域
- 再インデックス用の作業領域
- 分析基盤へのコピー
- 障害復旧用のスナップショット
例えば、本体とインデックスで20TBのDBがあったとしても、運用全体では100TB以上必要になることは普通にあります。
本番DB: 20 TBリードレプリカ: 20 TBバックアップ: 40 TBログ・一時領域: 10 TB分析用コピー: 20 TB合計: 110 TB
保存する情報がテキスト中心なら、全人類規模でも「数十TB〜数百TB」の範囲で考えられます。
画像や本人確認書類を含めるなら、PB級の設計が必要になります。
ざっくり結論
全世界の人間をDB化した場合のデータ量は、保存する情報によって大きく変わります。
| 管理内容 | 1人あたり | 全人類分の目安 |
| IDだけ | 8〜16 bytes | 約66〜133 GB |
| 基本属性 | 100〜300 bytes | 約0.8〜2.5 TB |
| 住所・連絡先つき人物マスタ | 500 bytes〜1 KB | 約4〜8 TB |
| 実務DB、インデックス込み | 1〜3 KB | 約8〜25 TB |
| 顔写真サムネイルつき | 20〜100 KB | 約166〜830 TB |
| 本人確認書類・履歴つき | 100KB〜1MB以上 | 約0.8〜8 PB以上 |
要するに、テキスト中心の人物マスタなら、全人類規模でも数TB〜数十TBです。これは大きいですが、現代のクラウド基盤では十分に扱えるサイズです。
一方で、顔写真、本人確認書類、履歴、監査ログ、検索用ベクトルまで含めると、桁が一気に上がります。その場合はPB級のストレージ設計、分散DB、オブジェクトストレージ、データライフサイクル管理が前提になります。
面白いのは、「83億人」という数字そのものよりも、1人あたりのデータ設計が全体容量を支配することです。
1人あたり100 bytesなら1TB未満から数TB。 1人あたり1KBなら約8TB。 1人あたり100KBなら約830TB。 1人あたり1MBなら約8.3PB。
つまり、全人類DBの容量は、人口よりも「1人を何バイトで表現するか」で決まります。