Toon posts:

Bijhouden van uitgevoerde taken in SQL

Pagina: 1
Acties:

Vraag


  • .Vii
  • Registratie: Juli 2014
  • Laatst online: 09-05 21:04
Mijn vraag

Momenteel ben ik een applicatie aan het (her) ontwikkelen welke voorziet in de doorstroom en tussen punt om diverse andere systemen van informatie te voorzien daarnaast zorgt deze applicatie voor het centrale punt waar de informatie over een specifiek object van al deze applicaties beschikbaar is.

Nu komt het voor dat deze applicatie background jobs uitvoert om bepaalde taken uit te voeren. Deze taken kunnen varieren van een intern proces van de applicatie zelf tot het wachten tot een andere applicatie iets heeft uitgevoerd om vervolgens door te gaan naar het volgende proces.

En dat laatste zit ik een momenteel een beetje mee.

Ik ben nu een proces aan het schrijven welke een 1000 tal documenten ontvangt doorstuurt naar een externe applicatie (die doet er vervolgens wat mee) en ik vervolgens van al deze 1000 documenten en seintje moet krijgen "Ja akkoord we kunnen door".

Nu wil ik dit vast leggen dat dat seintje is gegeven en dat alle 1000 documenten ook daadwerkelijk het seintje hebben gekregen. Echter kan het ook voorkomen dat het niet gelukt is uiteraard wil ik dit signaal ook gelogd hebben. (Zodat ik weet dat ik niet door kan naar de volgende stap)


Relevante software en hardware die ik gebruik
PHP 7+
Laravel 5.7
Windows (Requirement)
Apache
Microsoft SQL (2008 r2, yeah I know outdated)

Wat ik al gevonden of geprobeerd heb

Ik zelf dacht er aan om een volgende SQL tabel aan te maken:
events
- id (auto increment, integer)
- event (naam van event, varchar(200))
- event_ref_id (dit ID kan refereren naar verschillende objecten binnen de database, integer en een soort van flexibele foreign key)
- event_result (bit)
- event_message (varchar(200))
Nu kan het zijn dat ik later meer wil gaan loggen dan alleen of de ping naar deze externe applicatie is gelukt voor het betreffende document maar ook dat bijvoorbeeld de metadata extractie is gelukt voor het betreffende document.

Hiervoor heb ik de kolom "event" gemaakt zodat ik hierop kan splitsen.

De documenten waar ik het over heb komen samen in een "documentenset" welke gecombineerd bijvoorbeeld geprint moeten worden. Dit wil ik later ook gaan loggen of het combineren is gelukt. Hierdoor heb ik de kolom "event_ref_id" gemaakt vanwege dat deze kolom referenties naar verschillende tabellen in mijn database kan hebben (waar bij het versturen naar de applicatie zoals in mijn voorbeeld het id van het document bevat zal het bij het samenvoegen naar een documentenset het id van de documentenset bevatten).

Mijn vraag is, is dit een logische keus om dit zo te doen?
De tabel kan vrij snel vrij groot worden (Nu met de juiste indexxen op event en event_ref_id het een stuk sneller zal maken). Echter misschien als jullie dit verhaal lezen dat jullie denken, nou dit kan je beter zo of zo doen.

Alle reacties


  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 11:08
Ben je niet bezig het "logging" wiel opnieuw uit te vinden? Ik zou dan naar een logging server gaan waar je goed in kan zoeken en vanuit meerdere talen naar kan loggen.

Engineering is like Tetris. Succes disappears and errors accumulate.


  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 16:17
Normaal is SQL wel geschikt voor het bijhouden van duizenden regels, en zoals je aangeeft zou je extra indexen op andere kolommen kunnen aanmaken om de boel te versnellen.

Ik zou in ieder geval een datum/tijd of timestamp kolom opnemen zodat je weet wanneer een document was verstuurd.
Daarnaast gebruik je varchar i.p.v. nvarchar waardoor je geen bijzondere talen ondersteunt zoals Hebreeuws, Thais, Chinees en Japans.

Speel ook Airplane Manager en Repeat


  • aawe mwan
  • Registratie: December 2002
  • Laatst online: 17:40

aawe mwan

Wat ook leuk is:

.Vii schreef op zondag 7 oktober 2018 @ 08:33:
Ik ben nu een proces aan het schrijven welke een 1000 tal documenten ontvangt doorstuurt naar een externe applicatie (die doet er vervolgens wat mee) en ik vervolgens van al deze 1000 documenten en seintje moet krijgen "Ja akkoord we kunnen door".
Tip: kijk eens of dat wat je aan het maken bent, niet gewoon "Managed FileTransfer" is.
Daarvoor bestaan namelijk al heel goede standaardapplicaties.

„Ik kan ook ICT, want heel moeilijk is dit niet”



Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee