From 2eab114a120c7818861c0640ecdc300cf7366e53 Mon Sep 17 00:00:00 2001 From: Marcos Magueta Date: Sat, 26 Oct 2024 14:26:10 -0300 Subject: 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 --- docs/architecture.plantuml | 72 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 docs/architecture.plantuml (limited to 'docs/architecture.plantuml') 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 -- cgit v1.2.3