2022/2/20
この記事では現実世界のシステムが扱うデータ量がどれくらいなのかを見ていきます。次のトピックを扱います。
現在アプリケーションは世界中の人々に使われています。世界中で使われているアプリケーションは次のような特徴があります。
これらに耐えるシステムを設計するには、データ量への理解は欠かせません。さまざまの物のデータ量に触れることで、感覚を身につけていきましょう。
データサイズは単位は byte です。現在では 1byte は 8bit と定義されています。
データサイズは扱う桁数が大きいので接頭辞をつけて桁数を省略します。国際単位系(SI)では接頭辞は次のようになっています。
Symbol | Name | Factor | Power | JP | EN |
---|---|---|---|---|---|
k | キロ | 10^3 | 10^3 | 千 | thousand |
M | メガ | 10^3k | 10^6 | 百万 | million |
G | ギガ | 10^3M | 10^9 | 十億 | billion |
T | テラ | 10^3G | 10^12 | 一兆 | trillion |
P | ペタ | 10^3T | 10^15 | 千兆 | quadrillion |
E | エクサ | 10^3P | 10^18 | 100 京 | quintillion |
一方、 データサイズ の接頭辞は次のようになります。
Symbol | Name | Factor |
---|---|---|
B | バイト | 8bit |
KB | キロバイト | 1024B |
MB | メガバイト | 1024KB |
GB | ギガバイト | 1024MB |
TB | テラバイト | 1024GB |
PB | ペタバイト | 1024TB |
EB | エクサバイト | 1024PB |
データは 2 進数として扱われているため 接頭辞は 1000 ごとではなく 2 の 8 乗である 1024 ごとになっています。国際単位系とは区別して KB ではなく KiB とする記法もありますが本記事では KB に統一します。
Page Weightによると、Web サイトの構成要素のデータサイズは次のようになります。集計の対象期間は 2017/1 ~ 2022/1 で、対象はモバイルサイトです。
Name | Size |
---|---|
Total | 1.96MB |
HTML | 31.4KB |
CSS | 68.9KB |
JavaScript | 452KB |
Font | 119KB |
Image | 956KB |
Video | 2.07 MB |
1 ページあたりの合計サイズであってファイル 1 つあたりのサイズでないことの注意してください。JavaScript のサイズが想像より大きいと感じる人もいるかもしれません。JavaScript のサイズが大きくなる原因としては、フレームワークやライブラリのような外部パッケージのコードも含まれるためです。
ファイルの内容によってサイズは異なるので参考程度にしてください。サイズとフォーマットは参照元から適宜変換しています。またファイルフォーマットの良し悪しを比較する物ではありません。ファイルの特徴によって適切なファイルフォーマットが異なるからです。
Name | Size | cf. |
---|---|---|
Image - small JPG (size 320 x 320) | 21.0KB | https://www.instagram.com/p/CZZyelKpmYf/ |
Image - small PNG (size 320 x 320) | 137KB | https://www.instagram.com/p/CZZyelKpmYf/ |
Image - small WebP (size 320 x 320) | 16KB | https://www.instagram.com/p/CZZyelKpmYf/ |
Image - large JPG (size 1036 x 1036) | 187KB | https://www.instagram.com/p/CVoHltuF7_e/ |
Image - large PNG (size 1036 x 1036) | 1.38MB | https://www.instagram.com/p/CVoHltuF7_e/ |
Image - large WebP (size 1036 x 1036) | 148KB | https://www.instagram.com/p/CVoHltuF7_e/ |
Audio - music MP3 (playback time 3:01) | 5.80MB | https://pixabay.com/music/beats-dont-you-think-lose-16073/ |
Movie - short MP4 720p (playback time 0:09) | 851KB | https://www.youtube.com/shorts/Wm3F8kF9WAE |
Movie - short WebM 720p (playback time 0:09) | 1.10MB | https://www.youtube.com/shorts/Wm3F8kF9WAE |
Movie - short GIF 720p (playback time 0:09) | 3.50MB | https://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) | 364MB | https://www.google.com/chrome/ |
Application - Discord 0.0.265 (Mac) | 193MB | https://discord.com/ |
Application - Zoom 5.1.1 (Mac) | 52.5MB | https://zoom.us/ |
Application - Xcode 13.2.1 (Mac) | 32.1GB | https://developer.apple.com/xcode/ |
ハードウェアのメモリとストレージのデータサイズです。規格がないものに関しては目安を示しています。
Name | Size |
---|---|
Memory - AWS EC2 instance t2.micro | 1GB |
Memory - AWS EC2 instance T2 | 0.5GB ~ 32GB |
Memory - AWS EC2 instance M5 | 5GB ~ 384GB |
Memory - MacBook Pro 13 inch 2020 | 8GB ~ 16GB |
Memory - MacBook Pro 14 inch 2021 | 16GB ~ 64GB |
Memory - iPhone (1st generation) | 128MB |
Memory - iPhone (13 Pro max) | 6GB |
Storage - AWS EBS Provisioned HDD | 125GB ~ 16TB |
Storage - AWS EBS Provisioned IOPS SSD | 4GB ~ 16TB |
Storage - AWS RDS SSD | 20GB ~ 64TB |
Storage - MacBook Pro 13 inch 2020 SSD | 256GB ~ 2TB |
Storage - MacBook Pro 14 inch 2021 SSD | 1TB ~ 8TB |
Storage - iPhone (1st generation) | 4 ~ 16GB |
Storage - iPhone (13 Pro max) | 128GB ~ 1TB |
Storage - Floppy Disk | 720KB ~ 1.44MB |
Storage - Compact Disk | 650 ~ 700MB |
Storage - DVD | 4.7GB ~ 8.5GB |
Storage - Blu-ray | 25GB ~ 128GB |
Storage - USB memory | 32GB ~ 256GB |
Data Never Sleepsによると実際のアプリケーションで作成されているデータは次のようになります。
Name | Volume per second | Volume per minute | Volume per day | Volume per year |
---|---|---|---|---|
Twitter tweet | 9.58K tweet/sec | 575K tweet/min | 828M tweet/day | 302G tweet/year |
Instagram photo | 1.08K photo/sec | 65K photo/min | 93.6M photo/day | 34.2G photo/year |
Slack message | 2.47K message/sec | 148K message/min | 213M message/day | 77.8G message/year |
次はバイト単位でみてみます。Twitter の 1 tweet を 100 文字かつ一文字は 1 バイトをします。そうすると 1tweet は 0.1KB になります。Instagram の 1photo は 0.1MB とします。Slack の 1 message は 50 文字かつ一文字を 1 バイトとします。そうすると 1message は 0.05KB となります。これらのことを踏まえると 1 年間で増えるデータ量は次のようになります。
Name | Size per year |
---|---|
Twitter tweet | 30.2TB/year |
Instagram photo | 3.42PB/year |
Slack message | 3.89TB/year |
1 年間サービスを運用するとテラバイト以上のデータが蓄積されていきます。これほどのデータ量を 1 つのサーバに保存するのは難しいので、データベースのパーティションを行う必要があります。
データ量ではなく、どれくらいのユーザがサービスを使っているかを見てみます。statistaによると、世界の有名サービスの月間ユーザ数は次のようになっています。
Name | The number of users |
---|---|
2.91G | |
Youtube | 2.56G |
1.48G | |
TikTok | 1.00G |
Facebook Messenger | 998M |
444M |
2021 年の世界人口は 78.7 億人なので、Facebook は世界人口の 40%近くが使っていることになります。
また、国内の有名サービスは次のようになっています。
Name | The number of users | cf. |
---|---|---|
LINE(月間利用者数) | 86.0M | https://www.linebiz.com/sites/default/files/media/jp/download/LINE%20Business%20Guide_202101-06_summary_v1.pdf |
note(月間アクティブユーザ) | 63.0M | https://note.jp/n/n705929417079 |
PayPay(登録ユーザ数) | 40.0M | https://about.paypay.ne.jp/pr/20210617/01/ |
メルカリ(月間利用者数) | 20.0M | https://about.mercari.com/press/news/articles/20211005_20millionmau/ |
2021 の日本の人口は 1.26 億人なので、日本人の 60%が LINE を使っていることになります。
Koki Kitamura
医療系の会社のアプリケーションエンジニアです。フロントエンド、バックエンド、インフラでそれぞれ新規開発と保守運用の経験があります。OSS活動も行っており、PRを送った経験と送られた経験の両方あります。はてブのテクノロジーの人気エントリーに技術記事が載ったこともあります。