06.04.2015 Views

Cursul 11 - Gestiunea memoriei

Cursul 11 - Gestiunea memoriei

Cursul 11 - Gestiunea memoriei

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Moto<br />

<strong>Cursul</strong> <strong>11</strong><br />

Stocarea datelor<br />

Utilizarea Sistemelor de Operare (USO)<br />

12 decembrie 2014<br />

Three things are certain:<br />

Death, taxes, and lost data.<br />

Guess which has occurred.<br />

David Dixon, 1998, winning entry of the Haiku Error Messages 21st Challenge<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 1/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 2/43<br />

Hardware<br />

Hardware și software<br />

lshw hwinfo inxi<br />

lcpcu<br />

/proc/cpuinfo<br />

nproc<br />

arch<br />

free<br />

/proc/meminfo<br />

lsblk<br />

fdisk -l<br />

blkid<br />

df<br />

procesor memorie disc<br />

http://www.gadgetlite.com/2008/03/19/<br />

funny-artistic-impression-how-would-you-describe-computer-hardware-to-a-noob/<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 3/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 4/43<br />

Cuprins<br />

Date digitale<br />

Date digitale<br />

Format text sau format binar<br />

Baze de date. SQL<br />

Concluzie<br />

◮ informații stocate pe suport electronic (în general discuri)<br />

◮ se stochează digital (în biți, specific sistemului de calcul)<br />

◮ în general stocate în fișiere, în cadrul sistemelor de fișiere<br />

◮ avantaje față de date ,,nedigitale”:<br />

◮ stocare facilă (nu ai nevoie de spațiu fizic)<br />

◮ duplicare instant (nu e nevoie de copiator sau scanner)<br />

◮ transfer ușor (nu ai nevoie de cutii și camioane)<br />

◮ controlul accesului (decizi cine ce folosește)<br />

◮ aplicații care folosesc date (aplicații conform nevoii: criptare,<br />

extragere informații, înlocuire etc.)<br />

◮ format de stocare (binar, text, comprimat etc.)<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 5/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 7/43<br />

Ce e important la date digitale?<br />

Backup și versionare<br />

◮ spațiul ocupat: unde le stocăm, cum le stocăm<br />

◮ accesul: cum le accesăm, ce interfețe oferim, ce aplicații le<br />

folosesc<br />

◮ securitatea: cine are acces, cum protejez de acces nedorit<br />

◮ permanența (backup, versionare): cum previn pierderea<br />

datelor<br />

◮ periodic realizăm copii de siguranță (backup) ale datelor<br />

◮ putem accesa versiuni anterioare<br />

◮ fiecare versiune are un identificator<br />

◮ aplicațiile care lucrează cu date oferă, în general, forme de<br />

versionare (Track Changes in MS Office, Google Docs)<br />

◮ le ce date se face backup și cât de des depinde de context<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 8/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 9/43


Date nestructurate<br />

Date structurate<br />

◮ nu au o structură predefinită a informației<br />

◮ pot conține diverse informații funcție de situație<br />

◮ exemple sunt fișierele de tip document (MS Office,<br />

LibreOffice)<br />

◮ pot exista secțiuni standard dar informația are o structură<br />

diferită de la document la document<br />

◮ multe din fișierele care conțin text (e-mail, literatură, mesaje,<br />

lecții de laborator) nu au informații structurate<br />

◮ datele binare (non-text) nestructurate se mai numesc și blob<br />

◮ conținutul multimedia poate fi considerat formă de date<br />

nestructurate<br />

◮ datele structurate sunt organizate, în general, ca o listă de<br />

elemente ce respectă niște criterii<br />

◮ lista de studenți dintr-o facultate și atributele lor reprezintă<br />

date structurate<br />

◮ catalogul unei materii e o formă de informație structurată<br />

◮ alte exemple<br />

◮ lista angajaților unei companii<br />

◮ portofoliul de produse al unei companii<br />

◮ istoricul de evenimente ale unei organizații<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 10/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor <strong>11</strong>/43<br />

Entități, proprietăți și asocieri<br />

◮ în datele structurate folosim entități (persoane, studenți,<br />

evenimente, produse)<br />

◮ entitățile au proprietăți sau atribute<br />

◮ o persoană are vârstă, sex, înălțime, ocupație, dată de naștere<br />

◮ un eveniment are o dată de desfășurare, un organizator, un set<br />

de sponsori, niște obiective<br />

◮ un produs are un nume, un producător, un preț, un mod de<br />

distribuție<br />

◮ entitățile pot fi legate sau asociate între ele<br />

◮ un profesor predă mai multe cursuri<br />

◮ un curs este parte a unui an de studiu<br />

◮ un an de studiu cuprinde mai multe serii<br />

◮ seriile conțin studenți<br />

◮ o persoană are ca părinți alte persoane<br />

◮ o persoană lucrează într-o organizație<br />

◮ o organizație furnizează o serie de produse<br />

◮ formele de stocare a datelor structurate trebuie să păstreze<br />

entitățile, atributele acestora și legăturile/asocierile între ele<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 12/43<br />

Date în format tabelar<br />

◮ un mod de prezentare a datelor structurate este formatul<br />

tabelar: linii și coloane<br />

◮ fiecare tabelă reprezintă o entitate (de exemplu ,,studenti”)<br />

◮ fiecare linie din tabel reprezintă o intrare, un element de tipul<br />

acelei entități (adică un ,,student” real)<br />

◮ fiecare coloană înseamnă atribute ale studentului (nume,<br />

grupă, notă, username, locul nașterii etc.)<br />

◮ pot exista referințe între tabele; o coloană este o referință<br />

către altă intrare din alt tabel sau din același<br />

◮ fișierele spreadsheet (.xls, .ods) sunt forme de date structurate<br />

în format tabelar<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 13/43<br />

Prezentarea și stocarea datelor<br />

Serializare<br />

◮ multe date sunt prezentate într-un format inteligibil oamenilor<br />

pentru a fi urmărite<br />

◮ pot fi multimedia (video, audio: văzute și ascultate) sau pot fi<br />

text (citite)<br />

◮ cel mai adesea datele vor fi prezentate text: nume de<br />

persoane, nume de evenimente, costuri, nume de produse,<br />

identificatori de produse, conținut de documente, conținut de<br />

lecții de curs etc.<br />

◮ deși prezentarea se face text, datele pot fi stocate sau în<br />

format text sau în format binar (structurat sau nestructurat)<br />

◮ transformarea structurilor de date/obiectelor într-o formă<br />

stocabilă (de obicei un fișier)<br />

◮ în general se preferă un format de stocare standard, care să<br />

poată fi folosit de diverse aplicații/limbaje<br />

◮ exemple de formate de stocare de date serializate text: JSON,<br />

XML, YAML<br />

◮ în Python se poate folosi modulul Pickle care stochează date<br />

în fișiere binare<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 15/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 16/43<br />

Format text vs. format binar<br />

Format text<br />

Format text<br />

◮ citibil, format ASCII<br />

◮ ușor de editat și parcurs<br />

◮ foarte portabil<br />

◮ spațiu ocupat mai mare<br />

◮ util pentru fișiere relativ<br />

mici, ce pot fi parcurse de<br />

oameni<br />

◮ în general nu foarte divers,<br />

folosim cuvinte și caractere<br />

Format binar<br />

◮ nu poate fi inspectat de o<br />

persoană<br />

◮ nevoie de o aplicație<br />

dedicată pentru citire și<br />

modificare<br />

◮ posibil să fie dificil de<br />

deschis cu altă aplicație<br />

◮ eficient ca spațiu<br />

◮ poate folosi fișiere oricât de<br />

mari<br />

◮ flexibilitate completă la<br />

modul de structurare<br />

◮ conține cuvinte și caractere pentru a descrie obiectele și<br />

structurile de date<br />

◮ identificatori, proprietăți, legături, ierarhie, liste<br />

◮ în general prelucrat de o aplicație<br />

◮ dar poate fi prelucrat și de un editor (sau exclusiv de un<br />

editor)<br />

◮ diverse clase de formate<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 17/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 18/43


Date în format atribut-valoare<br />

INI<br />

◮ nu există obiecte/entități, ci doar proprietăți/atribute și valori<br />

pentru acestea<br />

◮ în general de forma attribute = value sau attribute:<br />

value<br />

◮ util pentru fișiere de configurare, nu pentru obiecte sau entități<br />

◮ /etc/default/grub, /etc/hosts, fișierele .vmx<br />

◮ initialization<br />

◮ format de configurare<br />

◮ un fel de extensie pentru atribut-valoare<br />

◮ cuprinde secțiuni<br />

Fișier de configurare Git<br />

[core]<br />

repositoryformatversion = 0<br />

filemode = true<br />

bare = false<br />

logallrefupdates = true<br />

[remote "origin"]<br />

fetch = +refs/heads/*:refs/remotes/origin/*<br />

url = uso@elf.cs.pub.ro:uso.git<br />

[branch "master"]<br />

remote = origin<br />

merge = refs/heads/master<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 19/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 20/43<br />

◮ JavaScript Object Notation<br />

◮ folosit pentru serializare, stocare de date și obiecte, transfer de<br />

informație pe rețea<br />

◮ la bază tot formă atribut-valoare<br />

◮ standard deschis (open standard)<br />

◮ are tipuri de date, obiecte, liste (array)<br />

◮ foarte folosit de API-uri de servicii web: GitHub, Google Maps,<br />

Facebook etc.<br />

Exemplu JSON în WoUSO<br />

[<br />

{<br />

"pk": 1,<br />

"model": "magic.achievement",<br />

"fields": {<br />

"name": "ach-login-10",<br />

"title": "Vegeta",<br />

"description": "Login daily, for 14 days in a row",<br />

"image": "ach-login-10.png"<br />

}<br />

},<br />

[...]<br />

JSON<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 21/43<br />

◮ YAML Ain’t Markup Language<br />

◮ as expressive as XML and as readable as INI [1]<br />

◮ super-set al JSON<br />

◮ folosește indentare în loc de acolade pentru a descrie subcâmpuri<br />

◮ structurile de date se mapează ușor în YAML<br />

◮ util pentru data structure serialization<br />

◮ aspect ușor de parcurs/înțeles de oameni<br />

Exemplu de configurație YAML[2]<br />

tasks:<br />

test task:<br />

rss: http://mysite.com/myfeed.rss<br />

series:<br />

- My Favorite Show<br />

- Another Good Show:<br />

quality: 720p<br />

download: /home/me/watchdir/<br />

[1] http://symfony.com/doc/current/components/yaml/introduction.html<br />

[2] http://flexget.com/wiki/Configuration<br />

YAML<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 22/43<br />

XML<br />

Format tabelar text<br />

◮ Extensible Markup Language<br />

◮ standard deschis W3C – World Wide Web Consortium<br />

◮ reprezentarea structurilor de date, în special în servicii web<br />

◮ tag-uri cu atribute<br />

◮ structura arborescentă<br />

◮ complex<br />

◮ extensibil<br />

◮ SVG, XHTML<br />

◮ formatele noi de fișiere Office (ODF: .odt, .ods; OOXML:<br />

.docx, .xlsx)<br />

◮ configurare VirtualBox (fișierul .vbox)<br />

◮ datele tabelare pot fi reținute și text<br />

◮ o linie este o entitate, fiecare coloană sunt atributele<br />

◮ exemple: /etc/hosts, /etc/passwd, /etc/services<br />

◮ ușor de prelucrat: extrageri, selecții, grafice, prelucrări<br />

numerice<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 23/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 24/43<br />

CSV<br />

Format binar<br />

◮ Comma-Separated Values<br />

◮ text<br />

◮ formă de date tabelare separate prin virgulă (comma)<br />

◮ pot fi imporate/exportate din aplicații de tip Office<br />

Spreadsheet<br />

◮ prelucrabile ușor<br />

◮ neprintabil<br />

◮ un tip de fișier binar are un format propriu de stocare a datelor<br />

◮ flexibil și divers<br />

◮ avantajos pentru eficientizarea spațiului ocupat și viteză de<br />

prelucrare<br />

◮ mai rapid de analizat decât format text<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 25/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 26/43


Format de tip document<br />

Spreadsheet<br />

◮ documentele prezintă informații text și le stochează în format<br />

binar<br />

◮ în general, documentele sunt cele folosite în suite Office<br />

◮ documente tip text (.doc, .docx, .odt)<br />

◮ documente de tip spreadsheet (.xls, .xlsx, .ods)<br />

◮ documente de tip prezentare (.ppt, .pptx, .odp)<br />

◮ format PDF (Portable Document Format): nu este editabil<br />

◮ fișiere cu format de afișare/prezentare tabelar<br />

◮ stocate în general binar, prezentate text<br />

◮ operații de prelucrare pe date: numeric, grafice<br />

◮ Microsoft Excel, LibreOffice Calc, Google Spreadsheet<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 27/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 28/43<br />

Baze de date<br />

Ce este o bază de date?<br />

◮ mod de structurare a datelor pentru stocare și accesare<br />

eficientă<br />

◮ orice formă de structurare a informației pentru a facilita<br />

accesul poate fi considerată o bază de date<br />

◮ poate fi text sau binar<br />

◮ /etc/passwd: baza de date de utilizatori locali<br />

◮ în general, baza de date este binară pentru eficiență<br />

◮ un fișier sau un set de fișiere<br />

◮ format particular de stocare, specific implementării<br />

◮ în general binare cu un nivel de acces la baza de date<br />

◮ sisteme de gestiune a bazelor de date pentru interacțiune cu<br />

baza de date (SGBD, DBMS)<br />

◮ pentru o bază de date definim o schemă: modul de organizare<br />

și legătură<br />

◮ practic implementarea modelului entitate-asociere<br />

◮ în general, modelelul relațional (pe bază de tabele): RDBMS -<br />

Relational Database Management System<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 30/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 31/43<br />

Sistem de gestiune a bazei de date<br />

Baze de date relaționale<br />

◮ interfața expusă în formă de tabele<br />

◮ model cu intrări (rânduri) cu proprietăți (coloane) și legături<br />

între ele<br />

◮ formele de interogoare țin cont de stuctura pe bază de tabele<br />

◮ cele mai cunoscute SGBD sunt de tip relațional: Oracle, MS<br />

SQL, IBM DB2, MySQL, MariaDB, PostgreSQL, Firebird,<br />

SQLite<br />

http://resources4ict.excellencegateway.org.uk/term.php?id=<strong>11</strong>92&img=1<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 32/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 33/43<br />

Baze de date relaționale<br />

Interogări pentru baze de date relaționale<br />

◮ creează un tabel<br />

◮ șterge un tabel<br />

◮ adaugă o intrare<br />

◮ șterge o intrare sau mai multe<br />

◮ selectează o intrare sau mai multe<br />

◮ actualizează o intrare<br />

http://code.tutsplus.com/tutorials/relational-databases-for-dummies--net-30244<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 34/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 35/43


SQL<br />

Ce folosești când stochezi date?<br />

◮ Standard Query Language<br />

◮ limbaj dedicat pentru interogarea unui RDBMS<br />

◮ sintaxă simplistă pentru interacțiune cu baza de date<br />

Comenzi SQL<br />

insert into studenti(nume, email, an, serie)<br />

values(’Capota Paul’, ’paul.capota@gmail.com’, 2, ’CC’);<br />

delete from students where nume=’Capota Paul’;<br />

select from students where serie=’CC’;<br />

update students set serie=’CA’ where email=’paul.capota@gmail.com’;<br />

◮ text: pentru configurare și pentru date în fișiere mici<br />

◮ INI: pentru configurare foarte simplă<br />

◮ YAML: pentru configurare mai complexă, pentru date de mici<br />

dimensiuni<br />

◮ JSON: pentru interacțiune cu servicii web<br />

◮ XML: pentru configurări foarte complexe, pentru<br />

extensibilitate<br />

◮ fișiere binare simple: pentru eficiență și viteză<br />

◮ baze de date: date de mari dimensiuni, nevoie de căutare și de<br />

viteză, aplicații accesează concurent<br />

◮ Git/Subversion: pentru stocarea, versionarea și gestionarea<br />

codului sursă și pentru lucru colaborativ<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 36/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 38/43<br />

Rackspace<br />

Big Data<br />

◮ companie de hosting IT<br />

◮ fondată în 1996<br />

◮ unul dintre principalii furnizori de servicii cloud (Rackspace<br />

Cloud)<br />

◮ contribuitor la OpenStack<br />

◮ folosit de GitHub<br />

◮ termen care definește date neprelucrabile în modul standard<br />

◮ mari, complexe: meteorologie, finanțe, căutare pe Internet<br />

◮ date de ordinul PB, ZB<br />

◮ operații obișnuite pe alte date: căutare, prelucrare<br />

◮ necesită sisteme capabile de calcul paralel/distribuit sau alte<br />

abordări<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 39/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 40/43<br />

Cuvinte cheie<br />

Resurse utile<br />

◮ date digitale<br />

◮ structurate<br />

◮ nestructurate<br />

◮ entitate<br />

◮ proprietate<br />

◮ asociere<br />

◮ format tabelar<br />

◮ format text<br />

◮ format binar<br />

◮ serializare<br />

◮ atribut-valoare<br />

◮ INI<br />

◮ JSON<br />

◮ YAML<br />

◮ XML<br />

◮ CSV<br />

◮ spreadsheet<br />

◮ bază de date<br />

◮ SGBD, DBMS<br />

◮ relațional<br />

◮ RDMBS<br />

◮ interogare<br />

◮ SQL<br />

◮ http://www.yaml.org/<br />

◮ http://www.w3.org/XML/<br />

◮ http://www.json.org/<br />

◮ http://www.fileinfo.com/filetypes/spreadsheet<br />

◮ https://www.dmoz.org/Computers/Data_Formats/Database<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 41/43<br />

Automatica si Calculatoare <strong>Cursul</strong> <strong>11</strong>, Stocarea datelor 42/43

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!