🍣
DBってどうやってデータを保持してるんだっけ
いい質問です。「データベースは、大量のレコードをどうやって保存しているのか?」という疑問は、単なる「テキストで保存してる?」というレベルから一歩踏み込んだ、実践的で重要な視点です。結論からいうと:
✅ データベース(特にRDB)は、バイナリ形式のデータファイルに効率的な構造で保存しています。
💡 詳しく分解すると:
📦 1. ストレージ形式:バイナリ形式
-
テキストファイルのような
.csv
や.txt
に保存するわけではなく、専用のバイナリフォーマットでディスクに保存されます。 -
例:
- PostgreSQL →
base/
ディレクトリにバイナリ形式で保存 - MySQL → InnoDB(.ibdファイルなど)で管理
- PostgreSQL →
📚 2. データ構造:ページ・ブロック・B+木
- ディスクは**固定サイズのブロック(例:8KB)**に分かれていて、そこにデータを詰め込む。
- データは**B+木(インデックス)やヒープファイル(順不同のデータ集合)**として管理される。
- よく使うカラムはインデックス化して、高速検索を実現。
🧠 3. メモリキャッシュとの連携
- 書き込むとき:まずメモリ(バッファプール)に書いてから、後でディスクに書く(WALログ)。
- 読み込むとき:よく使うデータはキャッシュに置く(= 高速化)。
🔄 まとめると:
仕組み | 内容 |
---|---|
保存形式 | バイナリ(CSVなどではない) |
保存構造 | ページ、ブロック、B+木など |
最適化技術 | インデックス、キャッシュ、遅延書き込み |
つまり、「人が見やすいテキスト」で保存するのではなく、読み書きが速く・効率的な機械向けの構造で保存しているんです。
必要なら「NoSQL(MongoDBなど)はどう保存してるのか?」や「PostgreSQLとMySQLで違いがあるか?」なども掘り下げられますよ。興味ありますか?
Discussion