Programiranje: Razmjena podataka među servisima

Programiranje: Razmjena podataka među servisima

Data transfer project

Nova inicijativa za razmjenu podataka među servisima.

Zamislite sljedeću situaciju. Godinama ste svoju omiljenu društvenu mrežu „punili“ različitim slikama i video zapisima svoje obitelji, rodbine, prijatelja, ... i sad se pojavio novi web servis koji uz vrlo prihvatljivu cijenu nudi ispis tih slika na „nešto opipljivo“.

A vaša draga punica bi htjela baš to - da može pregledavati slike obitelji bez korištenja računala. I što ćete sad? Uobičajeni postupak zahtijeva da prvo skinete slike s društvene mreže i onda ih pripremite za slanje te u konačnici pošaljete prije spomenutom servisu za ispis slika.

Prilično gnjavaže, zar ne? Pa može li to nekako drugačije? Ako se u praksi proširi inicijativa o kojoj će biti više riječi u ovom tekstu, odgovor je, srećom, potvrdan.

 

Što je DTP?

Rješenje za prije navedeni problem krije se pod nazivom Data Transfer Project (u nastavku teksta DTP). Riječ je o otvorenom i javno dostupnom projektu pokrenutom 2017. godine, a iza njega trenutno stoje vrlo veliki (najveći) IT „igrači“ kao što su Google, Facebook, Microsoft i Twitter.

 

Slika01 copy

Sve navedene tvrtke (i ne samo one) često se susreću s potrebom da međusobno razmijene podatke o korisnicima svojih usluga, a do sada zapravo i nije bilo jednostavnog i javno dostupnog načina na koji bi se to moglo napraviti što bezbolnije.

DTP bi trebao postati javno dostupan i široko rasprostranjeni standard za međusobnu razmjenu podataka među različitim servisima s idejom da se u njega mogu uključivati i druge tvrtke, a ne samo osnivači. Osim problema spomenutog u samom uvodu teksta, njegovim korištenjem bi se mogli rješavati slučajevi poput sljedećih (navedimo samo neke primjere):

1. Korisnik muzičkog servisa iz nekog razloga više nije zadovoljan njegovim djelovanjem pa želi prijeći na korištenje konkurentskog servisa. Međutim, kako je prvi servis koristio već godinama, na njemu ima pripremljene različite popise omiljenih pjesama, albuma i izvođača pa bi prepisivanje svega toga u novi servis bio prilično mukotrpan posao.

2. Korisnik nekog drugog oblika servisa (npr. poslovno orijentiranog gdje čuva svoje poslovne podatke) suočava se s problemom da servis kojeg koristi već godinama iz nekog razloga uskoro prestaje s radom. Jedino logično rješenje je da korisnik prenese sve svoje podatke u servis druge tvrtke, ali uz što manje napora, troškova i transformacija podataka.

Korištenjem DTP pristupa, servis u vlasništvu nove tvrtke bi trebao pripremiti API sučelje za pristup podacima u starom servisu preko kojeg bi se izravno prenijeli podaci između starog i novog servisa, bez potrebe da u taj prijenos bude uključen krajnji korisnik.

 

Slika04 copy

Naravno, tako pripremljeno sučelje kasnije se može koristiti za korisnikove druge potrebe ako im treba jednaki oblik prepisivanja podataka.

3. Pretpostavimo da više trgovačkih (maloprodajnih) tvrtki želi krajnjem korisniku pripremiti zajednički program lojalnosti i popusta na temelju kupovine u bilo kojoj od povezanih tvrtki. I u ovom slučaju bi pojednostavljena razmjena podataka između svih zainteresiranih tvrtki bitno olakšala takav cilj.

 

Tehnička realizacija

Pogledajmo sada kako je postizanje spomenutih ciljeva zamišljeno na tehničkoj razini. DTP se sastoji od tri glavna dijela:

1. Modela podataka (Data Models)

Modeli podataka sastoje se od dva dijela - samih podataka i dodatnih metapodataka o osnovnim podacima, kako bi se osigurao pouzdani prijenos podataka između servisa.

