aboutsummaryrefslogblamecommitdiffstats
path: root/docs/architecture.plantuml
blob: 90985ba7b05207e118f93c86833584568d472343 (plain) (tree)







































































                                                             
@startuml
allowmixing

package Client {
    object "Query Interface" as query_interface
}

package Algebra {
    object "Unifier" as unifier
    object "Bytecode Builder" as bytecode_builder
    object "Parser" as parser
    object "Lexer" as lexer
}

query_interface --> lexer
lexer --> parser
parser --> unifier
unifier --> bytecode_builder

package Query {
    object "Schema Builder" as schema_builder
    object "Facts Builder" as facts_builder
    object "Optimizer" as optimizer
    object "Commands Generator" as commands_generator
    object "B+ Tree" as b_plus_tree
}

bytecode_builder --> optimizer
optimizer --> commands_generator
facts_builder --> commands_generator
schema_builder --> commands_generator
commands_generator --> b_plus_tree
b_plus_tree --> query_interface

package Coordinator {
    object "File Historical Hashes" as file_historical_hashes
    object "Location Hashes" as location_hashes
    object "Command Parser" as command_parser
    object "Curator" as curator
}

commands_generator <-- command_parser

package Disk {
    object "Merkle Tree Root Generator" as merkle_tree
    object "WAL Reader" as wal_reader
    object "WAL Writer" as wal_writer
    object "ARIES" as aries
    object "SHA256 Hasher" as sha
    object "Executor" as executor
    map storage {
        write => +λ
        read => +λ
    }
    object "Courier" as courier
    database Wal
}

executor *--> merkle_tree
executor *--> sha
curator --> command_parser
command_parser --> executor
location_hashes *--> curator
file_historical_hashes *--> curator
executor --> aries
aries --> wal_reader
aries --> wal_writer
wal_writer --> Wal
wal_reader --> Wal
courier <-- wal_reader
courier --> storage
@enduml