🍣

DBってどうやってデータを保持してるんだっけ

に公開

いい質問です。「データベースは、大量のレコードをどうやって保存しているのか?」という疑問は、単なる「テキストで保存してる?」というレベルから一歩踏み込んだ、実践的で重要な視点です。結論からいうと:


✅ データベース(特にRDB)は、バイナリ形式のデータファイルに効率的な構造で保存しています。


💡 詳しく分解すると:

📦 1. ストレージ形式:バイナリ形式

  • テキストファイルのような .csv.txt に保存するわけではなく、専用のバイナリフォーマットでディスクに保存されます。

  • 例:

    • PostgreSQL → base/ ディレクトリにバイナリ形式で保存
    • MySQL → InnoDB(.ibdファイルなど)で管理

📚 2. データ構造:ページ・ブロック・B+木

  • ディスクは**固定サイズのブロック(例:8KB)**に分かれていて、そこにデータを詰め込む。
  • データは**B+木(インデックス)ヒープファイル(順不同のデータ集合)**として管理される。
  • よく使うカラムはインデックス化して、高速検索を実現

🧠 3. メモリキャッシュとの連携

  • 書き込むとき:まずメモリ(バッファプール)に書いてから、後でディスクに書く(WALログ)。
  • 読み込むとき:よく使うデータはキャッシュに置く(= 高速化)。

🔄 まとめると:

仕組み 内容
保存形式 バイナリ(CSVなどではない)
保存構造 ページ、ブロック、B+木など
最適化技術 インデックス、キャッシュ、遅延書き込み

つまり、「人が見やすいテキスト」で保存するのではなく、読み書きが速く・効率的な機械向けの構造で保存しているんです。

必要なら「NoSQL(MongoDBなど)はどう保存してるのか?」や「PostgreSQLとMySQLで違いがあるか?」なども掘り下げられますよ。興味ありますか?

Discussion