Na primjer, podaci za prijenos mogu biti neki od standardnih grafičkih podataka (npr. JPG datoteke u primjeru s početka teksta), dok su pripadajući metapodaci u tom slučaju naslovi i opisi slika, albumi u koji su slike razvrstane i slično.

Jedna od glavnih ideja u vezi s korištenjem modela podataka je da tvrtke tijekom razvoja vlastitih IT sustava odmah pokušaju implementirati DTP modele u svoje sustave, kako bi se kasnije olakšao prijenos (uvoz / izvoz) podataka prema drugim DTP kompatibilnim sustavima.

2. Adaptera (Adapters)

Adapteri podataka mogu se podijeliti u dvije velike grupe: podatkovno orijentirani adapteri i adapteri zaduženi za autentikaciju.

Programski kôd adaptera iz prve grupe zadužen je za samu transformaciju podataka između posebnih formata zapisa u pojedinom servisu i standardnih modela podataka.

 

Slika02 copy

Kod adaptera iz druge grupe programski kôd je zadužen za operacije autentikacije, kako bi se doista prenosili samo podaci za koje postoji dozvola od strane krajnjih korisnika.

3. Biblioteke za upravljanje zadacima (Task Management Library)

Zadužene su za sve ostale zadatke u ovom postupku kao što su pozivi odgovarajućih dijelova adaptera, sigurno rukovanje podacima i straničenjem podataka, te sve ostale potrebne operacije.

U okviru trenutne verzije javno dostupnog DTP kôda pokazano je kako se pišu takve biblioteke.

 

Slika03 copy

Ako želite saznati više detalja o programskom kôdu i implementaciji projekta, istraživanje možete započeti od web adrese: https://github.com/google/data-transfer-project.

U trenutnoj fazi razvoja projekta programski kôd je već dostupan u nekoliko različitih jezika. Na primjer, evo kako bi prema DTP odredbama izgledao omotač oko digitalnog dokumenta pripremljen u Javi:

 

package org.datatransferproject.types.transfer.models.blob;

import com.fasterxml.jackson.annotation.JsonCreator;

import com.fasterxml.jackson.annotation.JsonProperty;

import org.datatransferproject.types.common.models.DataModel;

/**

* This is a wrapper around a {@link DtpDigitalDocument} that encodes a blobby file.

* Data in the {@link DtpDigitalDocument} has a 1:1 relationship with the Schema.org spec, fields

* this class represent DTP specific data that doesn’t fit into the schema.org representation.

*/

public class DigitalDocumentWrapper extends DataModel {

private final DtpDigitalDocument dtpDigitalDocument;

private final String originalEncodingFormat;

// This isn’t in the schema.org spec and is only needed to store the bytes DTP will transfer

private final String cachedContentId;

@JsonCreator

public DigitalDocumentWrapper(

@JsonProperty(“DtpDigitalDocument”) DtpDigitalDocument dtpDigitalDocument,

@JsonProperty(“originalEncodingFormat”) String originalEncodingFormat,

@JsonProperty(“cachedContentId”) String cachedContentId

) {

this.dtpDigitalDocument = dtpDigitalDocument;

this.originalEncodingFormat = originalEncodingFormat;

this.cachedContentId = cachedContentId;

}

public DtpDigitalDocument getDtpDigitalDocument() {

return dtpDigitalDocument;

}

public String getCachedContentId() {

return cachedContentId;

}

public String getOriginalEncodingFormat() {

return originalEncodingFormat;

}

}

 

Budućnost?

Budući da iza projekta stoje zbilja „veliki igrači“, te da realno u današnjem umreženom svijetu postoji potreba za nečim sličnim, na prvi pogled bi se bez previše razmišljanja moglo napisati kako je budućnost DTP vrlo svijetla.

Problem na koji bi se moglo naići u stvarnom svijetu su različite pravne regulative pojedinih zemalja u pogledu zaštite podataka, ali ta problematika prelazi izvan granica tehničke strane ovog projekta.

Ocijeni sadržaj
(0 glasova)

// možda će vas zanimati

Newsletter prijava


Kako izgleda naš posljednji newsletter pogledajte na ovom linku.

Copyright © by: VIDI-TO d.o.o. Sva prava pridržana.