Cursul 11 - Gestiunea memoriei
Cursul 11 - Gestiunea memoriei
Cursul 11 - Gestiunea memoriei
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