データサイズのリアル

2022/2/20

thumbnail

概要

この記事では現実世界のシステムが扱うデータ量がどれくらいなのかを見ていきます。次のトピックを扱います。

  • Web サイトのデータサイズ
  • ファイルのサイズ
  • ハードウェアのキャパシティ
  • 世界的なサービスのデータボリューム

導入

現在アプリケーションは世界中の人々に使われています。世界中で使われているアプリケーションは次のような特徴があります。

  • ユーザ数が数百万
  • データ量がペタバイトからエクサバイト(TB-EB)
  • パフォーマンスは ms から μs
  • 毎秒数百万リクエスト

これらに耐えるシステムを設計するには、データ量への理解は欠かせません。さまざまの物のデータ量に触れることで、感覚を身につけていきましょう。

データサイズの単位

データサイズは単位は byte です。現在では 1byte は 8bit と定義されています。

データサイズは扱う桁数が大きいので接頭辞をつけて桁数を省略します。国際単位系(SI)では接頭辞は次のようになっています。

SymbolNameFactorPowerJPEN
kキロ10^310^3thousand
Mメガ10^3k10^6百万million
Gギガ10^3M10^9十億billion
Tテラ10^3G10^12一兆trillion
Pペタ10^3T10^15千兆quadrillion
Eエクサ10^3P10^18100 京quintillion

一方、 データサイズ の接頭辞は次のようになります。

SymbolNameFactor
Bバイト8bit
KBキロバイト1024B
MBメガバイト1024KB
GBギガバイト1024MB
TBテラバイト1024GB
PBペタバイト1024TB
EBエクサバイト1024PB

データは 2 進数として扱われているため 接頭辞は 1000 ごとではなく 2 の 8 乗である 1024 ごとになっています。国際単位系とは区別して KB ではなく KiB とする記法もありますが本記事では KB に統一します。

Web サイトのデータサイズ

Page Weightによると、Web サイトの構成要素のデータサイズは次のようになります。集計の対象期間は 2017/1 ~ 2022/1 で、対象はモバイルサイトです。

NameSize
Total1.96MB
HTML31.4KB
CSS68.9KB
JavaScript452KB
Font119KB
Image956KB
Video2.07 MB

1 ページあたりの合計サイズであってファイル 1 つあたりのサイズでないことの注意してください。JavaScript のサイズが想像より大きいと感じる人もいるかもしれません。JavaScript のサイズが大きくなる原因としては、フレームワークやライブラリのような外部パッケージのコードも含まれるためです。

ファイルのサイズ

ファイルの内容によってサイズは異なるので参考程度にしてください。サイズとフォーマットは参照元から適宜変換しています。またファイルフォーマットの良し悪しを比較する物ではありません。ファイルの特徴によって適切なファイルフォーマットが異なるからです。

NameSizecf.
Image - small JPG (size 320 x 320)21.0KBhttps://www.instagram.com/p/CZZyelKpmYf/
Image - small PNG (size 320 x 320)137KBhttps://www.instagram.com/p/CZZyelKpmYf/
Image - small WebP (size 320 x 320)16KBhttps://www.instagram.com/p/CZZyelKpmYf/
Image - large JPG (size 1036 x 1036)187KBhttps://www.instagram.com/p/CVoHltuF7_e/
Image - large PNG (size 1036 x 1036)1.38MBhttps://www.instagram.com/p/CVoHltuF7_e/
Image - large WebP (size 1036 x 1036)148KBhttps://www.instagram.com/p/CVoHltuF7_e/
Audio - music MP3 (playback time 3:01)5.80MBhttps://pixabay.com/music/beats-dont-you-think-lose-16073/
Movie - short MP4 720p (playback time 0:09)851KBhttps://www.youtube.com/shorts/Wm3F8kF9WAE
Movie - short WebM 720p (playback time 0:09)1.10MBhttps://www.youtube.com/shorts/Wm3F8kF9WAE
Movie - short GIF 720p (playback time 0:09)3.50MBhttps://www.youtube.com/shorts/Wm3F8kF9WAE
Document - PDF (4 pages)150KB-
Document - DOC (4 pages)100KB-
Document - XLSX (1000 rows)140KB-
Document - PPT (3 pages)248KB-
Application - Firefox 97.0.1 (Mac)364MBhttps://www.google.com/chrome/
Application - Discord 0.0.265 (Mac)193MBhttps://discord.com/
Application - Zoom 5.1.1 (Mac)52.5MBhttps://zoom.us/
Application - Xcode 13.2.1 (Mac)32.1GBhttps://developer.apple.com/xcode/

