Kursusel oli kokku 9 moodulit, kus iga juurde anti ka ports kohustuslikku kirjandust lugeda. Loomulikult sel ajal ma seda ei jõudnud lugeda, kuid võtan nüüd eesmärgiks kuu aega järjest lugeda. Vaatame, kuhu jõuame. Lugemine suvalises järjekorras.
Konrad Pilarski: How APIs and data integrations work in Data Engineering moodulist 3: andmete integreerimine, annab kiire ülevaate erinevates andmete integreerimismeetoditest.
Aga enne kui nende meetodite juurde läheme, siis peaks selgitama veel kolme mõistet nagu pull, poll ja push. Oletame, et oled avanud enda internetipanga ning soovid teada saada, kas on palk on laekunud. Selleks on kolm võimalust.
A. Avad internetipanga või mobiilipanga ja vaatad ise, kas palk on kontole laekunud.
| Meetod | Päringu näide | Vastuse näide |
|---|---|---|
| Pull | GET /accounts/balance | { "balance": 3250.50
} |
B. Mobiilipank kontrollib automaatselt näiteks iga 30 sekundi järel, kas kontole on tulnud uus laekumine. Kui palk saabub, näed seda järgmisel kontrollimisel.
| Meetod | Päringu näide | Vastuse näide |
|---|---|---|
| Polling | 09:00 GET /accounts/balance 09:00:30 GET /accounts/balance 09:01:00 GET /accounts/balance | Enne palga laekumist: { "balance": 900.50
} Pärast palga laekumist: { "balance": 3250.50
} |
C. Niipea kui palk laekub, saadab pank automaatselt telefonile teavituse. Sina ei pea midagi küsima.
| Meetod | Päringu näide | Vastuse näide |
|---|---|---|
| Push | Server → Client { "event": "salary.received", "amount": 2350.00
} | { "message": "Palk laekus!", "amount": 2350.00, "balance": 3250.50
} |
Need kolm mõistet kirjeldavad, kes algatab andmevahetuse ja millal andmed liiguvad. Pull tähendab, et klient tõmbab (pull) andmed serverist. Andmeid küsitakse ainult siis, kui neid vaja on. Polling on pull'i erivorm. Selle asemel, et küsida ainult vajadusel, küsitakse pidevalt/teatud regulaarsusega. ee on lihtne lahendus, kuid tekitab palju päringuid, millest paljud ei too uut infot. Push tähendab, et server saadab andmed ise, ilma et klient peaks neid küsima.
| Meetod | Kes algatab? | Kuidas töötab? |
|---|---|---|
| Pull | Klient | Klient küsib andmeid siis, kui tal neid vaja on. |
| Polling | Klient | Klient küsib andmeid regulaarselt kindla intervalliga. |
| Push | Server | Server saadab andmed kliendile kohe, kui midagi muutub. |
Meetodid
Aga nüüd tagasi artiklis nimetatud meetodite juurde. Näited on tehisaru välja mõeldud.
- REST API - standardlahendus partii-põhiste struktureeritud andmete importimiseks. Andmetoru tõmbab andmed HTTP-päringute abil ja salvestab sihtkohta. Sagedate päringute tegemine liigitub pollinguks.
- webhooks - reaalajas andmete import. Lähtesüsteem saadab koheselt ise uued andmed, niipea kui need tekivad ehk toimub mingi sündmus (event). Oluline on, et süsteem oskab käituda, kui sündmus ebaõnnestub andmed dubleeruvad.
- GraphQL - paindlik andmepäring, kuna küsib ainult vajalikke andmevälju. Väheneb andmemaht ja töötlemisaeg. Andmeallikas peab toetama GraphQL-i. Milles siiski erinevus REST API endpointi poole pöördudes?
| REST API | GraphQL |
|---|---|
| Server määrab ette, milliseid andmeid endpoint tagastab. | Klient määrab ise, milliseid andmevälju ta soovib. |
- sõnumijärjekorrad ja sündmuste voogedastus (Message Queues & Event Streaming) - suure mahuga asünkroonne andmete importimine, kus uusi andmeid tuleb kiirelt kogu aeg peale. Tuleb hallata sõnumijärjekorra (nt RabbitMQ) platvormi. Voogedastus platvorm näitena Kafka. Meil on mingi äri, kus iga päev toimub tuhandeid oste. Need ostud pannakse järjekorda ost 1, ost 2, ost 3, ost 4 ja loetakse "rahulikult" sisse ja samal ajal kõik teavad, mis nüüd jälle ära müüdi. Vaata näidet allpool.
- gRPC - mikroteenuste andmevahetus, kus kasutusel JSONi asemel binaarne andmevorming, mis muudab väiksema andmemahu töötluse kiiremaks ning vähendab viivtust. Traditsioonilises ETL-is ei kasutata. Näitena saame jällegi vaadata panka. Toimub tehing → makseteenus → gRPC → pettusekontroll → gRPC → andmehoidla. gRPC dikteerib ette kindla andmestruktuuri, aga muudab selle siis selliseks: 10101010 00101101 11100010 01010001 Inimene ei loe midagi välja, aga masin töötleb kiiremini.
- otseühendus andmebaasiga, kus SQL-päringutega võetakse andmed ja laaditakse sihtkohta. Sobib struktureeritud ja sisemiste andmeallikate jaoks. Oluline, et päringud ei hakkaks häirima lähteandmebaasi tööd.
REST API ja GraphQL võrdlus
Näide soovime ainult tellimuse numbrit (123) ja summat.
Rest API endpoint :
GET /orders/123
Vastuseks saame kõik antud tellimusega seotud info:
{
"id": 123,
"customer": {
"name": "Mari Maasikas",
"email": "mari@example.com",
"phone": "5551234"
},
"items": [
{
"product": "Sülearvuti",
"price": 1200
}
],
"shippingAddress": {
"city": "Tallinn",
"street": "Pikk 1"
},
"total": 1200,
"status": "Paid",
"createdAt": "2026-08-04T10:15:00Z"
}
GraphQL puhul tagastatakse ainult need väljad, mida küsime.
query {
order(id: 123) {
id
total
}
} Ehk tellimuse ID ja summa:
{
"data": {
"order": {
"id": 123,
"total": 1200
}
}
}
Allikas: https://kpilarski.substack.com/p/how-apis-and-data-integrations-work
Kirjutamisel on kasutatud tehisaru abi.