File: db

package info (click to toggle)
picolisp 3.1.0.7-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 4,100 kB
  • sloc: ansic: 14,205; lisp: 795; makefile: 290; sh: 13
file content (92 lines) | stat: -rw-r--r-- 3,531 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
   Max DB-Size: 7 digits -> 2**42 (4 Tera) Blocks
      Blocksize 64 -> (2**48 Bytes (256 TB))

   Tree
      NIL               -> (val *DB)
      {x}               -> (val '{x})
      (var . {x})       -> (get '{x} 'var)
      (var . +Cls)      -> (get *DB '+Cls 'var)
      (var +Cls . {x})  -> (get '{x} '+Cls 'var)

   B-Tree root:
      (cnt . node)

   B-Tree node:
      (less (key more . value) (key more . value) ..)

   Per node
      <Link> BEG EXTERN <6> .. NIX
      6+1+1+6+1 = 15

   Per key
      BEG TRANSIENT <key> EXTERN <7> DOT EXTERN <7>
      1+1+<key>+1+6+1+1+7 = 18 + <key>


   Key Arguments for DB- and Pilog-functions:

      123, {abc}        -> (123) (123 . T)
      T                 -> All
      "abc"             -> ("abc") ("abcT" . T)

      (a b)             -> (a b) (a b . T)
      ((a 1) b 2)       -> (a 1) (b 2 . T)
      ((1 . 3) (4 . 7)) -> (33 . 61)

      (a . b)           -> (a) (b . T)
      (b . a)           -> (b . T) (a)


   loaded/dirty/deleted

            |                 |                 |                 |
            |       (1)       |       (2)       |       (3)       |
            |                 |                 |                 |
   ---------+-----------------+-----------------+-----------------+
            |  load           |  load           |  empty          |
    NIL     |  -> loaded      |  -> dirty       |  -> deleted     |
            |                 |                 |                 |
   ---------+-----------------+-----------------+-----------------+
            |                 |                 |  empty          |
    loaded  |                 |  -> dirty       |  -> deleted     |
            |                 |                 |                 |
   ---------+-----------------+-----------------+-----------------+
            |                 |                 |  empty          |
    dirty   |                 |                 |  -> deleted     |
            |                 |                 |                 |
   ---------+-----------------+-----------------+-----------------+
            |                 |                 |                 |
    deleted |                 |                 |                 |
            |                 |                 |                 |


                |                 |                 |
                |     commit      |    rollback     |
                |                 |                 |
   -------------+-----------------+-----------------+
                |                 |                 |
        NIL     |                 |                 |
                |                 |                 |
   -------------+-----------------+-----------------+
                |                 |  empty          |
    (1) loaded  |                 |  -> NIL         |
                |                 |                 |
   -------------+-----------------+-----------------+
                |  save           |  empty          |
    (2) dirty   |  -> loaded      |  -> NIL         |
                |                 |                 |
   -------------+-----------------+-----------------+
                |  empty          |  empty          |
    (3) deleted |  -> NIL         |  -> NIL         |
                |                 |                 |



   +-----+-----+
   | V1  |  |  |
   +-----+--+--+
            |
            V
         +-----+-----+     +-----+-----+
         | P1  |  ---+---> |  N  |  ---+---> @@
         +-----+-----+     +-----+-----+