Please enable JavaScript.
Coggle requires JavaScript to display documents.
Informatică, Algoritmi si Structuri de Date, Arhitectura, : - Coggle…
Informatică
Bioinformatica
Definitie
Domeniu interdisciplinar care combina informatica, matematica, fizica si biologia
Este definita ca aplicarea instrumentelor informatice si analitice pentru colectarea si interpretarea datelor biologice.
Implica utilizarea tehnologiei computerizate pentru a colecta, stoca, analiza si disemina date si informatii biologice, cum ar fi secventele de ADN si aminoacizi
Aplicatii
Analiza datelor secvenței genomice
Analiza variației și expresiei genelor
Analiza predicția structurii și funcției genelor și proteinelor
Predictia și detectarea rețelelor de reglare genică
Medii de simulare pentru modelarea întregii celule
Modelări complexe ale dinamicii și rețelelor de reglare genică
Prezentarea și analiza căilor moleculare pentru a înțelege interacțiunile dintre gene și boli
Probleme importante
Gestionarea cantităților masive de date generate de tehnologiile moderne
Asigurarea calității și confidențialității datelor
Dezvoltarea unor instrumente computaționale robuste și accesibile
Abordarea problemelor etice legate de utilizarea și interpretarea datelor
Cărți
Systems Biology de Edda Klipp
Introduction to Bioinformatics de Arthur Lesk
Bioinformatics For Dummies de Jean-Michel Claverie
Bioinformatics and Functional Genomics de Jonathan Pevsner
An Introduction to Bioinformatics Algorithms de Neil C. Jones and Pavel A. Pevzner
Legături cu subdomenii
Persoane importanta din domeniu
Heng Li
Creator al unor unelte esențiale precum SAMtools, BWA, folosite la analiza datelor de secvențiere
Steven Salzberg
Dezvoltator al unor instrumente de aliniere precum Bowtie și TopHat.
David Haussler
A fost un lider în proiectul ENCODE și unul dintre arhitecții Human Genome Project
Lincoln Stein
A fost implicat în Human Genome Project și în inițiative internaționale majore precum Ensembl și Reactome
Limbaje de programare
Design
Modelul de execuție
Modularitate / Abstractizare
Sintaxă
Interoperabilitate
Clasificare
Paradigmă
Imperativ /
Procedural
Pascal
Orientat pe obiecte
(OOP)
Funcțional
(FP)
Haskell
Logic
Prolog
Nivel
Nivel înalt
(High level)
Ruby
Nivel scăzut
(Low level)
Assembly
Rust
Legături cu subdomenii
În bioinformatică, limbajele de programare precum Python, R și Perl sunt preferate datorită flexibilității în procesarea datelor biologice.
Scripturile ajută la alinierea secvențelor genetice, analiză statistică și vizualizare.
Limbajele de programare, de pildă Python, Julia sau MATLAB sunt utilizate în analiza numerică, simulări și modelări matematice complexe.
Performanța, expresivitatea și bibliotecile științifice sunt factori esențiali în alegerea limbajului.
JavaScript și limbajele de marcare precum HTML/CSS sunt esențiale în dezvoltarea interfețelor grafice și a aplicațiilor web interactive. Framework-uri moderne (React, Vue) facilitează dezvoltarea UI/UX.
Limbajele de programare sunt nucleul procesului de dezvoltare software. Ele influențează designul arhitectural, testarea, mentenanța și evoluția codului.
Conceptul de programare defensivă, modularitate și reutilizarea codului sunt puternic dependente de caracteristicile limbajului.
Limbajul SQL este dedicat manipulării bazelor de date relaționale. Alte limbaje, precum Python sau Java, interacționează cu baze de date prin interfețe (JDBC, ORM-uri) pentru a extrage și prelucra date.
Știință Computațională
Foruri importante
Journal of Computational Science
Conferința Internațională de Științe Computaționale (ICCS).
Metode și algoritmi
Algoritmi paraleli
metoda lui Newton Raphson
Metoda Monte Carlo
Reprezentare vizuală a metodie Monte Carlo, pentru aproximarea valorii lui π
Serii Taylor
Aplicații în diferite domenii
Biologie
Inginerie
Finanțe
Persoane importante din domeniu
J. Tinsley Oden
Todd Gamblin
Probleme importante
Teoria haosului
Problema celor 3 corpuri
Sisteme de operare și retea
Sisteme de operare
Functionalitati
Gestionarea memoriei
controleaza alocarea si eliberarea memoriei RAM
Securitatea
protejeaza datele utilizatorului prin criptare si autentificare
Fisiere si stocare
Gestionarea proceselor
aloca procesorul si resursele necesare fiecarei aplicatii
Retea
Functionalitati
Schimbul de informatii si resurse intre dispozitive
Permit interconectarea diferitelor dispozitive (computere, telefoane mobile si echipamente de retea)
Dezvoltare
sunt dezvoltate prin limbaje de programare precum C, Java, Python si Go
Interactiunea dintre Sisteme de operare si Retea
Sistemele de operare și rețelele sunt interconectate prin suportul oferit de SO pentru comunicarea între aplicații și resurse prin protocoale de rețea
Grafica
Ce este Grafica pe Calculator?
Grafica pe calculator reprezintă un domeniu complex și interdisciplinar din informatică ce se ocupă cu generarea, procesarea, manipularea și afișarea imaginilor și a scenelor vizuale cu ajutorul calculatoarelor.
Este o ramură esențială a tehnologiei moderne, cu aplicații extinse în numeroase industrii, precum divertisment, arhitectură, inginerie, educație, medicină și știință.
Tipuri de Grafici
Grafica in timp real
Necesită optimizări performante și randare rapidă (rasterizare GPU).
Răspunde imediat la acțiunile utilizatorului (input prin tastatură, mouse, controler).
Utilizează tehnici precum culling, LOD (Level of Detail) și shadere în timp real.
Grafica 2D
Elemente de bază: puncte, linii, curbe, poligoane și forme geometrice simple.
Culorile pot fi uniforme sau pot varia prin aplicarea de gradient (degradeuri).
Suportă operații precum translația, rotația, scalarea și reflectarea obiectelor.
Grafica 3D
Procesul implică mai multe etape: modelare, texturare, iluminare, animare și randare.
Randarea poate fi în timp real (pentru jocuri) sau offline, la calitate înaltă (pentru filme și animații).
Obiectele sunt modelate din poligoane (cel mai frecvent triunghiuri) sau nori de puncte.
Grafica raster
Permite manipulări detaliate la nivel de pixel.
Nu este scalabilă fără pierderi de calitate - imaginea devine „pixelată”.
Necesită mai mult spațiu de stocare decât grafica vectorială.
Ideală pentru imagini complexe și realiste, cum ar fi fotografiile.
Grafica vectoriala
Fișiere de dimensiuni mai mici.
Ușor de editat și transformat.
Scalabilitate infinită fără pierderea calității.
Concepte Fundamentale
Pixelul
Atribute ale pixelului:
Coordonate (x, y) – poziția sa în imagine.
Culoare - definită de obicei prin modelul RGB (Red, Green, Blue) sau RGBA (cu Alpha – transparență).
Sistemele de coordonate
Orice scenă grafică se construiește într-un sistem de coordonate:
În 2D, se utilizează axele X și Y.
În 3D, se adaugă axa Z (profundime).
Modele de culoare
Culorile în grafica pe calculator sunt reprezentate numeric, folosind modele precum:
RGB (Red, Green, Blue) – pentru afișarea pe ecrane;
CMYK (Cyan, Magenta, Yellow, Black) – pentru imprimare;
HSV (Hue, Saturation, Value) – util în manipularea intuitivă a culorilor;
Grayscale - pentru imagini alb-negru (intensitate luminoasă).
Transformari grafice
Transformările sunt esențiale în manipularea obiectelor grafice:
Translația - mutarea obiectului într-o altă poziție.
Rotația - rotirea în jurul unui punct sau axă.
Scalarea - redimensionarea obiectului.
Shearing (forfecare) - deformare în direcție orizontală sau verticală.
Iluminearea si umbrele
Pentru a simula realismul, grafica 3D folosește modele de iluminare:
Modelul Phong, Gouraud - metode de calcul al luminii și umbrei pe suprafețe.
Tipuri de surse de lumină: punctuală, direcțională, ambientală.
Umbrele și reflexiile ajută la crearea unei impresii de adâncime și realism.
Rendering
Rendering este procesul final de generare a imaginii vizibile, pornind de la datele matematice ale scenei. Este cea mai importantă etapă pentru a transforma o scenă virtuală într-o imagine statică sau animată.
Rasterizare - rapidă, utilizată în grafica în timp real;
Ray tracing - calculează traiectoria razelor de lumină pentru realism sporit;
Path tracing, Radiosity - metode avansate pentru iluminare globală.
Texturarea
Texturarea presupune aplicarea unei imagini 2D (textură) pe suprafața unui obiect 3D pentru a adăuga detalii vizuale, cum ar fi culori, modele, imperfecțiuni etc. Se folosește o tehnică numită mapare UV pentru a alinia imaginea cu geometria obiectului.
Istoria grafici
Anii 1950-1960
1951 - Apare primul sistem de afișare grafică pe calculator, conectat la computerul Whirlwind de la MIT.
1957 - IBM dezvoltă primul plotter grafic, utilizat pentru a desena grafice tehnice.
1963 - Ivan Sutherland creează programul Sketchpad, considerat una dintre primele aplicații grafice interactive. Acesta introduce noțiuni precum obiecte grafice, constrângeri geometrice și interfață grafică.
Anii 1970
Această perioadă marchează apariția primelor aplicații de tip CAD (Computer-Aided Design) și utilizarea graficii în cercetare și industrie.
Anii 1980
1982 - Filmul Tron introduce efecte vizuale generate pe calculator, marcând un moment important în istoria filmelor CGI.
1984 - Apare primul Macintosh de la Apple, cu interfață grafică cu ferestre și pictograme.
Dezvoltarea primelor programe de grafică raster și vectorială (ex: AutoCAD, Paint).
Anii 1990
Apare suportul hardware pentru accelerarea 3D (plăci grafice precum 3dfx Voodoo, Nvidia RIVA).
Se dezvoltă API-uri grafice importante: OpenGL, Direct3D.
Filme precum Jurassic Park (1993) și Toy Story (1995 - primul film de animație 100% generat pe calculator) marchează un salt calitativ în grafica 3D.
Anii 2000-2010
Motoare grafice avansate (Unreal Engine, Unity) devin accesibile pentru dezvoltatori independenți.
GPU-urile devin instrumente esențiale nu doar pentru randare, ci și pentru procesare paralelă (GPGPU).
Grafica este integrată în web (WebGL), aplicații mobile și realitate augmentată
2010-prezent
Ray tracing în timp real devine posibil datorită arhitecturilor GPU dedicate (ex: NVIDIA RTX).
Inteligența artificială este utilizată pentru îmbunătățirea rezoluției (upscaling), generarea de texturi, animații și chiar modele 3D.
Realitatea virtuală (VR) și augmentată (AR) devin domenii emergente, cu aplicații în jocuri, educație și medicină.
Legături cu subdomenii
:explode:Inginerii software :explode:
Metodologii
:silhouette::
Modelul Waterfall :potable_water:
Modelul incremental și iterativ :pencil2:
Metode agile :fast_forward:
DevOps :control_knobs:
Procese esențiale
:bookmark_tabs:
Industrie
:computer:
IT :desktop_computer:
Roluri :warning:
Analiza cerințelor :ideograph_advantage:
Proiectare software :bulb:
Implementare :zap:
Testare :!?:
Mentenanță :smiley:
Calitate și metrici
:check:
Metode formale :information_source:
Metrici cantitative :small_orange_diamond:
Testare automată :cyclone:
Legături cu subdomenii :link:
Interacțiunea om-computer
Design
optimizarea timpului și efortului necesar pentru a finaliza o sarcină
crearea unei experiențe de utilizator eficiente
minimizarea erorilor : și a confuziilor în interacțiune
Relații cu celelalte subdomenii
Algoritmi și structuri de date
IOC depinde de algoritmi eficienți pentru a asigura un răspuns rapid în interfețele utilizatorilor
Inteligența artificială și robotica
aceasta contribuie semnificativ la construirea de sisteme care pot învăța din comportamentul utilizatorului, adaptând interacțiunea in mod dinamic.
Grafică
Stă la baza interfețelor, viziunile sunt interactive, animațiile și randarile 3D sunt elemente centrale în interfețele moderne
Probleme importante
Adaptarea interfeței la utilizator
Accesinilitate universală
Naturalețea interacțiunii
Evaluarea și testarea uzbilității
Legături cu subdomenii
Persoane importante
Douglas Engelbart
Alan Kay
Donald Norman
Forurile importante
ACM Transactions on Computer-Human Interaction
acoperă numeroase teme precum designul interfeței, evaluare, modele de interacțiune
International Journal of Human-Computer Studies
se regăsesc articole despre aspecte cognitive, economice si sociale
Inteligență artificială și Robotică
Inteligență artificială
Machine Learning (Învățare automată)
Supervised learning
Unsupervised learning
Reinforcement learning
Algoritmi
Rețele Neuronale
Procesarea Limbajului Natural (NLP)
Analiza sentimentelor
Chatbots
Traducere automată
Viziune Artificială (Computer Vision)
Recunoaștere facială
Detectarea obiectelor
Segmentare imagini
Algoritmi genetici
Aplicații ale IA
Robotică
Roboți industriali
Roboți mobili
Roboți umanoizi
Senzori și actuatori
Senzori de distanță, cameră, LIDAR
Motoare, servomecanisme
Control și programare
Arduino, Raspberry Pi
ROS (Robot Operating System)
Aplicații ale roboticii
Medicină
Agricultura
Educatie
BAZE DE DATE
COMPONENTE
STRUCTURALE
Acestea definesc arhitectura fizică și logică a bazei de date, adică modul în care datele sunt stocate și organizate
TABELE
Componente de bază ale unei baze de date relaționale
Stochează datele sub formă de rânduri și coloane
Un tabel reprezintă o entitate sau un obiect din domeniul aplicației.
ÎNREGISTRĂRI(rânduri)
O înregistrare este o linie completă de date dintr-o tabelă, care corespunde unei entități reale
Fiecare rând conține valori pentru fiecare câmp din tabelă.
CÂMPURI (coloane)
Definesc tipul de date stocat într-o coloană
Fiecare câmp are un nume și un tip de date asociat
CHEI
Chei primare (Primary Keys)
Este un identificator unic pentru fiecare înregistrare dintr-o tabelă
Aceasta asigură unicitatea rândurilor și este esențială pentru integritatea datelor
Chei externe (Foreign Keys)
Sunt câmpuri care creează relații între tabele
Fac legătura între cheia primară a unei tabele și o altă tabelă,
Permit organizarea datelor în mod relațional
RELATII INTRE TABELE
Definesc legăturile logice dintre tabele
Tipuri in functie de structura datelor și de logica aplicației
3 more items...
INDICI
Sunt structuri speciale care accelerează căutările în tabele
Funcționează ca un fel de „cuprins” al datelor și sunt utile în bazele de date mari
FUNCȚIONALE
Aceastea sunt folosite pentru interacțiunea cu datele, fie de către utilizatori, fie de către aplicații software.
INTEROGĂRI
Permit căutarea, selectarea, modificarea sau ștergerea datelor
Folosesc un limbaj specializat
SQL limbaj standard
XQuery
bazelor de date orientate pe documente care stochează date în format XML
Cypher
specific bazelor de date orientate pe grafuri
FORMULARE
componente vizuale utilizate pentru introducerea și actualizarea datelor într-o manieră ușor de utilizat
des întâlnite în aplicații precum Microsoft Access.
RAPOARTE
folosite pentru afișarea și tipărirea datelor într-un format structurat și estetic
utile pentru prezentarea rezultatelor analitice sau statistice
O bază de date este un sistem organizat de stocare și gestionare a informațiilor, care permite crearea, citirea, actualizarea și ștergerea datelor într-un mod eficient și structurat
TIPURI DE BAZE DE DATE
Pot fi clasificate în mai multe categorii, în funcție de modul în care sunt organizate, structurate și utilizate
Baze de date în rețea
Sunt similare celor ierarhice, dar permit relații complexe între înregistrări, nu doar de tip părinte-copil. Structura este un graf generalizat, nu un arbore
EXEMPLU
Integrated Data Store (IDS
AVANTAJ
modelează relații complexe
LIMITARI
implementare complicată
Utilizate de:
sisteme bancare și administrative vechi
Baze de date relaționale
Sunt cele mai utilizate baze de date
Datele sunt organizate în tabele cu rânduri și coloane
Relațiile între tabele sunt definite prin chei externe
folosesc limbajul SQL pentru interogare și manipulare.
EXEMPLE
MySQL
AVANTAJE
structura clară, integritate ridicată a datelor, standardizare
Utilizate de:
sisteme bancare
aplicații web
sisteme de gestiune :
Baze de date NoSQL
Ele se clasifică în mai multe subtipuri, în funcție de modelul de stocare
Baze de date orientate pe documente
Stochează datele sub formă de documente JSON, BSON sau XML
Fiecare document este o structură semi-structurată, similară unui obiect dintr-un limbaj de programare, și conține perechi cheie-valoare, liste și obiecte imbricate
AVANTAJE
flexibilitate în structura documentelor (nu e nevoie de aceeași schemă pentru toate).
ușor de lucrat cu aplicații web și API-uri REST
EXEMPLE:
MongoDB
CouchDB
Amazon DocumentDB
Utilizate de:
aplicații web dinamice
blogging
Baze de date cheie-valoare
Stochează informația ca o pereche cheie → valoare, unde cheia este un identificator unic, iar valoarea poate fi orice tip de date
AVANTALJE
performanță extrem de mare pentru acces direct
ideal pentru cache, sesiuni, stocare simplă
EXEMPLE
Amazon DynamoDB
Riak
Redis
Utilizate pentru:
memorare de sesiuni de utilizator
coșuri de cumpărături
Baze de date orientate pe coloane
Stochează datele pe coloane în loc de rânduri, ceea ce le face ideale pentru analize de tip Big Data
Fiecare „familie de coloane” poate conține date asociate unei chei.
AVANTAJE
optimizate pentru citiri masive de date și operațiuni analitice
pot gestiona baze de date de dimensiuni foarte mari.
EXEMPLE
Apache Cassandra
HBase
ScyllaDB
Utilizate de:
sisteme de recomandare
stocare de date la scară largă
Baze de date orientate pe grafuri
Stochează datele sub formă de noduri (entități) și muchii (relații), permițând modelarea eficientă a rețelelor complexe
Relațiile dintre entități sunt de primă clasă și pot avea atribute proprii
AVANTAJE
performanță excelentă pentru interogări relaționale complexe.
ideal pentru reprezentarea rețelelor sociale, hărților sau ierarhiilor.
EXEMPLE
Neo4j
Amazon Neptune
Utilizate de:
rețele sociale, motoare de recomandare
gestionarea fraudelor
analize de rețea
Baze de date ierarhice
Organizează datele într-o structură ierarhică asemănătoare unui arbore (tree), în care fiecare înregistrare are un „părinte” și potențial mai mulți „copii”.
EXEMPLU
IBM Information Management System (IMS
AVANTAJE
acces rapid la date structurate ierarhic
LIMITĂRI
flexibilitate scăzută, relații rigide
Utilizate de
sisteme vechi de gestiune, telecomunicații
Baze de date orientate pe obiecte
Stochează datele sub formă de obiecte, așa cum sunt definite în limbaje de programare orientate pe obiecte. Acestea păstrează atât datele, cât și metodele care operează asupra lor
EXEMPLE
db4o, ObjectDB
AVANTAJE
integrare directă cu limbaje OOP (Java, C++), potrivit pentru aplicații complexe
Utilizate de:
aplicații CAD, multimedia, sisteme științifice
Baze de date distribuite
Datele sunt stocate pe mai multe locații fizice (servere), dar sunt accesate ca un sistem unitar. Sunt utile pentru aplicații globale și mari volume de date
EXEMPLE
Google Spanner, Apache Cassandra (NoSQL distribuit)
AVANTAJE
redundanță, scalabilitate, disponibilitate ridicată
Utilizate de:
servicii web la scară mare, cloud computing
Baze de date temporale
Acestea stochează și gestionează informații legate de timp, cum ar fi data la care o înregistrare a fost validă sau modificată
Utilizare: aplicații financiare, gestiune de contracte, evidențe istorice
ARHITECTURA BAZELOR DE DATE
Arhitectura unei baze de date reprezintă modul în care sunt structurate și interconectate diferitele componente ale unui sistem de gestionare a bazelor de date (DBMS). Există mai multe nivele ale arhitecturii bazei de date
Arhitectura pe 3 nivele
1.Nivelul extern (sau utilizator): Reprezintă interfața utilizatorului cu baza de date. Acesta poate fi un software aplicație care interacționează cu datele
2.Nivelul logic (sau schema conceptuală): Reprezintă structura logică a datelor (tabele, relații între tabele, etc.), independent de cum sunt acestea stocate fizic.
3.Nivelul intern (sau schema fizică): Este nivelul care se ocupă de organizarea fizică a datelor pe discuri sau alte suporturi de stocare. Acesta se ocupă de gestionarea fișierelor și de structura fizică a datelor
Arhitectura pe 2 nivele
În acest caz, există doar două nivele: nivelul de aplicație (utilizator) și nivelul de stocare fizică a datelor. Acesta este un model mai simplu și mai puțin flexibil, folosit în aplicații mai puțin complexe
ADMINISTRAREA BAZELOR DE DATE
Administrarea bazelor de date reprezintă ansamblul de activități prin care se asigură buna funcționare, securitatea, integritatea și performanța sistemelor de baze de date. Este o activitate esențială pentru orice organizație care gestionează volume importante de informații
Principaleel responsabilități sunt:
Instalarea și configurarea SGBD-ului (ex: Oracle, MySQL, PostgreSQL).
Crearea și organizarea structurilor de date (tabele, indecși, proceduri stocate).
Monitorizarea performanței bazei de date
Implementarea politicilor de securitate și control al accesului.
Realizarea copiilor de siguranță (backup) și restaurarea datelor în caz de pierdere
Actualizarea și întreținerea sistemului (patch-uri, upgrade-uri)
ACTIVITATI PRINCIPALE DE ADMINISTRARE
Crearea si gestionarea utilizatorilor
Un prim pas în administrarea unei baze de date este definirea utilizatorilor care vor avea acces la sistem. Aceștia pot fi oameni (ex: angajați), aplicații sau servicii automate
Activități implicate sunt: crearea de conturi de utilizator, definirea rolurilor, atribuirea drepturilor de acces, auditarea activității utilizatorului
Securitatea datelor
Securitatea reprezintă un pilon fundamental al administrării. Protejarea informațiilor este o prioritate
Măsurile aplicate sunt: autentificarea strictă, autorizarea bazată pe roluri, criptarea datelor, mascarea datelor sensibile, monitorizarea si alerte
Backup
Procesul de creare a unor copii de siguranță ale datelor pentru a preveni pierderea informațiilor. Scopul backup-ului include restaurarea bazei de date, asigurarea continuității activității și respectarea politicilor de conformitate
Tipuri de backup
Backup complet care salvează întreaga bază de date, este cel mai sigur, dar consumă mult timp și spațiu și se face de obicei periodic
Backup incremental care salvează doar modificările apărute după ultimul backup(indiferent de tip).Este mai eficient ca viteză și spațiu.Necesită și backup-urile anterioare pentry restaurare completă
Backup diferențial care salvează modificările apărute de la ultimul backup complet.Este mai rapid ca un backup complet, dar mai mare decât unul incremental
Restaurarea bazelor de date
Procesul de refacere a unei baze de date dintr-un backup anterior. Este necesară în urma defecțiunilor hardware, atacurilor cibernetice, erorilor umane sau pentru migrarea sistemelor. Tipuri de restaurare includ restaurare completă, diferențială, incrementală și punctual
Tipuri de restaurare : Restaurare completă, Restaurare diferentială, Restaurare incrementăla, Restaurare punctuală
Optimizarea bazei de date
Îmbunătățirea performanței și eficienței sistemului, reducând timpul de răspuns și minimizând consumul de resurse. Aceasta include crearea și utilizarea indicilor , optimizarea interogărilor SQL , și normalizarea/denormalizarea
Migrarea și actualizarea
Adaptarea bazei de date pe măsură ce sistemele evoluează, incluzând migrarea datelor și actualizarea versiunii
Utilizarea uneltelor specializate
Administratorii folosesc instrumente dedicate pentru gestionarea bazelor de date, cum ar fi SQL Server Management Studio, Oracle Enterprise Manager, RMAN, mysqldump, Zabbix, Prometheus, Grafana
Tipuri de adminstrare
Admoinistrare preventivă
Administrare corectivă
Administrare corectivă
TRANZACȚII SI PROPRIETĂȚI
Tranzacțiile sunt operațiuni care se efectuează în întregime sau nu se efectuează deloc, garantând astfel consistența bazei de date. Proprietățile ACID (Atomicitate, Consistență, Izolare, Durabilitate) asigură că datele rămân corecte și consistente în timpul procesării
Operații esențiale ale unei tranzacții
BEGIN sau START TRANSACTION: începe o tranzacție,COMMIT: salvează modificările și finalizează tranzacția, ROLLBACK: anulează toate modificările făcute în cadrul tranzacției, SAVEPOINT: marchează un punct în tranzacție la care se poate reveni, SET TRANSACTION: setează nivelul de izolare
Interacțiunea bazelor de date cu alte subdomenii ale informaticii
Bazele de date reprezintă un pilon esențial în informatică, fiind implicate într-o gamă largă de aplicații. Ele nu funcționează izolat, ci colaborează strâns cu multe alte subdomenii pentru a oferi soluții complete și eficiente
Sisteme de operare (SO):
Bazele de date sunt strâns legate de sistemele de operare, care gestionează resursele hardware necesare funcționării acestora: memorie, fișiere, procese, multitasking
Inteligență artificială (AI) și Machine Learning (ML)
AI are nevoie de cantități mari de date pentru antrenarea algoritmilor. Bazele de date oferă infrastructura pentru stocare, organizare și acces rapid la aceste date
Ingineria software
În cadrul dezvoltării aplicațiilor software, bazele de date sunt utilizate pentru stocarea datelor persistente (ex: conturi de utilizator, date de business
Securitatea informatică
Bazele de date conțin frecvent informații sensibile (ex: date personale, financiare), iar protejarea acestora este crucială
Interacțiunea om-calculator (HCI)
Interfețele aplicațiilor permit utilizatorilor să interacționeze ușor cu bazele de date, fără cunoștințe tehnice
Exemple: Formulare pentru introducerea datelor, Sisteme vizuale de interogare, Dashboard-uri pentru analiza datelor
Personalitati importante
Edgar F. Codd
A fost creatorul modelului relațional – fundamentul bazelor de date moderne.A publicat în 1970 lucrarea revoluționară „A Relational Model of Data for Large Shared Data Banks".A introdus concepte esențiale precum tabele relaționale, chei primare, chei externe și normalizare. Este considerat părintele bazelor de date relaționale.
Donald D. Chamberlin si Raymond F. Boyce
Au dezvoltat limbajul SQL (Structured Query Language) în anii 1970 la IBM.SQL a devenit limbajul standard de interogare și manipulare a datelor în bazele relaționale.Raymond Boyce este coautor al formei normale Boyce-Codd (BCNF), utilizată în normalizare. SQL este unul dintre cele mai importante instrumente în lucrul cu baze de date
Sunt autorii definiției formale a proprietăților ACID ale tranzacțiilor. Au contribuit la înțelegerea riguroasă a comportamentului tranzacțiilor în bazele de date. Contribuția lor este esențială pentru siguranța și coerența datelor
Andreas Reuter si Theo Härder
Probleme importante si deschise in domeniul bazelor de date
Gestionarea eficientă a volumelor masive de date (Big Data)
În era digitală, volumele de date generate de oameni, dispozitive și aplicații au crescut exponențial. Sistemele tradiționale de baze de date nu mai fac față cantităților imense de informații
Provocări : Stocarea eficientă a datelor distribuite geografic, Procesarea paralelă și rapidă (folosind Hadoop, Spark), Răspunsuri în timp real la interogări complexe, Menținerea consistenței și integrității datelor la scară largă
Securitatea și confidențialitatea datelor
Pe măsură ce datele devin tot mai valoroase, crește și interesul pentru protejarea lor împotriva accesului neautorizat, scurgerilor sau atacurilor informatice
Provocări: Protejarea datelor sensibile (ex: date personale, financiare), Prevenirea atacurilor cibernetice precum SQL injection, Implementarea criptării eficiente, fără a compromite performanța, Aplicarea conceptelor de confidențialitate diferențială (differential privacy) în baze de date
Interogări eficiente în baze distribuite sau în cloud
Multe baze de date moderne sunt stocate în cloud sau distribuite pe mai multe servere. Acest lucru implică dificultăți în gestionarea interogărilor și a consistenței datelor.
Provocări: Cum se menține sincronizarea între noduri?, Problemele impuse de teorema CAP (nu se poate avea simultan consistență, disponibilitate și toleranță la partiționare), Optimizarea interogărilor pentru latență minimă, Reducerea costurilor asociate cu transferul de date în cloud
CONCLUZIE : Bazele de date nu sunt un domeniu „rezolvat”, ci unul în continuă transformare
Conferințe în domeniul bazelor de date
Very Large Data Bases
Una dintre cele mai prestigioase conferințe anuale din domeniul bazelor de date. Atrage cercetători și profesioniști din întreaga lume
Special Interest Group on Management of Data
Organizat de ACM. Este una dintre cele mai influente conferințe din lume privind gestionarea și stocarea datelor.
Principles of Database Systems
Axată mai ales pe fundamente teoretice ale bazelor de date. Este adesea organizată în paralel cu Special Interest Group on Management of Data
Reviste de specialitate în domeniul bazelor de date
ACM Transactions on Database Systems (TODS)
Publicată de ACM (Association for Computing Machinery), Publică articole teoretice și aplicate legate de proiectarea, implementarea și analiza bazelor de date
Revista oficială a VLDB Endowment. Se concentrează pe baze de date de mari dimensiuni, sisteme distribuite și tehnologii emergente.
The VLDB Journal (Very Large Data Bases Journal)
Information Systems
Revista internațională care acoperă subiecte precum modelarea bazelor de date, sisteme de informații, aplicații în business.
Algoritmi si Structuri de Date
Structuri Hash
Hash Table
Trie
Structuri Neliniare:
Arbori
AVL
Binari de cautare
Splay
Grafuri
Structuri Liniare :
Vectori
Liste inlantuite
Stive
Cozi
Algoritmi
Succesiune de pasi finiti
pentru rezolvarea
unor probleme
Tipuri de algoritmi
Algoritmi de sortare
Bubblesort
Merge sort
Quick sort
Algoritmi de graf
BFS
DFS
Dijkstra
Analiza algoritmilor
Complexitate temporala
Reprezintă cât timp durează
executarea algoritmului în
funcție de dimensiunea datelor de intrare
Complexitate spatiala
Reprezintă câtă memorie suplimentară
folosește algoritmul în funcție
de dimensiunea intrării.
Notatia Big-O
Este o metodă standard pentru
a descrie comportamentul algoritmului în cazuri
Best Case
Average Case
Worst Case
Relatia dintre algoritmi si structuri de date
Algoritmii au nevoie de structuri de date
Structura de date influențează eficiența
Algoritmii sunt implementați pe structuri de date
Structurile de date sunt construite cu algoritmi
Relatia cu celelalte subdomenii
Programare
Algoritmii sunt transformați în cod prin limbaje de programare.
Structurile de date sunt implementate direct în cod (liste, dicționare, clase etc.)
Orice aplicație software se bazează pe alegerea corectă a algoritmilor și structurilor.
IA
IA folosește algoritmi speciali (de învățare, căutare, optimizare).
Structurile de date sunt esențiale pentru gestionarea rețelelor neuronale, arborilor de decizie, grafurilor etc.
Baze de date
Indexarea, căutarea, sortarea datelor se bazează pe algoritmi clasici și structuri eficiente (B-arbori, hash tables).
Arhitectura calculatoarelor
Gestionarea memoriei, execuția instrucțiunilor, cache-uri — toate folosesc algoritmi specifici și structuri adecvate.
Retele de calculatoare
Transmiterea pachetelor, rutarea, controlul congestionării folosesc algoritmi de graf și structuri de cozi, tabele.
Securitate cibernetica
Algoritmi de criptare, hashing, semnături digitale sunt esențiali.
Structuri precum tabele de dispersie (hash tables) sunt folosite la autentificare.
Arhitectura
Activități principale
Teorie
Arhitectura studiază modelele conceptuale ale calculatoarelor (modelul Von Neumann, paralelism, ierarhii de memorie). Se ocupă cu abstractizarea nivelurilor hardware și modul în care acestea influențează performanța și eficiența sistemelor de calcul.
Design
Proiectarea efectivă a arhitecturilor hardware – procesoare, magistrale, ierarhii de memorie, unități specializate (GPU, TPU), sisteme multicore, etc.
Experiment
Realizarea și testarea de prototipuri hardware sau simulări ale arhitecturilor propuse (ex: compararea performanței între arhitecturi RISC vs. CISC, sau între procesoare single-core și multi-core)
Experiment
Foruri importante
Conferințe
MICRO – IEEE/ACM International Symposium on Microarchitecture
HPCA – IEEE International Symposium on High-Performance Computer Architecture
ISCA – International Symposium on Computer Architecture
ASPLOS – Architectural Support for Programming Languages and Operating Systems
Reviste
ACM Transactions on Computer Systems (TOCS)
IEEE Transactions on Computers
IEEE Micro
Persoane importante
Seymour Cray
Pionier în arhitectura supercalculatoarelor.
David Patterson
Co-inventator RISC (Reduced Instruction Set Computing).
John von Neumann
Arhitectura care îi poartă numele stă la baza majorității calculatoarelor moderne.
John Hennessy
Coautor al faimosului manual „Computer Architecture: A Quantitative Approach”
Probleme importante și probleme deschise
Importante
Scalabilitatea în arhitecturile multi-core.
Proiectarea memoriilor cache și accesul paralel eficient.
Eficiența energetică vs. performanță (ex: procesoare pentru telefoane vs. pentru supercomputere).
Deschise
"Cum proiectăm o arhitectură scalabilă la nivel de exascale computing?"
Problema apare în supercomputere, unde comunicarea și sincronizarea între mii de nuclee devine un obstacol major.
"Putem obține performanță mare cu consum minim de energie?"
E o problemă majoră în dispozitivele mobile și IoT.
"Cum se pot proiecta arhitecturi eficiente pentru rețele neuronale?"
A dus la apariția TPU-urilor și a altor procesoare AI specializate.
: