aboutsummaryrefslogblamecommitdiffstats
path: root/docs/system-overview.puml
blob: 8d76fc563c11a4b393974de966c018ea3d849e6c (plain) (tree)
















































































                                                                             
@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