ebook img

Cercetare asupra dezvoltarii de analiza a datelor din surse online si/ sau baze de date in vederea elaborarii unor rapoarte si situatii informative PDF

9 Pages·00.822 MB·Romanian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Cercetare asupra dezvoltarii de analiza a datelor din surse online si/ sau baze de date in vederea elaborarii unor rapoarte si situatii informative

Cercetare asupra dezvoltarii de analiza a datelor din surse online si/ sau baze de date in vederea elaborarii unor rapoarte si situatii informative ing. Militaru Bogdan Alexandru Student Facultatea de Electronica Calculatoare si Telecomunicatii Full Stack Developer - Airtouch New Media SRL [email protected] Keywords: data analysis, cloud computing, analytics 1. Introducere In cadrul acestei lucrari se vor prezenta notiuni teoretice si practice cu privire la modalitatea de elaborare si implementare a unui robot / agent software pentru colectarea si analiza unor date in vederea obtinerii unor profile de utilizatori si detalii despre activitatile desfurate de acestia in cadrul unei aplicatii mobile, ce serveste ca scop la cumpararea de hrana, fast-food online. Proiectul presupune interconectarea mai multor subsisteme constituente asa cum se poate observa in figura urmatoare: Acesta figura presupune procesul prin care datele colectate de la utilizatorul unui dispozitiv mobile, si stocate in Amazon S3 Cloud prin intermediul unui SDK (Software Development Kit) numit Amazon Mobile Analytics, datele sunt colectate zilnic de sistemul Process System, urmand ca mai apoi sa fie Mobile Device AWS S3 Process System Data Result �1 Generare statistici Descarcare Descarcare per dispozitiv Upload fisiere evenimente din detalii AWS S3 dispozitive CSV in FTP exportate rezultatele in format .csv pe un server FTP. Modul in care acest sistem opereaza va fi descris in continuarea acestei lucrari. In prima faza sistemul descarca toate evenimentele nou generate de utilizatori din Amazon S3 intr-o colectie Events, a bazei de date de tip Mongo, urmeaza apoi descarcarea noilor detaliilor despre dispozitive nou inregistrate in platforma, dintr-o alta baza de date de tip mySQL, responsabila cu gestionarea datelor din interiorul aplicatiei. Acest proces inregistreaza dispozitivele intr-o colectie numita Profiles. Dupa ce toate datele au fost descarcate in sistem, sistemul incepe sa genereze statistici pe baza acestor date, iar in final sunt generate fisiere .csv, care vor fi incarcate pe un server FTP, urmand sa fie interpretate de personal. Printre tipurile de statistici se pot evidentia: cate vizite au fost efectuate in total pentru un anumit produs, cate comenzi au fost generate in ultima luna de fiecare utilizator, care este media de comenzi ale unui utilizator, care sunt cele mai cautate produse, etc. 2. Notiuni Teoretice despre tehnologiile utilizate In cadrul acestui captiol vor fi prezentate notiuni teoretice despre tehnologiile utilizate pentru a permite o mai buna intelegere a proiectului derulat si a modului in care acesta opereaza. 2.1.Amazon Mobile Analytics (Pinpoint) Folosind Amazon Pinpoint se poate obtine o perspectiva asupra bazei de utilizatori, ai unei aplicatii mobile, urmarind tendinte legate de implicarea acestora, compania de actiune, venituri si multe altele. Pe masura ce utilizatorii interactioneaza cu aplicatia, aceasta poate raporta date catre Amazon Pinpoint pe care le puteti vizualiza pentru a afisa nivelul de angajament. De exemplu, puteti vedea diagrame care arata cati utilizatori deschid aplicatia in fiecare zi, orele in care utilizatorii deschid aplicatia si veniturile generate de aplicatie. Daca vizualizati diagrame despre atributele dispozitivului, puteti afla platformele si dispozitivele pe care este instalata aplicatia. �2 Puteti sa monitorizati analizele de campanie pentru a vedea cum functioneaza campaniile dumneavoasta atat in agregat, cat si in mod individual. Puteti urmari numarul total de notificari push trimise, procentajul notificarilor push care au dus la deschiderea aplicatiei, ratele de renunțare și alte informații. Dacă ați creat o campanie care include un test A / B, puteti utiliza analizele pentru a compara eficienta tratamentelor din campanie. De exemplu, puteti evalua dacă este mai probabil ca utilizatorii sa deschidă aplicatia dumneavoastra ca urmare a unei variatii a mesajului de campanie. Puteti sa creati și sa monitorizati canalele pentru a analiza cati utilizatori finalizeaza fiecare pas intr-un proces de conversie, cum ar fi achizitionarea unui element sau actualizarea aplicatiei. Pentru a analiza sau a stoca datele de analiza in afara Amazon Pinpoint, puteti configura Amazon Pinpoint pentru a transmite datele catre Amazon Kinesis. Pentru a raporta valori din aplicatia dumneavoastra mobila, aplicatia trebuie integrata cu Amazon Pinpoint prin intermediul unuia dintre SDK- urile mobile AWS Mobile. [1] 2.2.Amazon S3 Amazon S3 stocheaza datele ca obiecte in cadrul unor resurse numite “buckets" (galeata). Puteti sa stocati cat mai multe obiecte pe care le doriti intr-un bucket si sa scrieti, sa cititi si sa stergeti obiecte din cupa. Obiectele pot avea dimensiuni de pana la 5 terabyte [2]. Puteti controla accesul la bucket (care poate crea, sterge si recupera obiecte din bucket, de exemplu), sa vizualizeze jurnalele de acces pentru bucket si obiectele acesteia si sa aleaga regiunea AWS �3 unde este stocat un bucket pentru a optimiza latenta, pentru a minimiza costurile sau cerintele de reglementare [2]. Beneficii: • este conceput ca o platforma completa de stocare. Ia in considerare valoarea de proprietate inclusa la fiecare GB [2]. • Simplitate - este construit pentru simplitate, cu o consola de administrare bazata pe web, o aplicatie mobila si API complete si SDK-uri complete pentru integrare usoara cu tehnologii terte [2]. • Durabilitate - este disponibil in regiuni din intreaga lume si include redundanta geografica in fiecare regiune, precum si optiunea de replicare in regiuni. In plus, mai multe versiuni ale unui obiect pot fi pastrate pentru recuperare [2]. • Scalabilitate - Clientii din intreaga lume depind de Amazon S3 pentru a salva trilioane de obiecte in fiecare zi. Costurile cresc si se micsoreaza la cerere, iar implementarile globale se pot face în cateva minute. Industrii precum serviciile financiare, asistenta medicala, mass-media si divertismentul il folosesc pentru a construi aplicatii de date mari, analize, transcodare si arhiva [2]. • Securitate - accepta transferul de date prin SSL si criptarea automata a datelor odata incarcate. Puteti, de asemenea, sa configurati politicile de tip bucket pentru a gestiona permisiunile obiectului si pentru a controla accesul la date, utilizand AWS Identity si Management Management (IAM) [2]. • Interogare in loc - Selectati datele proceselor dintr-un obiect stocat in repaus si Amazon Athena si Amazon Redshift Spectrum va permit sa rulati analize sofisticate direct pe datele stocate în S3 [2]. • Integrare larga cu alte servicii AWS pentru securitate (IAM si KMS), alertare (CloudWatch, CloudTrail si notificari de evenimente), computere (Lambda) si baze de date (EMR, Redshift), proiectate sa se integreze direct cu Amazon S3 [2]. • Optiuni de migrare a datelor Cloud. Stocarea AWS include mai multe metode specializate pentru a va ajuta să obtineti date in si din cloud [2]. • Gestiune flexibila de stocare. Caracteristicile de gestionare a stocarii S3 va permit sa luati o abordare bazata pe date privind optimizarea stocarii, securitatea datelor si eficienta managementului [2]. 2.3.Go (Golang) Go (adesea denumit golang) este un limbaj de programare creat de Google in 2009 de Robert Griesemer, Rob Pike și Ken Thompson. Este un limbaj compilat, format in mod static, in traditia lui Algol si C, cu colectare de gunoi, cu structura limitata, cu caracteristici de siguranta a memoriei si functii de programare concurente in stil CSP Instrumentul de compilare si alte instrumente de limba initial dezvoltate de Google sunt gratuite si open source [3]. Go este recunoscut in traditia lui C, dar face multe schimbari pentru a imbunatati concizia, simplitatea si siguranaa. Go constă din: • O sintaxa si un mediu care adopta modele mai frecvente in limbile dinamice: • Declaratie optionala de variabila concisa si initializare prin inferenta de tip (x: = 0 nu int x = 0; sau var x = 0;) [3]. • Timpuri rapide de compilare [3]. �4 • Managementul pachetelor de la distanta (go get) si documentatia pachetului online [3]. • Abordari distincte pentru anumite probleme: • Primitive de concurenta incorporate: procese usoare (gorutine), canale si instructiunea selectata [3]. • Un sistem de interfata in locul mostenirii virtuale si incorporarea tipului in locul mostenirii non- virtuale. • Un lant de instrumente care, in mod implicit, produce binare native legate in mod static fara dependente externe [3]. • Dorinta de a mentine specificatia lingvistica suficient de simpla pentru a ramane in capul unui programator, partial prin omiterea unor caracteristici comune unor limbi similare [3]. 2.4.MongoDB MongoDB este o baza de date NoSQL open-source orientata pe documente. Acesta baza de date beneficiaza de suport din partea companiei 10gen. MongoDB face parte din familia de sistemelor de baze de date NoSQL. Diferenta principala consta în faptul ca stocarea datelor nu se face folosind tabele precum intr-o baza de date relationala, MongoDB stocheaza datele sub forma de documente JSON cu scheme dinamice [4]. MongoDB este o baza de date open-source NoSQL scrisa în C++. Aceasta poate contine mai multe baze de date, colectii și indecsi. In unele cazuri (baze de date si colectii ) aceste obiecte pot fi create implicit. Odată create, ele se gasesc in catalogul sistemului db.systems.collection, db.system.indexes. Colectiile contin documente (BSON). Aceste documente contin la randul lor mai multe campuri. In MongoDB nu exista campuri predefinite spre deosebire de bazele de date relationale, unde exista coloanele care sunt definite în momentul in care tabelele sunt create. Nu exista schema pentru campurile dintr-un document, acestea precum si tipurile lor pot varia. Astfel nu există operatia de „alter table” pentru adăugare de coloane. In practica este obisnuit ca o colectie sa aiba o structura omogena, deși nu este o cerinta, colectiile putand avea structuri diferite. Aceasta flexibilitate presupune usurinta in migrarea si modificarea imaginii de ansamblu asupra datelor [4]. Caracteristicile MongoDB: • Stocarea datelor sub formă de documente • Baza de date MongoDB stocheaza obiecte (documente). Aceste documente reduc nevoia de join; • Prezinta support pentru indexare: • Indexarea pe fiecare din atribute se face in modul traditional (RDBMS) asupra cheilor de regasire ale documentelor; • Disponibilitate - Disponibilitatea datelor este asigurata printr-un proces automat de failover; • Auto-Sharding • Shardingul sau partitionarea datelor pe orizontala se face automat. Citirile si scrierile sunt distribuite pe partitii. Lipsa joinurilor face ca interogarile distribuite sa fie rapide; • Limbajul de interogare • Limbajul de interogare este imbunatatit si pastreaza principii SQL si C++; • Map Reduce • MongoDB foloseste map/reduce pentru agregare si procesare batch; • GridFS • Poate stoca fisiere de dimensiuni mari fara a complica stiva de date; • Suport • Există o cantitate mare de informatii online – tutoriale , carti forumuri ce servesc pentru a asimila rapid lucrul cu MongoDB. [4] �5 2.5.FTP (File Transfer Protocol) Protocolul pentru transfer de fisiere (sau FTP, din engl. File Transfer Protocol) este un protocol (set de reguli) utilizat pentru accesul la fisiere aflate pe servere din retele de calculatoare particulare sau din Internet. FTP este utilizat incepand de prin anul 1985 si actualmente este foarte raspandit. Numeroase servere de FTP din toata lumea permit sa se faca o conectare la ele de oriunde din Internet, si ca fisierele plasate pe ele sa fie apoi transferate (incarcate sau descarcate). Webul nu aduce aici mari schimbari, ajuta doar ca obtinerea fisierelor sa se realizeze mai usor, avand o interfata mai prietenoasa decat aplicatiile (programele) de FTP. Este posibil sa se acceseze un fisier local prin adresa sa URL, ca si la o pagina de Web, fie utilizand protocolul "file" (fisier), fie pur si simplu utilizand calea si numele fisierului. Aceasta abordare este similara utilizarii protocolului FTP, dar nu necesita existenta unui server. Desigur functioneaza numai pentru fisiere locale [5]. 3. Mod de operare al sistemului Modul in care aplicatia opereaza este unul foarte usor de descris, desi procesul este usor de inteles, exista un numar foarte mare de procese care se fac in spate. Deoarece exista un numar atat de mare, optimizarea algoritmilor care opereaza datele a reprezentat o munca asidua care continua fara incetare, deoarece in fiecare zi numarul de date stocate de la aplicatiile mobile sunt tot mai mari. 3.1.Colectarea datelor in Cloud Anterior au fost prezentate cele doua tehnologii, Amazon S3 si Amazon Pinpoint. Astfel procesul prin care sunt colectate datele este unul elementar si consta in salvarea datelor in momentul in care un eveniment a fost executat. Spre exemplu in mod automat la pornirea si inchiderea aplicatiei se executa evenimente de start si stop a sesiunii de lucru. Amazon Pinpoint permite crearea unor evenimente customizabile, astfel incat dezvoltatorii sa poata defini propriile reguli ce vor trimite statistici in functie de activitatile desfasurate de utilizator. In aplicatia curenta, fiind vorba despre o aplicatie de comanda de mancare si vizualizare de produse, evenimente precum: vizualizare de produs, adaugare produse in cosul de cumparaturi, abandonare cos, plata cos de cumparaturi, timp activ in aplicatie, timp in care aplicatia a rulat in background, locatii in care s-a solicitat o comanda. Acest tip de evenimente sunt extrase din aplicatia mobila in momentul in care un utilizator o foloseste si prin intermediul unui SDK sunt transmise automat catre cloud, unde sunt stocate in format .gzip, in interiorul caruia datele sunt stocate in format .json, astfel procesarea ulterioara a acestor date putand fi realizata cu usurinta. Stocarea datelor se face pe foldere avand urmatoarea structura AN/LUNA/ZI/ORA. 3.2.Sincronizarea evenimentelor din S3 in baza de date In cadrul acestei sectiuni evenimentele inregistrate de aplicatie sunt descarcate din S3 si sunt stocate in baza de data locala de tip MongoDB, intr-o colectie ce poarta numele Events. Luand in considerare ca in timp, pot exista foarte multe evenimente stocate in cloud si faptul ca nu este de interes descarcarea evenimentelor anterioare, la fiecare sincronizare se verifica data de creare a ultimului eveniment descarcat in baza de date locala, iar apoi sunt descarcate doar noile evenimente. �6 Tinand cont de faptul ca un singur utilizator poate genera printr-o simpla plimbare prin aplicatie cateva 10, poate chiar 10 de evenimente, stocarea acestor fisiere nu se poate face intr-o structura de tip vector sau matrice de obiecte, deoarece in acest fel memoria ram se poate umple cu usurinta, de asemenea un alt aspect demn de luat in considerare este ca inserarea individuala a fiecarui eveniment descarcat din S3 ar fi un proces cronofag, astfel ca am decis ca inserarea datelor sa se faca pe pachete, deoarece o functionalitate de care mongoDB beneficiaza, este aceia de a grupa mai multe obiecte in Bulk-uri, iar apoi acestea sa fie manipulate (inserate, actualizate, sterse). O astfel de optimizare a redus considerabil timpul de sincronizare al aplicatiei. 3.3.Sincronizarea profilelor utilizatorilor in baza de date Acest proces presupune descarcarea tuturor profilelor utilizatorilor, ce constau de fapt in date despre dispozitive, nu date cu un caracter personal despre utilizator. Aceste date sunt stocate intr-o baza de date, ce administreaza continutul aplicatiei. Sincronizarea presupune verificarea noilor dispozitive adaugate in sistem si descarcarea acestora in baza de date locala, de tip mongoDB. Deoarece aplicatia are aproximativ 5.5 milioane de utilizatori, procesul de sincronizare este cronofag, fapt pentru care, prima regula de optimizare este acela de a verifica data calenadristica a ultimului dispozitiv adaugat si descarcarea tuturor celor adaugate ulterior. De asemenea o alta optimizare consta in descarcarea unor pachete de 999 de inregistrari si adaugarea lor multipla, ca Bulk, in baza de date mongoDB. Se va face de asemenea o verificare, inainte de orice inserare, daca dispozitivul nu este duplicat, deoarece exista posiblitatea ca un dispozitiv sa existe de mai multe ori in sistem. 3.4.Generarea statisticilor Acest proces reprezinta de fapt cel mai indelungat proces si cel mai mare consumator de timp, deoarece mongo db este o baza de date ce isi pastreaza datele in documente fizice pe disc, citirea datelor fiind astfel unul indelungat, in contextul a 5 milioane de dispozitive, fiecare avand asignate sute sau mii de evenimente. Pentru optimizarea sistemului se vor extrage evenimentele asignate unui dispozitiv, ca bulk-uri si vor fi procesate manual, prin intermediul unor functii dezvoltate special, procesarea fiind mult mai rapida, decat prin interogari pe baza de date, dupa procesarea acestor statistici pentru evenimentele �7 din ultimele x zile (unde x puate lua diferite valori, de preferat pe ultimele 30 de zile), se vor actualiza in tabela profiles, pentru a putea fi exportate ulterior pe un server ftp. 3.5.Exportarea datelor in fisiere CSV pe serverul FTP Deoarece tot acest sistem a fost creat in scopul de a ajuta la cresterea vanzarilor, evidentierea produselor relevante pentru fiecare utilizator in parte si trimiterea unor notificari de tip push personalizate, statisticile generate anterior si actualizate in tabela Profiles trebuiesc exportate in fisiere .csv si incarca aceste fisiere pe serverul FTP. Primul pas este de creare a fisierului pe discul local, caruia ii va fi atasat header-ul filei .csv. Procesul continua prin selectarea unor Bulk-uri de profile ce vor fi adaugate prin adaugarea fiecarei linii la fisierul curent. Aceasta tehnica este necesara, deoarece in cazul in care se doreste scrierea celor aproximativ 5 milioane de profile, acest proces poate produce blocarea computerului, deoarece toate datele vor fi scrise pe memoria ram, asa cum poate fi observat in imaginea urmatoare. �8 Dupa ce filele .csv sunt scrise, ele vor fi redenumite intr-un format de tip APP_ZZ_LL_AAAA_timestamp.csv, pentru a diferentia fisierul curent de cele anterioare, existente pe serverul FTP. 4. Concluzii In final se poate spune ca obiectivul stabilit initial a fost atins, insa datorita cerintelor tot mai mari in aceasta directie de analiza a datelor, se impune imbunatatirea sistemului existent. In prezent, datele sunt procesate o singura data pe zi, iar dat fiind faptul ca sistemul realizat are un numar mare de date, se poate intelege foarte usor ca intregul preoces este unul cronofag. O posibila solutie si cu grad ridicat de cerinta din partea pietei o reprezinta procesarea in timp real, datale fiind colectate si stocate in cloud de indata ce utilizatorul realizeaza o noua operatie, astfel se poate realiza acest proces de indata ce noi date apar. De asemenea se doreste imbunatatirea sistemului prin procesarea ultimelor date aparute, nefiind necesara procesarea tuturor datelor de fiecare data. 1. Amazon Pinpoint - https://docs.aws.amazon.com/pinpoint/latest/userguide/analytics.html 2. Amazon S3 - https://aws.amazon.com/s3/details/ 3. Golang Wikipedia - https://en.wikipedia.org/wiki/Go_(programming_language) 4. MongoDB Wikipedia - https://ro.wikipedia.org/wiki/MongoDB 5. FTP Wikipedia - https://ro.wikipedia.org/wiki/File_Transfer_Protocol �9

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.