全世界の人間をDB化したら、どれくらいのデータ量になるのか

「全世界の人間をデータベースに入れたら、どれくらいの容量が必要なのか?」

これは一見すると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 BIGINT
full_name VARCHAR(200)
birth_date DATE
sex CHAR(1)
country_code CHAR(2)
created_at TIMESTAMP
updated_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 TB
1人あたり500 KB: 約4.15 PB
1人あたり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人を何バイトで表現するか」で決まります。