ハードウェアのキャパシティ

ハードウェアのメモリとストレージのデータサイズです。規格がないものに関しては目安を示しています。

NameSize
Memory - AWS EC2 instance t2.micro1GB
Memory - AWS EC2 instance T20.5GB ~ 32GB
Memory - AWS EC2 instance M55GB ~ 384GB
Memory - MacBook Pro 13 inch 20208GB ~ 16GB
Memory - MacBook Pro 14 inch 202116GB ~ 64GB
Memory - iPhone (1st generation)128MB
Memory - iPhone (13 Pro max)6GB
Storage - AWS EBS Provisioned HDD125GB ~ 16TB
Storage - AWS EBS Provisioned IOPS SSD4GB ~ 16TB
Storage - AWS RDS SSD20GB ~ 64TB
Storage - MacBook Pro 13 inch 2020 SSD256GB ~ 2TB
Storage - MacBook Pro 14 inch 2021 SSD1TB ~ 8TB
Storage - iPhone (1st generation)4 ~ 16GB
Storage - iPhone (13 Pro max)128GB ~ 1TB
Storage - Floppy Disk720KB ~ 1.44MB
Storage - Compact Disk650 ~ 700MB
Storage - DVD4.7GB ~ 8.5GB
Storage - Blu-ray25GB ~ 128GB
Storage - USB memory32GB ~ 256GB

世界的なサービスのデータボリューム

Data Never Sleepsによると実際のアプリケーションで作成されているデータは次のようになります。

NameVolume per secondVolume per minuteVolume per dayVolume per year
Twitter tweet9.58K tweet/sec575K tweet/min828M tweet/day302G tweet/year
Instagram photo1.08K photo/sec65K photo/min93.6M photo/day34.2G photo/year
Slack message2.47K message/sec148K message/min213M message/day77.8G message/year

次はバイト単位でみてみます。Twitter の 1 tweet を 100 文字かつ一文字は 1 バイトをします。そうすると 1tweet は 0.1KB になります。Instagram の 1photo は 0.1MB とします。Slack の 1 message は 50 文字かつ一文字を 1 バイトとします。そうすると 1message は 0.05KB となります。これらのことを踏まえると 1 年間で増えるデータ量は次のようになります。

NameSize per year
Twitter tweet30.2TB/year
Instagram photo3.42PB/year
Slack message3.89TB/year

1 年間サービスを運用するとテラバイト以上のデータが蓄積されていきます。これほどのデータ量を 1 つのサーバに保存するのは難しいので、データベースのパーティションを行う必要があります。

余談

データ量ではなく、どれくらいのユーザがサービスを使っているかを見てみます。statistaによると、世界の有名サービスの月間ユーザ数は次のようになっています。

NameThe number of users
Facebook2.91G
Youtube2.56G
Instagram1.48G
TikTok1.00G
Facebook Messenger998M
Twitter444M

2021 年の世界人口は 78.7 億人なので、Facebook は世界人口の 40%近くが使っていることになります。

また、国内の有名サービスは次のようになっています。

2021 の日本の人口は 1.26 億人なので、日本人の 60%が LINE を使っていることになります。


author

Koki Kitamura

医療系の会社のアプリケーションエンジニアです。フロントエンド、バックエンド、インフラでそれぞれ新規開発と保守運用の経験があります。OSS活動も行っており、PRを送った経験と送られた経験の両方あります。はてブのテクノロジーの人気エントリーに技術記事が載ったこともあります。