You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

Auteurs:

Naam

Studentnummer

599907


Docenten

Naam

Functie

Skills begeleider

Procesbegeleider

Klas
ITA-OOSE-A
Groepsnaam
Smalltalk
Course
OOSE
Datum

 

Versie

1.19

Inhoudsopgave

Inleiding

Het bedrijf Regterschot Racing wil een website applicatie hebben, waarop de data van de sensoren in de auto, te zien is. Regterschot Racing verwacht in ieder geval van één sensor, de GPS, twintig keer per seconde data te krijgen. Het is voor Regterschot Racing belangrijk dat deze data goed overkomt vanaf de auto naar de website applicatie en dat dit zo snel mogelijk, het liefst in real-time, overkomt. Het is voor ons van belang om dit onderzoek uit te voeren, om zo te weten te komen welke techniek het beste aansluit bij de wensen van Regterschot Racing.


Hoofd- en deelvragen

Onze hoofdvraag is: 'Welke technieken bestaan er om real-time data weer te geven op een website?' Om deze vraag te kunnen beantwoorden, hebben we ook een aantal deelvragen opgezet. Onze eerste twee deelvragen gaan over de technieken die bekend zijn, of veel gebruikt worden, voor het weergeven van data in real-time op een website. Deze deelvraag is opgesplitst in welke technieken er zijn die gebruik maken van een MySQL database en technieken die geen gebruik maken van deze database. Bij de tweede deelvraag zal er gekeken worden naar technieken die geen gebruik maken van een database. Bij deelvraag 3 zal er gekeken worden naar welke technieken voor het streamen van data naar de pit er in autoraces worden toegepast. Een voorbeeld hiervan kan zijn: 'Welke techniek wordt er gebruikt bij F1 races om de data van de baan naar de pit te sturen?' In de vierde deelvraag zullen we ingaan op de voor- en nadelen van de bovengenoemde technieken. In het kort hebben we de volgende deelvragen:

  • Welke technieken, die veel gebruikt worden of ons bekend zijn, maken gebruik van een MySQL database?
  • Welke technieken, die veel gebruikt worden of ons bekend zijn, maken geen gebruik van een database of andere database?
  • Welke technieken worden bij autoraces gebruikt om de data van de auto naar een pit te krijgen?
  • Wat zijn een aantal voor- en nadelen van de verschillende technieken voor het weergeven van real-time data?

Naast het beantwoorden van deze deelvragen, zullen er ook kleine prototypes worden gemaakt van de bovenstaande manieren. Deze kleine prototypes zullen ook in de praktijk ons een beter beeld geven wat mogelijke oplossingen zijn om de data in real-time weer te kunnen geven op een website applicatie.

Welke technieken die veel gebruikt worden of ons bekend zijn maken gebruikt van een MySQL database?

 Script dat elke x seconden data ophaalt

Een van de manieren om data op te halen uit een database is door elke x seconden een request uit te laten voeren. Je kan bijvoorbeeld alle data ophalen na een bepaald tijdstip en de rest, die je in dit geval al hebt, achterwege laten. In dit geval zal je een timer of iets dergelijks moeten hebben die elk keer de data ophaalt en deze op de applicatie toont. 

Herrera, gebruik van transactielogboek

In het artikel van Herrera geeft hij allereerst drie verschillende mogelijkheden weer voordat hij, in dit geval de derde, techniek kiest en deze ook uitwerkt. De drie technieken die hij benoemt zijn

    • Poll the database every X seconds and determine if something has changed using a timestamp, version number or status field.
    • Use database or application-level triggers to execute a piece of code when something changes.
    • Use the database transaction/replication log, which records every change to the database. (Herrera, 2018)

Herrera kiest hier voor de derde optie omdat hij vindt dat deze het meest robuust is. Ook benoemd hij dat deze techniek geen middelen verspilt door bijvoorbeeld polling of het proces vertraagd door bijvoorbeeld het gebruik van triggers. Herrera geeft de volgende afbeelding met hoe het systeem uiteindelijk zal werken.

Als er een insert, update of delete op de MySQL database wordt uitgevoerd wordt dit in een binary log gezet. De Java applicatie luistert naar deze binary log met gebruik van de  mysql-binlog-connector-java. Nadat de Java applicatie deze data heeft ontvangen wordt deze omgezet zodat alleen de relevante data door wordt gestuurd naar de "Pusher Channel". Vervolgens gebruikt Herrera een React app die verbonden is aan de pusher. De pusher zit als een soort API tussen de React app en de Java backend.


Welke technieken die veel gebruikt worden of ons bekend zijn maken geen gebruik van een MySQL database?

Polling

