106 lines
2.1 KiB
Typst
106 lines
2.1 KiB
Typst
#import "/metadata.typ": *
|
|
#import "/tail/bibliography.typ": *
|
|
#import "/tail/glossary.typ": *
|
|
#import "/main/architecture/description.typ": *
|
|
|
|
#import "/resources/slides.typ": *
|
|
|
|
#import "/main/database/sequence.typ": *
|
|
// server
|
|
// mqtt->db
|
|
// db->rest
|
|
|
|
|
|
== Database & API - Server
|
|
#let server = [
|
|
#figure(
|
|
image("server.png", width: 100%),
|
|
caption: [Server implementation],
|
|
) <fig:server>
|
|
]
|
|
#grid(
|
|
columns: (1.5fr, 1fr),
|
|
column-gutter: 2em,
|
|
server,
|
|
align(top+left)[
|
|
#v(3em) #pause
|
|
- LXC Debian #pause
|
|
- @ssh:short certificate by user #pause
|
|
- Docker #pause
|
|
- Traefik
|
|
],
|
|
)
|
|
|
|
== Database & API - Save measures in DB
|
|
#let toDB = {
|
|
import chronos: *
|
|
b.display
|
|
mg.display
|
|
main.display
|
|
ig.display
|
|
db.display
|
|
_col(b.name, mg.name, width: 5cm)
|
|
_col(mg.name, main.name, width: 5cm)
|
|
_col(main.name, ig.name, width: 5cm)
|
|
_col(ig.name, db.name, width: 5cm)
|
|
}
|
|
|
|
#let toDB-seq = (
|
|
async(b, mg, "message"),
|
|
sync(mg, main, "DataPoint"),
|
|
sync(main, main, "map topics"),
|
|
sync(main, ig, "DataPoint"),
|
|
async(ig, db, "flush")
|
|
)
|
|
|
|
#set align(center+top)
|
|
#v(1em)
|
|
#figure(
|
|
box(height: 10cm, {
|
|
let diag = toDB
|
|
for (i, step) in toDB-seq.enumerate(start: 1) {
|
|
diag += step
|
|
only(i, chronos.diagram(diag, width: 90%))
|
|
}
|
|
}),
|
|
caption: [Sequence from broker to DB]
|
|
) <fig:seq:toDB>
|
|
|
|
|
|
== Database & API - Get data from DB
|
|
#let fromDB = {
|
|
import chronos: *
|
|
db.display
|
|
ig.display
|
|
main.display
|
|
rg.display
|
|
u.display
|
|
_col(db.name, ig.name, width: 5cm)
|
|
_col(ig.name, main.name, width: 5cm)
|
|
_col(main.name, rg.name, width: 5cm)
|
|
_col(rg.name, u.name, width: 5cm)
|
|
}
|
|
|
|
#let fromDB-seq = (
|
|
async(u, rg, "Request"),
|
|
sync(rg, main, "getNodes"),
|
|
sync(main, rg, "", dashed: true),
|
|
sync(rg, ig, "Query"),
|
|
sync(ig, db, ""),
|
|
sync(db, ig, "", dashed: true),
|
|
sync(ig, rg, "", dashed: true),
|
|
sync(rg, u, "", dashed: true),
|
|
)
|
|
|
|
#set align(center+top)
|
|
#v(1em)
|
|
#figure(
|
|
box(height: 11.75cm, {
|
|
let diag = fromDB
|
|
for (i, step) in fromDB-seq.enumerate(start: 1) {
|
|
diag += step
|
|
only(i, chronos.diagram(diag, width: 90%))
|
|
}
|
|
}),
|
|
caption: [Sequence to REST from DB]
|
|
) <fig:seq:fromDB> |