diff options
| author | Marcos Magueta <maguetamarcos@gmail.com> | 2024-10-26 14:26:10 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-26 14:26:10 -0300 |
| commit | 2eab114a120c7818861c0640ecdc300cf7366e53 (patch) | |
| tree | beb69c7038d79d8ca77d072d6f3afb144b5ff891 /docs | |
| parent | da309e886e31e6d55e46339647d56769d417114e (diff) | |
| download | Sakura-2eab114a120c7818861c0640ecdc300cf7366e53.tar.gz Sakura-2eab114a120c7818861c0640ecdc300cf7366e53.zip | |
Basic storage with C interop (#1)
* writer command design
* dune build with shared core lib
* port c lib project inside ocaml
* os specific dynamic link
* fix project name on flake
* fix: cmake cxx version breaking merklecpp
* finish write to disk and update maps func
* add non atomic commit to transaction graph
* merkle tree binding for generating root hash
* disk module refactor
---------
Co-authored-by: Renan Lopes <renans.l@icloud.com>
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/architecture.plantuml | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/docs/architecture.plantuml b/docs/architecture.plantuml new file mode 100644 index 0000000..90985ba --- /dev/null +++ b/docs/architecture.plantuml @@ -0,0 +1,72 @@ +@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
\ No newline at end of file |
