Open tkardi opened 7 years ago
See jäi täpsustamata, et nii versioon
kui eraldi kustutamise aja veeru sisu ei tähista algallikas loomise/muutmise/kustutamise aega, vaid ajatemplit ühtlustatud kujul, mil andmed registrist vastaval kujul välja võeti ja vahebaasis loomine/muutmine/kustutamine tuvastati. Võib täiesti vabalt olla, et andmehulgas endas on sarnase semantikaga veerg juba olemas. Sellist ühtlustust kasutame ainult selleks, et sama lähendus kõikide tabelite/kihtide puhul kasutatav oleks.
Kuna teema vastu huvi ei ole olnud, siis panen selle hetkel ootele, kuid lihtsalt kollektiivse mälu jaoks paar täiendust siia. Lõpuks peaks kihi kohta olema võimalik pärida WFSist
a) uued read alates viimasest teadaolevast suurimast sys_id
väärtusest N:
../geoserver/workspace/ows?service=WFS&version=2.0.0&typename=workspace:layer&cql_filter=sys_id>N&...
b) muudetud read alates viimasest teadaolevast suurimast versioon
väärtusest M ja sys_id
väärtusest N (vt eelmine punkt):
../geoserver/workspace/ows?service=WFS&version=2.0.0&typename=workspace:layer&cql_filter=sys_id<=N and versioon>M&...
c) kustutatud objektide identifikaatorid eraldi logitabelist viimase teadaoleva suurima sys_logid
väärtusest L
../geoserver/workspace/ows?service=WFS&version=2.0.0&typename=log-workspace:layer-log&cql_filter=sys_logid>L&...
Üks asi veel, mis vajaks arutelu: kuna andmehulk, millest me nt #24 räägime on suhteliselt suur (1.5M+ andmerida juba puhtalt eraldistest, elementidest rääkimata), tuleks läbi mõelda, kuidas võimaldada "anna mulle ainult muudatused alates x ajahetkest"-stiilis päringud.
Elus objektide lisamiste ja muudatuste identifitseerimiseks sobib versiooni identifikaator veerus
versioon
, mis sisuliselt on rea loomise/viimase muutmise unix timestamp millisekundites. Pluss uussys_id
väärtus tähistab täiesti uut objekti.Kustutamiste/arhiveerimiste kindlakstegemisega on aga see, et teave nende kohta peaks liikuma eraldi "logitabeli kaudu", sest andmeomanike soovil ei sega arhiveeritud/kustutatud objekte kehtivate objektidega. NB! Antud kontekstis mõistame kustutamist ja arhiveerimist sünonüümsena: need on objektid, mis pole enam kehtivad.
Kuna igale kihile/tabelile pole logipidamist rakendatud, siis võiks luua logitabeli igale logi omavale kihile/tabelile (pigem iga eraldi, kui üks suur massiivne). Kas piisab, kui logis oleks vaid konkreetse tabeli rea identifikaator
sys_id
, versiooni identifikaatorversioon
(identifitseeriks kustutatud objekti viimast versiooni, ei kanna endas objekti kustutamise aega). Või on vaja esitada ka eraldi kustutamise ajatempel? Mis arvate sellest üldse?