Yikes, dus interne en externe mensen mogen vrijelijk query's maken in die data? En staan er dan nog SLA's / afspraken op dat die data beschikbaar is?
Want het data-model van metingen is (in basis) supersimpel. Echter heb je dan wel een riskant data-model want je krijgt grote tabellen en het nadeel met grote tabellen is dat je ze wel goed moet aanspreken anders heb je grote kans op locking-issues en ik begrijp dat jij geen invloed hebt op hoe ze aangesproken worden?
Oftewel wat gebeurt er als stagiair bij externe firma 3 jouw database locked voor een half uur en alle andere klanten er niet bij kunnen?
Als ik het goed begrijp is de data enkel maar een kopie van andere data en enkel om het te ontsluiten? Want dan zou ik zeggen : No necessary backup. En dan wordt schijfruimte opeens cheap.
Dan zou ik gewoon tig tabellen oid opzetten, waarbij overal de metingsnamen weggenormaliseerd zijn.
01 bevat dan alles
02 is bijv een uurlijkse aggregatie die alleen uurgemiddelden heeft
03 is bijv een nachtelijke aggregatie die alleen dagelijkse gemiddelden heeft
04 bevat dan wekelijkse gemiddelden
etc.
11 bevat dan bijv hetzelfde als 1 maar dan enkel van de laatste maand
21 bevat dan bijv hetzelfde als 1 maar dan enkel van de laatste week
En dat hele setje in stand houden met triggers en scheduled functies (enkel 1 wordt extern gevuld).
Zo kan je iedereen richting een bepaalde dataset duwen die voor die toepassing geschikt is.
Bijv een maandelijks rapport van de verbruikte energie dat heeft niet daadwerkelijk elke seconde / milliseconde data nodig, dat rapporteert reeel slechts per uur over de laatste maand oftewel die zou genoeg hebben aan tabel 12 (uurlijkse aggregatie van de laatste maand). En dit geldt zeer waarschijnlijk voor alle maandelijkse rapportages, oftewel 1x aggregeren en dan uit die tabel rapporteren.
Zo verlaag je de kans dat een externe het hele systeem platlegt met een verkeerde query (selfjoin over selfjoin over selfjoin bijv)
Hydra schreef op zaterdag 26 november 2016 @ 10:43:
[...]
Exact dit. Bij dit soort data volumes gelden de standaard regels wat betreft databases en hoe je dingen inricht vaak een stuk minder. In echt 'big data' land hebt je een datastore die goed om kan gaan met dergelijke volumes data (wij gebruiken zelf Cassandra, die schaalt vrijwel linear) en daarnaast 'read' datastores (in CQRS termen) die de aggregaties voor de verschillende rapportages bevatten.
Alleen hij beweert hier niet in big data land te zitten, maar wel te zitten met dat schijnbaar iedereen alles en alles moet kunnen query'en met tools die voornamelijk sql praten.
Ik vind het een redelijk krankzinnige eis dat iedereen maar alles en alles moet kunnen queryen met sql tools, maar als dat de business case is dan is dat de business case...