Regterschot Racing gebruikt een API om de data van de Raspberry Pi in de database te zetten. De client, in dit geval onze Java web applicatie, kan een request sturen naar deze API. Als de API nieuwe data heeft zal hij deze teruggeven aan de applicatie. Als deze geen nieuwe data heeft krijgt de applicatie een bericht terug dat er geen nieuwe data is. Het is vergelijkbaar met het verversen van je email om te kijken of er nieuwe email is.


Long polling

Long polling lijkt op polling, al is er 1 verschil. De client stuurt ook in dit geval een request naar de server, in dit geval de API van Regterschot Racing. De server krijgt deze request binnen maar stuurt niet gelijk een response terug. De server wacht echter tot hij nieuwe info heeft. Op het moment dat dat zo is stuurt hij deze info terug aan de client. De client stuurt op dat moment gelijk weer een nieuwe request.


Server Sent Events (SSE)

Bij SSE stuurt de client een request naar een server. De server opent dan een connectie tussen de twee. De server stuurt niks terug tot het moment dat deze nieuwe data krijgt. Op het moment dat deze nieuwe data krijgt stuurt hij deze naar de client. De connectie wordt echter niet gesloten en blijft dus bestaan. Dit zorgt ervoor dat de client niet opnieuw een request hoeft te sturen, maar gewoon kan wachten op de nieuwe data van de server.


Websocket

Een websocket lijkt veel op SSE. Een websocket is te vergelijken met bijvoorbeeld WhatsApp. Bij SSE wordt er een connectie geopend en kan de server ten alle tijde data sturen naar de client. Bij een websocket kan dit ook, echter kan ook de client nieuwe data sturen naar de server, wat niet mogelijk is bij SSE. 


Welke technieken worden bij autoraces gebruikt om de data van de auto naar een pit te krijgen?

Data via radiosignalen

De sensoren die in een F1 raceauto zitten zijn veelal met elkaar verbonden. Elke auto heeft zijn eigen netwerk en de data wordt van punt één naar punt twee verzonden. Uiteindelijk komt alle data binnen op een server die nog in de auto zelf zit. De data wordt op dat moment geëncrypt en verzonden naar de pit met gebruik van radio signalen.  Op een race circuit staan meerdere palen die de radiosignalen op kunnen pikken en weer kunnen versturen. De palen staan op zo'n manier ingedeeld dat als een coureur niet meer in het bereik is van paal A, hij wel in het bereik is van paal B. 

Ook Bij NASCAR wordt er gebruik gemaakt van data. Ook deze data wordt opgeslagen en wordt via een transducer door radiosignalen verstuurd naar een centrale computer. Data bij NASCAR wordt echter veelal gebruikt om bijvoorbeeld de afstand tussen auto's aan te geven of hoe snel een auto momenteel rijdt. De data die tijdens een race binnenkomt wordt alleen naar NASCAR medewerkers verstuurd.


Wat zijn een aantal voor- en nadelen van de verschillende technieken voor het weergeven van real-time data?

Script dat elke x seconden data ophaalt

Bij eens script dat elke minuut runt voor een paar regels is er geen probleem. Bij een seconde moeten we al gaan kijken of het elke keer volledig binnenkomt. Als we de data daadwerkelijk twintig keer per seconden op de website willen tonen moeten we het script elke 50ms laten runnen. Als we deze keuze maken moeten er een aantal dingen bijkomen. Allereerst komt de data op de database binnen, dan moeten we een script hebben dat alleen die data ophaalt, en geen andere data. Er zal dus moeten worden gekeken op ID of op tijd/timestamp. Ook deze data, de id of tijd die als laatste bekend is, moet ergens worden opgeslagen of onthouden worden door het systeem. Het kan ook nog zo zijn dat op het moment van ophalen het net iets langer duurt, en er al andere data in te komen is staan, en je dus achterloopt of data overslaat. Tien regels in een table zal binnen een milliseconde verwerkt worden (afhangend van de hardware) maar miljoenen regels in honderden tabellen loopt al snel op. Dit zijn dingen die makkelijker zijn te voorkomen en te verwerken met gebruik van andere technieken. Het voordeel dat dit systeem heeft is dat het snel en makkelijk te implementeren is en wij allemaal de benodigdheden hebben om dit te doen. 


Conclusie


Bronnenlijst 

Herrera, E. (2018, 4 mei). Getting data in realtime from MySQL with Java. Pusher. https://pusher.com/tutorials/realtime-mysql-java/

Pure Storage. (2021, 20 december). How Formula 1 Car Sensors Create Data at Every Turn. https://blog.purestorage.com/perspectives/how-formula-1-car-sensors-create-data-at-every-turn/

Veen, T. [Tieme] Van. (2012, 12 oktober). What are Long-Polling, Websockets, Server-Sent Events (SSE) and Comet? Stack Overflow. https://stackoverflow.com/questions/11077857/what-are-long-polling-websockets-server-sent-events-sse-and-comet

  • No labels