aboutsummaryrefslogtreecommitdiffstats
path: root/docs/system-overview.puml
blob: 8d76fc563c11a4b393974de966c018ea3d849e6c (plain) (blame)
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
@startuml system-overview
!theme plain
title Domino System Overview

package "Client Interfaces" {
  [XML Server\n(TCP/IP Port 8080)] as XML
  [REPL\n(Interactive Shell)] as REPL
  [Direct API\n(Erlang Apps)] as API
}

package "Query Processing Layer" {
  package "Query Planner" {
    [DSL Parser] as Parser
    [Plan Validation\n& Compilation] as Validator
  }

  package "Volcano Iterator Model" {
    [Scan Iterator] as Scan
    [Select Iterator] as Select
    [Project Iterator] as Project
    [Sort Iterator] as Sort
    [Take Iterator] as Take
    [Join Iterators] as Join
  }
}

package "Operations Layer (API)" {
  [Database Management] as DBMgmt
  [Relation Operations] as RelOps
  [Tuple Operations] as TupleOps
  [Iterator Management] as IterMgmt
}

package "Data Model Layer" {
  [Core Abstractions\nattribute, tuple,\nrelation, database_state] as CoreAbs
  [Finite Relations\n(Merkle Trees)] as Finite
  [Infinite Relations\n(Generators)] as Infinite
}

package "Content-Addressed Storage" {
  database "Mnesia" {
    [attribute table] as AttrTable
    [tuple table] as TupleTable
    [relation table] as RelTable
    [database_state table] as DBTable
  }
}

XML --> Parser
REPL --> Parser
API --> Parser

Parser --> Validator
Validator --> Scan

Scan --> Select
Select --> Project
Project --> Sort
Sort --> Take
Join --> Take

Scan --> TupleOps
Select --> IterMgmt
Project --> IterMgmt

DBMgmt --> CoreAbs
RelOps --> CoreAbs
TupleOps --> CoreAbs
IterMgmt --> CoreAbs

CoreAbs --> Finite
CoreAbs --> Infinite

Finite --> AttrTable
Finite --> TupleTable
Finite --> RelTable
Finite --> DBTable

Infinite --> AttrTable

@enduml