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

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

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

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

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 インデックスファイル側 ランダムファイル(データ本体)側 ①キーを検索して、レコード 番号を取得する。 ➁取得したレコード番号の レコードを読み込む