Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RDB以前のファイル設計の話でもしようか(ぇ

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 RDB以前のファイル設計の話でもしようか(ぇ

RDB 以前のファイル設計(データストア)についてまとめてみました。
他の実装もあるとは思いますが、一つの例ということで。

Avatar for tsuda.a

tsuda.a

June 26, 2024
Tweet

More Decks by tsuda.a

Other Decks in Programming

Transcript

  1. ランダムファイル • 固定長のファイル • たとえば、1レコードを 256Byte に固定して、その単位でアクセスする。 • ディスクのセクターに近いイメージ。 •

    途中の部分(レコード)の書き換えができる。 • 最近はプログラミングにおいて意識されることは少ない。
  2. ランダムファイルはこんな感じ ・ ・ ・ 1 2 3 4 5 6

    7 8 9 10 ・ ・ ・ 256 Byte レコード 番号 行(レコード)のサイズは固定
  3. アクセスはレコード単位で行う ・ ・ ・ 1 2 3 4 5 6

    7 8 9 10 ・ ・ ・ 256 Byte レコード 番号 たとえば、レコード6を読み書きしたい場合は、 ここだけアクセスできる。
  4. ディスクのセクターアクセスのようなイメージ • セクター : ディスクの最小の管理単位 • クラスター: OS(ファイルシステム)の最小の管理単位 複数のセクターから構成されることが多い。 •

    読み込む場合は、対象のセクター(またはクラ スター)のみ読み込む • 変更があった場合は、変更のあったセクター (またはクラスター)のみ書き換える。 セクター クラスター
  5. 構造体を使う。 • たとえばこんな構造体を作ってレコードを指定して読み書きする。 • 現在でいうところの(バイナリー)シリアライズ。 struct emp { // 合計

    256 Byte short emp_no char ename[10] char job[9] short mgr char hiredate[8] double sal double comm short number char dumy[207] } 注) この例ではバウンダリー(あるいはアライメント)は無視しています 参考)https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0%E3%82%A2%E3%83%A9%E3%82%A4%E3%83%A1%E3%83%B3%E3%83%88
  6. こんな感じのワークシート書いてました。 emp_ no ename job mgr hiredate sal comm numb

    er dummy dummy dummy dummy 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250
  7. そしてこうする Key 格納場所 7369 1 7499 3 7521 6 7566

    2 7654 4 7698 5 7782 8 EMPNO ENAME job mgr ・・・・ 1 7369 SMITH 2 7566 JONES 3 7499 ALLEN 4 7654 MARTIN 5 7698 BLAKE 6 7521 WARD 7 8 7782 CLARK インデックスファイル側 ランダムファイル(データ本体)側 ①キーを検索して、レコード 番号を取得する。 ➁取得したレコード番号の レコードを読み込む