<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ivan Luminaria</title><link>https://ivanluminaria.com/ro/</link><description>Recent content on Ivan Luminaria</description><generator>Hugo</generator><language>ro</language><lastBuildDate>Tue, 31 Mar 2026 08:03:00 +0100</lastBuildDate><atom:link href="https://ivanluminaria.com/ro/index.xml" rel="self" type="application/rss+xml"/><item><title>Binary log în MySQL: ce sunt, cum le gestionezi și când le poți șterge</title><link>https://ivanluminaria.com/ro/posts/mysql/binary-log-mysql/</link><pubDate>Tue, 31 Mar 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/mysql/binary-log-mysql/</guid><description>&lt;p&gt;Mesajul pe canalul Slack al echipei de infrastructură era din acelea care te fac să ridici capul de la ecran: &amp;ldquo;Disc la 95% pe db-ul de producție. Cine poate să se uite?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Serverul era un MySQL 8.0 pe Rocky Linux, un sistem de gestiune folosit de aproximativ o sută de utilizatori. Baza de date în sine ocupa circa 40 GB — nimic extraordinar. Dar în directorul de date se aflau 180 GB de binary log. Șase luni de binlog pe care nimeni nu se gândise să le gestioneze.&lt;/p&gt;</description></item><item><title>VACUUM și autovacuum: de ce PostgreSQL are nevoie ca cineva să facă curățenie</title><link>https://ivanluminaria.com/ro/posts/postgresql/vacuum-autovacuum-postgresql/</link><pubDate>Tue, 24 Mar 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/postgresql/vacuum-autovacuum-postgresql/</guid><description>&lt;p&gt;Acum câțiva ani mi s-a cerut să verific un PostgreSQL în producție care
&amp;ldquo;se încetinește în fiecare săptămână&amp;rdquo;. Mereu același tipar: luni merge
bine, vineri e dezastru. În weekend cineva repornește serviciul și se
începe de la capăt.&lt;/p&gt;
&lt;p&gt;Baza de date de aproximativ 200 GB. Tabelele principale ocupau aproape
triplul spațiului efectiv al datelor. Query-uri care cădeau în
sequential scan acolo unde nu ar fi trebuit. Timpii de răspuns creșteau
zi de zi.&lt;/p&gt;</description></item><item><title>AI Manager și Project Management: când inteligența artificială intră în proiecte</title><link>https://ivanluminaria.com/ro/posts/project-management/ai-manager-project-management/</link><pubDate>Tue, 17 Mar 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/project-management/ai-manager-project-management/</guid><description>&lt;p&gt;Acum câteva luni, într-o întâlnire cu un client din sectorul bancar, CTO-ul a spus ceva ce mi-a rămas în minte.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;„Avem nevoie de cineva care să gestioneze AI-ul. Nu cineva care îl folosește — cineva care îl guvernează.&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Am dat din cap fără să vorbesc. Pentru că acea frază, în șapte secunde, descria un rol pe care piața îl caută fără să știe încă cum să-l numească.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-neînțelegerea-fundamentală" class="relative group"&gt;🧩 Neînțelegerea fundamentală &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#-ne%c3%aen%c8%9belegerea-fundamental%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Există o confuzie răspândită, și o văd în fiecare proiect unde AI-ul intră în scenă.&lt;/p&gt;</description></item><item><title>Plăți la 60-90-120 de zile: normalitatea italiană care nu există în Europa</title><link>https://ivanluminaria.com/ro/posts/project-management/pagamenti-60-90-120-giorni/</link><pubDate>Tue, 10 Mar 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/project-management/pagamenti-60-90-120-giorni/</guid><description>&lt;p&gt;Prima dată când am lucrat cu un client internațional, mi s-a întâmplat ceva ciudat. M-au plătit în treizeci de zile.&lt;/p&gt;
&lt;p&gt;Nu treizeci de zile de la sfârșitul lunii. Nu treizeci de zile de la data primirii facturii înregistrate și vizate de responsabilul administrativ. Treizeci de zile de la factură. Punct.&lt;/p&gt;
&lt;p&gt;Am verificat extrasul de cont de două ori. Am crezut că este o greșeală.&lt;/p&gt;
&lt;p&gt;Nu era o greșeală. Era normalitatea — doar că nu era normalitatea italiană.&lt;/p&gt;</description></item><item><title>Data Warehouse Architect</title><link>https://ivanluminaria.com/ro/resumes/dwh-architect/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/resumes/dwh-architect/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://ivanluminaria.com/downloads/CV_DWH_Architect_Ivan_Luminaria_202603_EN.pdf" target="_blank" rel="noreferrer"&gt;Descarca PDF&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href="https://www.linkedin.com/in/ivanluminaria" target="_blank" rel="noreferrer"&gt;Profil LinkedIn&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="profil-profesional" class="relative group"&gt;Profil Profesional &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#profil-profesional" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Data Warehouse Architect si profesionist IT cu aproape 30 de ani de experienta in proiectarea, implementarea si gestionarea solutiilor DWH complexe si de inalta performanta in medii Oracle si PostgreSQL. Expert in metodologii de modelare multidimensionala a datelor (Kimball, Inmon) si in optimizarea proceselor ETL/ELT si a interogatiilor SQL pe seturi de date de la sute de milioane la miliarde de randuri. Capacitate demonstrata de a conduce proiecte DWH de la un capat la altul — de la analiza cerintelor pana la punerea in productie — asigurand integritatea, calitatea si disponibilitatea datelor pentru a sprijini deciziile de business. Leadership tehnic si mentalitate orientata catre rezolvarea problemelor in contexte internationale si full-remote.&lt;/p&gt;</description></item><item><title>Oracle DBA &amp; Performance Tuning Expert</title><link>https://ivanluminaria.com/ro/resumes/oracle-dba/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/resumes/oracle-dba/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://ivanluminaria.com/downloads/CV_Oracle_DBA_Ivan_Luminaria_202603_EN.pdf" target="_blank" rel="noreferrer"&gt;Descarca PDF&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href="https://www.linkedin.com/in/ivanluminaria" target="_blank" rel="noreferrer"&gt;Profil LinkedIn&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="profil-profesional" class="relative group"&gt;Profil Profesional &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#profil-profesional" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Senior Oracle DBA si Performance Tuning Expert cu aproape 30 de ani de experienta specializata in administrarea, optimizarea si gestionarea bazelor de date Oracle complexe si critice, inclusiv medii Exadata, RAC si Oracle Cloud (OCI, Autonomous Database). Expertiza avansata in analiza performantei (AWR, ADDM, ASH), optimizarea interogatiilor SQL complexe, tuning-ul instantelor si rezolvarea problemelor de performanta. Cunostinte solide in practici legate de backup &amp;amp; recovery (RMAN), securitate (TDE), instalare, patching, migrari si gestionarea stocarii (ASM), performanta ramanand principala si cea mai aprofundata arie de expertiza, cruciala pentru integritatea, performanta si contributia la disponibilitatea ridicata a sistemelor Oracle in medii corporative exigente si internationale.&lt;/p&gt;</description></item><item><title>Oracle PL/SQL Developer</title><link>https://ivanluminaria.com/ro/resumes/oracle-plsql/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/resumes/oracle-plsql/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://ivanluminaria.com/downloads/CV_Oracle_PLSQL_Ivan_Luminaria_202603_EN.pdf" target="_blank" rel="noreferrer"&gt;Descarca PDF&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href="https://www.linkedin.com/in/ivanluminaria" target="_blank" rel="noreferrer"&gt;Profil LinkedIn&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="profil-profesional" class="relative group"&gt;Profil Profesional &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#profil-profesional" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Senior Oracle PL/SQL Developer cu aproape 30 de ani de experienta in proiectarea, dezvoltarea, testarea si optimizarea codului PL/SQL robust si eficient pentru aplicatii cu volume mari de date si sisteme Data Warehouse. Expertiza avansata in crearea de pachete, proceduri, functii, triggere si tipuri complexe, cu un accent constant pe performanta, mentenabilitate si calitatea codului. Expert in optimizarea interogarilor SQL complexe si gestionarea volumelor mari de date. Abilitate in transpunerea cerintelor de business in logica aplicativa performanta si scalabila in cadrul bazei de date Oracle. Parcurs consolidat si ca Oracle DBA si DWH Architect, oferind o viziune completa asupra ciclului de viata al datelor.&lt;/p&gt;</description></item><item><title>Project Manager</title><link>https://ivanluminaria.com/ro/resumes/project-manager/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/resumes/project-manager/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://ivanluminaria.com/downloads/CV_Project_Manager_Ivan_Luminaria_202603_EN.pdf" target="_blank" rel="noreferrer"&gt;Descarca PDF&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href="https://www.linkedin.com/in/ivanluminaria" target="_blank" rel="noreferrer"&gt;Profil LinkedIn&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="profil-profesional" class="relative group"&gt;Profil Profesional &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#profil-profesional" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Project Manager cu aproape 30 de ani de experienta in IT si un fundament tehnic solid in medii Data Warehouse si Oracle. Peste 10 proiecte livrate cu un istoric excelent de respectare a termenelor, gestionand echipe de 3-7 persoane in contexte multiculturale si remote, pe proiecte cu bugete in intervalul €100K-€500K. Competente concrete in planificare, managementul riscurilor, coordonarea resurselor si relatia cu stakeholderii — dezvoltate pe teren coordonand activitati de dezvoltare, release si mentenanta pentru clienti din sectoarele Bancar, Telco, Asigurari si Administratie Publica. Metodologii Agile (Scrum) aplicate in managementul zilnic al proiectelor, cu formare certificata. Fundament tehnic aprofundat (arhitectura DWH, Oracle DBA, PL/SQL, ETL/ELT) care permite comunicarea eficienta cu echipele de dezvoltare, evaluarea realista a fezabilitatii si identificarea timpurie a riscurilor tehnice.&lt;/p&gt;</description></item><item><title>Bicicletă vs Mașină la Roma: dimineața care mi-a deschis ochii</title><link>https://ivanluminaria.com/ro/posts/project-management/bici-vs-auto-roma/</link><pubDate>Tue, 03 Mar 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/project-management/bici-vs-auto-roma/</guid><description>&lt;p&gt;Luni dimineața. Alarma la 6:40. Duș, mic dejun rapid, cheile mașinii pe masă. Ies din casă la 7:15.&lt;/p&gt;
&lt;p&gt;Locuiesc în zona Appio Latino. Biroul este pe Via Crescenzio, în Prati. Opt kilometri în linie dreaptă. Ar trebui să fie cincisprezece minute. La Roma, e altă poveste.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-dimineața-cu-mașina" class="relative group"&gt;🚗 Dimineața cu mașina &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#-diminea%c8%9ba-cu-ma%c8%99ina" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Via Appia Nuova e deja o parcare. Porta San Giovanni, o pâlnie. Lungotevere, o procesiune funebră cu claxoane.&lt;/p&gt;</description></item><item><title>Oracle pe Linux: parametrii kernel pe care nimeni nu-i configurează</title><link>https://ivanluminaria.com/ro/posts/oracle/oracle-linux-kernel/</link><pubDate>Tue, 24 Feb 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/oracle/oracle-linux-kernel/</guid><description>&lt;p&gt;Clientul era o companie de logistică cu Oracle 19c Enterprise Edition pe Oracle Linux 8. Șaizeci de utilizatori concurenți, o aplicație ERP personalizată, circa 400 GB de date. Serverul era un Dell PowerEdge cu 128 GB de RAM și 32 de core-uri.&lt;/p&gt;
&lt;p&gt;Plângerile erau vagi dar persistente: &amp;ldquo;Sistemul e lent.&amp;rdquo; &amp;ldquo;Query-urile de dimineață durează dublu față de acum două luni.&amp;rdquo; &amp;ldquo;Din când în când se blochează totul câteva secunde.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Când m-am conectat pe server, primul lucru pe care l-am verificat nu a fost baza de date. A fost sistemul de operare.&lt;/p&gt;</description></item><item><title>Smart working în consultanța IT: cifrele pe care nimeni nu vrea să le vadă</title><link>https://ivanluminaria.com/ro/posts/project-management/smartworking-consulenza-it/</link><pubDate>Tue, 24 Feb 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/project-management/smartworking-consulenza-it/</guid><description>&lt;p&gt;6:47 într-o marți obișnuită. Sunt în parcul de lângă casă, echipat pentru alergare. Aerul e proaspăt, soarele abia răsare. Am făcut deja patru kilometri. Mă simt viu.&lt;/p&gt;
&lt;p&gt;La 7:00 sunt la duș. La 7:20 iau micul dejun în liniște. La 7:45 sunt la birou, odihnit, concentrat, gata de lucru.&lt;/p&gt;
&lt;p&gt;La aceeași oră, un coleg al meu e încă blocat pe Pontina. Sau pe raccordo, între Casilina și Tuscolana. Are deja telefonul în mână — nu ca să lucreze, ci ca să trimită mesajul clasic: &amp;ldquo;Scuze, întârzii, a fost un accident.&amp;rdquo;&lt;/p&gt;</description></item><item><title>Despre mine</title><link>https://ivanluminaria.com/ro/about/</link><pubDate>Fri, 20 Feb 2026 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/about/</guid><description>&lt;div class="profile-header flex flex-col sm:flex-row sm:items-center items-start"&gt;
 &lt;div class="flex-none"&gt;
 &lt;img
 src='https://ivanluminaria.com/img/ivan_luminaria_avatar.png'
 alt="Ivan Luminaria"
 class="profile-avatar rounded-full shadow-xl border-4 border-slate-100"&gt;
 &lt;/div&gt;
 &lt;div class="profile-text text-left"&gt;
 &lt;h1 class="mb-1"&gt;IVAN LUMINARIA&lt;/h1&gt;
 &lt;h3 class="mt-0 text-slate-500"&gt;
 Oracle, PostgreSQL &amp; MySQL Expert | DWH Architect | Project Manager
 &lt;/h3&gt;
 &lt;p class="mt-4"&gt;
 Profesionist IT cu aproximativ &lt;strong&gt;30 de ani de experiență&lt;/strong&gt; în proiectarea, implementarea și gestionarea soluțiilor de baze de date și Data Warehouse în medii Oracle, PostgreSQL și MySQL.
 &lt;/p&gt;
 &lt;p class="mt-2" style="font-size: 0.9em;"&gt;
 &lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;a href="https://www.linkedin.com/in/ivanluminaria/" target="_blank" rel="noopener"&gt;ivanluminaria&lt;/a&gt;&lt;br&gt;
 &lt;strong&gt;Email:&lt;/strong&gt; ivan (dot) luminaria (at) gmail (dot) com
 &lt;/p&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;Lucrez cu baze de date de aproximativ treizeci de ani.&lt;/p&gt;</description></item><item><title>Galera Cluster cu 3 noduri: cum am rezolvat o problemă de disponibilitate pe MySQL</title><link>https://ivanluminaria.com/ro/posts/mysql/galera-cluster-3-nodi/</link><pubDate>Tue, 17 Feb 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/mysql/galera-cluster-3-nodi/</guid><description>&lt;p&gt;Tichetul era laconic, cum se întâmplă adesea când problema e gravă: &amp;ldquo;Baza de date a căzut din nou. Aplicația e oprită. A treia oară în două luni.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Clientul avea un MariaDB pe un singur server Linux — o aplicație de gestiune de afaceri folosită de aproximativ două sute de utilizatori interni, cu vârfuri de încărcare în timpul închiderilor contabile de sfârșit de lună. De fiecare dată când serverul avea o problemă — un disc care se încetinea, o actualizare de sistem care necesita restart, un proces care consuma toată memoria RAM — baza de date cădea și cu ea întreaga operativitate a companiei.&lt;/p&gt;</description></item><item><title>AWR, ASH și cele 10 minute care au salvat un go-live</title><link>https://ivanluminaria.com/ro/posts/oracle/oracle-awr-ash/</link><pubDate>Tue, 10 Feb 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/oracle/oracle-awr-ash/</guid><description>&lt;p&gt;Vineri, ora 18:40. Aveam deja geaca pe mine, gata de plecare. Telefonul vibrează. E project managerul.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Ivan, avem o problemă. Sistemul merge foarte lent. Mâine dimineață e go-live-ul.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Nu e prima dată când primesc un astfel de apel. Dar tonul era diferit. Nu era plângerea obișnuită despre lentoare. Era panică.&lt;/p&gt;
&lt;p&gt;Mă reconectez prin VPN, deschid o sesiune pe baza de date Oracle 19c a clientului. Primul lucru pe care îl fac e o verificare rapidă:&lt;/p&gt;</description></item><item><title>Roluri și utilizatori în PostgreSQL: de ce totul este (doar) un ROLE</title><link>https://ivanluminaria.com/ro/posts/postgresql/postgresql_roles_and_users/</link><pubDate>Tue, 10 Feb 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/postgresql/postgresql_roles_and_users/</guid><description>&lt;p&gt;Prima dată când am lucrat serios cu PostgreSQL veneam după
ani de experiență cu alte baze de date. Căutam comanda &lt;code&gt;CREATE USER&lt;/code&gt;. O găseam.
Apoi vedeam &lt;code&gt;CREATE ROLE&lt;/code&gt;. Apoi &lt;code&gt;ALTER USER&lt;/code&gt;. Apoi &lt;code&gt;ALTER ROLE&lt;/code&gt;.&lt;br&gt;
Pentru câteva minute am gândit: „Bine, aici cineva se distrează
încurcând lumea.”&lt;/p&gt;
&lt;p&gt;În realitate, nu. PostgreSQL este mult mai coerent decât pare.
Doar că este coerent în felul lui.&lt;/p&gt;
&lt;h2 id="în-postgresql-nu-există-utilizatori-există-roluri" class="relative group"&gt;În PostgreSQL nu există utilizatori. Există roluri. &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#%c3%aen-postgresql-nu-exist%c4%83-utilizatori-exist%c4%83-roluri" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cheia este aceasta: &lt;strong&gt;în PostgreSQL totul este un ROLE&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Când haosul devine metodă: AI și GitHub pentru gestionarea unui proiect pe care nimeni nu voia să-l atingă</title><link>https://ivanluminaria.com/ro/posts/project-management/ai-github-project-management/</link><pubDate>Tue, 03 Feb 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/project-management/ai-github-project-management/</guid><description>&lt;p&gt;Mă sună un client. Voce tensionată, cuvinte măsurate.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Ivan, avem o problemă. De fapt, avem &lt;strong&gt;problema&lt;/strong&gt;.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Cunosc tonul ăsta. E tonul celui care a încercat deja să rezolve lucrurile intern, a eșuat, și acum caută pe cineva care să-i spună adevărul fără ocolișuri.&lt;/p&gt;
&lt;p&gt;Problema este un software de gestiune — nu un site web, nu o aplicație — un sistem critic pe care rulează procese de business importante. Are câțiva ani. A crescut repede, cum se întâmplă întotdeauna când business-ul aleargă mai repede decât arhitectura. Și acum s-a acumulat totul: bug-uri deschise pe care nimeni nu le închide, cereri de evoluție pe care nimeni nu le planifică, dezvoltatori care lucrează pe versiuni diferite ale codului fără să știe ce face celălalt.&lt;/p&gt;</description></item><item><title>Standup meeting: de ce funcționează doar dacă durează 15 minute</title><link>https://ivanluminaria.com/ro/posts/project-management/standup-meeting-15-minuti/</link><pubDate>Tue, 27 Jan 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/project-management/standup-meeting-15-minuti/</guid><description>&lt;p&gt;Prima zi de luni a proiectului. Echipă nouă, metodologie nouă, speranțe noi. PM-ul propune standup-ul zilnic. Toți dau din cap. &amp;ldquo;Cincisprezece minute, în picioare, trei întrebări. Simplu.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Prima săptămână funcționează. La 9:15 începe, la 9:28 ești deja la birou. Fiecare spune ce are de spus în două minute, se semnalează blocajele, se salută. Eficiență pură.&lt;/p&gt;
&lt;p&gt;A doua săptămână cineva ridică mâna în mijlocul rundei: &amp;ldquo;Pot să explic un moment problema pe care o am cu integrarea?&amp;rdquo; Cinci minute de discuție tehnică între două persoane. Ceilalți șase stau și ascultă ceva ce nu-i privește.&lt;/p&gt;</description></item><item><title>Utilizatori, roluri și privilegii în Oracle: de ce GRANT ALL nu este niciodată răspunsul</title><link>https://ivanluminaria.com/ro/posts/oracle/oracle-roles-privileges/</link><pubDate>Tue, 27 Jan 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/oracle/oracle-roles-privileges/</guid><description>&lt;p&gt;Mi s-a întâmplat de mai multe ori: intru într-un mediu Oracle și găsesc aceeași situație. Toți utilizatorii aplicativi conectați ca schema owner, cu rolul DBA atribuit. Dezvoltatori, procese batch, instrumente de raportare — toți cu aceleași privilegii ca utilizatorul proprietar al tabelelor.&lt;/p&gt;
&lt;p&gt;Când întrebi de ce, răspunsul este mereu o variantă a: „Așa funcționează totul fără probleme de permisiuni.&amp;quot;&lt;/p&gt;
&lt;p&gt;Sigur. Totul funcționează. Până în ziua în care un dezvoltator execută un &lt;code&gt;DROP TABLE&lt;/code&gt; pe tabela greșită. Sau un batch de import face un &lt;code&gt;TRUNCATE&lt;/code&gt; pe o tabelă de producție crezând că este în mediul de test. Sau cineva execută un &lt;code&gt;DELETE FROM clienti&lt;/code&gt; fără clauza &lt;code&gt;WHERE&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Ierarhii dezechilibrate: când clientul nu are părinte și grupul nu are bunic</title><link>https://ivanluminaria.com/ro/posts/data-warehouse/ragged-hierarchies/</link><pubDate>Tue, 20 Jan 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/data-warehouse/ragged-hierarchies/</guid><description>&lt;p&gt;Trei niveluri. Top Group, Group, Client. Pare o structură banală — tipul de ierarhie pe care o desenezi pe o tablă în cinci minute și pe care orice instrument de BI ar trebui să o gestioneze fără probleme.&lt;/p&gt;
&lt;p&gt;Apoi descoperi că nu toți clienții aparțin unui grup. Și că nu toate grupurile aparțin unui top group. Și că rapoartele de agregare pe care business-ul le solicită — cifra de afaceri per top group, număr de clienți per grup, &lt;span class="glossary-tip" tabindex="0" data-glossary-desc="Navigare în rapoarte de la un nivel agregat la un nivel de detaliu, tipică analizei OLAP și data warehouse-urilor." data-glossary-url="https://ivanluminaria.com/ro/glossary/drill-down/" data-glossary-more="Citește mai mult →"&gt;drill-down&lt;/span&gt;
 de la vârf la frunză — produc rezultate greșite sau incomplete pentru că ierarhia are goluri.&lt;/p&gt;</description></item><item><title>Tehnica Da-Și: cum am evitat o discuție care era pe punctul de a exploda</title><link>https://ivanluminaria.com/ro/posts/project-management/tecnica-si-e-yes-and/</link><pubDate>Tue, 13 Jan 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/project-management/tecnica-si-e-yes-and/</guid><description>&lt;p&gt;Era o joi după-amiază, una dintre acele ședințe care pe hârtie trebuia să dureze o oră. Eram șapte, conectați într-un call. Ordinea de zi era simplă: să decidem strategia de migrare a unei baze de date Oracle din on-premise în cloud.&lt;/p&gt;
&lt;p&gt;Simplă, desigur. Pe hârtie.&lt;/p&gt;
&lt;p&gt;După douăzeci de minute, ședința se transformase într-un duel.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-scânteia" class="relative group"&gt;🔥 Scânteia &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#-sc%c3%a2nteia" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;De o parte era responsabilul de infrastructură. Om cu experiență, douăzeci de ani de datacentere în spate. Poziția lui era de granit: &lt;strong&gt;migrare lift-and-shift, zero modificări la arhitectură, mutăm totul așa cum este&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Utilizatori MySQL: de ce 'mario' și 'mario'@'localhost' nu sunt aceeași persoană</title><link>https://ivanluminaria.com/ro/posts/mysql/mysql-users-and-hosts/</link><pubDate>Tue, 13 Jan 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/mysql/mysql-users-and-hosts/</guid><description>&lt;p&gt;Acum câteva săptămâni un client mă sună. Ton pragmatic, cerere aparent banală:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;„Trebuie să creez un utilizator pe MySQL pentru o aplicație care trebuie să acceseze o bază de date. Te poți ocupa?&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sigur. &lt;code&gt;CREATE USER&lt;/code&gt;, &lt;span class="glossary-tip" tabindex="0" data-glossary-desc="Comandă SQL pentru atribuirea de privilegii specifice unui utilizator sau rol pe baze de date, tabele sau coloane. În MySQL 8 nu mai creează utilizatori implicit." data-glossary-url="https://ivanluminaria.com/ro/glossary/grant/" data-glossary-more="Citește mai mult →"&gt;`GRANT`&lt;/span&gt;
, următorul.&lt;/p&gt;
&lt;p&gt;Doar că apoi adaugă: „Aplicația rulează pe două servere diferite. Și uneori ne vom conecta și local pentru mentenanță.&amp;quot;&lt;/p&gt;</description></item><item><title>Când un LIKE '%valoare%' încetinește totul: un caz real de optimizare PostgreSQL</title><link>https://ivanluminaria.com/ro/posts/postgresql/like-optimization-postgresql/</link><pubDate>Tue, 06 Jan 2026 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/postgresql/like-optimization-postgresql/</guid><description>&lt;p&gt;Cu câteva săptămâni în urmă, un client m-a contactat cu o problemă
foarte comună:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Căutarea din consola administrativă este lentă. Uneori durează câteva
secunde. Am redus deja JOIN-urile, dar problema nu a dispărut.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mediu: PostgreSQL în cloud managed.&lt;br&gt;
Tabela principală: &lt;code&gt;payment_report&lt;/code&gt; (~6 milioane de rânduri, 3 GB).&lt;br&gt;
Coloana căutată: &lt;code&gt;reference_code&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Query problematic:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;reporting&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;payment_report&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;JOIN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;reporting&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;payment_cart&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cart_id&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;service_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1001&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;AND&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reference_code&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;LIKE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;%ABC123%&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;ORDER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;BY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;created_at&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;LIMIT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="-prima-observație-join-urile-nu-erau-problema" class="relative group"&gt;🧠 Prima observație: JOIN-urile nu erau problema &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#-prima-observa%c8%9bie-join-urile-nu-erau-problema" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Am comparat:&lt;/p&gt;</description></item><item><title>4 milioane de euro, două multinaționale, zero software: povestea reală a unui eșec anunțat</title><link>https://ivanluminaria.com/ro/posts/project-management/4-milioni-nessun-software/</link><pubDate>Tue, 30 Dec 2025 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/project-management/4-milioni-nessun-software/</guid><description>&lt;p&gt;Povestea pe care urmează să o spun este reală. Nu voi da nume — nu din diplomație, ci pentru că numele nu contează. Ceea ce contează este să înțelegem mecanismul. Pentru că acest mecanism se repetă, identic, în zeci de companii. Și costă milioane.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-clientul-un-grup-de-asigurări-cu-o-ambiție-legitimă" class="relative group"&gt;🏢 Clientul: un grup de asigurări cu o ambiție legitimă &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#-clientul-un-grup-de-asigur%c4%83ri-cu-o-ambi%c8%9bie-legitim%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;O companie solidă din sectorul asigurărilor. Operațiuni în Italia, Franța, țări din Europa de Nord, Spania. Mii de angajați, milioane de polițe gestionate, o afacere în creștere.&lt;/p&gt;</description></item><item><title>Oracle Partitioning: când 2 miliarde de rânduri nu mai încap într-o interogare</title><link>https://ivanluminaria.com/ro/posts/oracle/oracle-partitioning/</link><pubDate>Tue, 23 Dec 2025 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/oracle/oracle-partitioning/</guid><description>&lt;p&gt;Două miliarde de rânduri. Nu este un număr la care ajungi într-o zi. Durează ani de tranzacții, mișcări, înregistrări zilnice care se acumulează. Și în tot acest timp baza de date funcționează, interogările răspund, rapoartele ies. Apoi într-o zi cineva deschide un ticket: „raportul lunar durează patru ore.&amp;quot;&lt;/p&gt;
&lt;p&gt;Patru ore. Pentru un raport care cu șase luni înainte dura douăzeci de minute.&lt;/p&gt;
&lt;p&gt;Nu este un bug. Nu este o problemă de rețea sau de stocare lentă. Este fizica datelor: când o tabelă crește peste un anumit prag, abordările care funcționau nu mai funcționează. Și dacă nu ai proiectat structura să gestioneze acea creștere, baza de date face singurul lucru pe care îl poate face: citește totul.&lt;/p&gt;</description></item><item><title>De la single instance la Data Guard: ziua în care CEO-ul a înțeles DR-ul</title><link>https://ivanluminaria.com/ro/posts/oracle/oracle-data-guard/</link><pubDate>Tue, 16 Dec 2025 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/oracle/oracle-data-guard/</guid><description>&lt;p&gt;Clientul era o companie de dimensiuni medii din sectorul asigurărilor. Trei sute de angajați, o aplicație de gestiune internă pe Oracle 19c, un singur server fizic în camera serverelor de la parter. Fără replică. Fără standby. Fără plan de disaster recovery.&lt;/p&gt;
&lt;p&gt;Timp de cinci ani totul funcționase. Și când lucrurile merg, nimeni nu vrea să cheltuie bani protejându-se de probleme pe care nu le-a văzut niciodată.&lt;/p&gt;
&lt;h2 id="ziua-în-care-s-a-oprit-totul" class="relative group"&gt;Ziua în care s-a oprit totul &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#ziua-%c3%aen-care-s-a-oprit-totul" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Într-o dimineață de miercuri din noiembrie, la 8:47, discul grupului principal de date a suferit o defecțiune fizică. Nu o eroare logică, nu o corupție recuperabilă. O defecțiune hardware. Controlerul RAID a pierdut două discuri simultan — unul era degradat de săptămâni fără ca nimeni să observe, celălalt a cedat brusc.&lt;/p&gt;</description></item><item><title>SCD Tip 2: istoria pe care business-ul nu știa că o vrea</title><link>https://ivanluminaria.com/ro/posts/data-warehouse/scd-tipo-2/</link><pubDate>Tue, 11 Nov 2025 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/data-warehouse/scd-tipo-2/</guid><description>&lt;p&gt;Directorul comercial apare la ședința de luni dimineața cu o întrebare simplă: &amp;ldquo;Câți clienți aveam în regiunea Nord în iunie trecut?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Răspunsul DWH-ului: liniște.&lt;/p&gt;
&lt;p&gt;Nu pentru că sistemul era căzut, sau pentru că lipsea tabela. Datele erau acolo, tehnic vorbind. Dar erau greșite. DWH-ul returna clienții care &lt;em&gt;astăzi&lt;/em&gt; sunt în regiunea Nord — nu pe cei care erau acolo în iunie. Pentru că în fiecare noapte, procesul de încărcare suprascria datele master ale clienților cu valorile curente, ștergând orice urmă a ceea ce fusese înainte.&lt;/p&gt;</description></item><item><title>MySQL multi-instanță: un ticket, un CSV și zidul secure-file-priv</title><link>https://ivanluminaria.com/ro/posts/mysql/mysql-multi-istanza-secure-file-priv/</link><pubDate>Tue, 04 Nov 2025 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/mysql/mysql-multi-istanza-secure-file-priv/</guid><description>&lt;p&gt;Ticket-ul spunea: „Avem nevoie de un export CSV din tabelul ordini al aplicației de gestiune. Până la ora 14.&amp;quot;&lt;/p&gt;
&lt;p&gt;Era 11 dimineața. Trei ore pentru un SELECT cu INTO OUTFILE — treabă de cinci minute, mă gândeam. Apoi am deschis VPN-ul, m-am conectat la server și am înțeles că cinci minute n-o să fie de ajuns.&lt;/p&gt;
&lt;p&gt;Serverul era o mașină CentOS 7 cu patru instanțe MySQL. Patru. Pe același host, cu patru servicii &lt;span class="glossary-tip" tabindex="0" data-glossary-desc="Sistem de inițializare și manager de servicii pe Linux, folosit pentru gestionarea instanțelor multiple MySQL/MariaDB pe același server prin unit file separate." data-glossary-url="https://ivanluminaria.com/ro/glossary/systemd/" data-glossary-more="Citește mai mult →"&gt;systemd&lt;/span&gt;
 diferite, patru porturi diferite, patru socket-uri Unix diferite, patru directoare de date diferite. Un setup pe care cineva îl pusese în picioare cu ani în urmă — probabil ca să economisească un al doilea server — și pe care de atunci nimeni nu-l mai atinsese și nici nu-l documentase.&lt;/p&gt;</description></item><item><title>EXPLAIN ANALYZE nu e suficient: cum sa citesti cu adevarat un plan de executie PostgreSQL</title><link>https://ivanluminaria.com/ro/posts/postgresql/explain-analyze-postgresql/</link><pubDate>Tue, 28 Oct 2025 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/postgresql/explain-analyze-postgresql/</guid><description>&lt;p&gt;Zilele trecute un coleg imi trimite o captura de ecran pe Teams. Un query care ruleaza pe o tabela de 2 milioane de randuri, 45 de secunde timp de executie. Imi scrie:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Am facut EXPLAIN ANALYZE, dar nu inteleg ce e in neregula. Planul pare corect.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Spoiler: planul nu era deloc corect. Optimizatorul alesese un &lt;span class="glossary-tip" tabindex="0" data-glossary-desc="Nested Loop Join — strategia de join care scaneaza tabelul intern pentru fiecare rand al tabelului extern, ideala pentru seturi mici de date cu index." data-glossary-url="https://ivanluminaria.com/ro/glossary/nested-loop/" data-glossary-more="Citește mai mult →"&gt;nested loop&lt;/span&gt;
 join unde era nevoie de un &lt;span class="glossary-tip" tabindex="0" data-glossary-desc="Hash Join — strategie de join optimizata pentru volume mari de date, bazata pe o hash table construita in memorie." data-glossary-url="https://ivanluminaria.com/ro/glossary/hash-join/" data-glossary-more="Citește mai mult →"&gt;hash join&lt;/span&gt;
, iar motivul era banal — statistici neactualizate. Dar ca sa ajung acolo a trebuit sa citesc planul rand cu rand, si atunci mi-am dat seama ca majoritatea DBA-ilor pe care ii cunosc folosesc EXPLAIN ANALYZE ca pe un oracol binar: daca timpul e mare, query-ul e lent. Sfarsitul analizei.&lt;/p&gt;</description></item><item><title>Granularitate greșită: când fact table nu răspunde la întrebările potrivite</title><link>https://ivanluminaria.com/ro/posts/data-warehouse/fatto-grana-sbagliata/</link><pubDate>Tue, 21 Oct 2025 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/data-warehouse/fatto-grana-sbagliata/</guid><description>&lt;p&gt;Ședința începuse bine. Directorul comercial al unei companii de distribuție industrială — vreo șaizeci de milioane cifră de afaceri, trei mii de clienți activi, catalog cu douăsprezece mii de referințe — deschisese prezentarea noului data warehouse cu un zâmbet. Cifrele se potriveau, dashboard-urile arătau bine, totalurile lunare pe agent și pe zonă băteau cu contabilitatea.&lt;/p&gt;
&lt;p&gt;Apoi cineva a pus întrebarea greșită. Sau mai bine zis, pe cea corectă.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;ldquo;Pot să văd cât a cumpărat clientul Bianchi în luna martie, linie cu linie, produs cu produs?&amp;rdquo;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Disc plin pe un cluster MySQL: binary logs, Group Replication și o migrare care nu acceptă erori</title><link>https://ivanluminaria.com/ro/posts/mysql/mysql-group-replication-binlog-migration/</link><pubDate>Tue, 14 Oct 2025 08:03:00 +0100</pubDate><guid>https://ivanluminaria.com/ro/posts/mysql/mysql-group-replication-binlog-migration/</guid><description>&lt;p&gt;Alerta a venit într-o dimineață de luni, între trei ședințe și o cafea încă fierbinte. &amp;ldquo;Filesystem /mysql la 85% pe nodul primar.&amp;rdquo; Pe un alt nod era la 66%, pe al treilea la 25%. Într-un cluster, când cifrele nu se potrivesc între noduri, întotdeauna e ceva dedesubt.&lt;/p&gt;
&lt;p&gt;Prima întrebare care îți vine în minte este &amp;ldquo;cât spațiu mai trebuie?&amp;rdquo;. Dar e întrebarea greșită. Cea corectă este: &amp;ldquo;de ce se umple?&amp;rdquo;&lt;/p&gt;</description></item><item><title>Additive Measure</title><link>https://ivanluminaria.com/ro/glossary/additive-measure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/additive-measure/</guid><description>&lt;p&gt;O &lt;strong&gt;additive measure&lt;/strong&gt; (măsură aditivă) este o valoare numerică într-o fact table care poate fi sumată legitim de-a lungul oricărei dimensiuni: pe client, pe produs, pe perioadă, pe zonă.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Măsurile din fact table se clasifică în trei categorii:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Aditive&lt;/strong&gt;: pot fi sumate de-a lungul tuturor dimensiunilor (ex. sumă vânzare, cantitate, cost). Cele mai comune și cele mai utile&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semi-aditive&lt;/strong&gt;: pot fi sumate de-a lungul unor dimensiuni dar nu de-a lungul timpului (ex. sold al unui cont: sumabil pe sucursală, nu pe lună)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Non-aditive&lt;/strong&gt;: nu pot fi sumate deloc (ex. procente, rapoarte, medii precalculate)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="la-ce-servește" class="relative group"&gt;La ce servește &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#la-ce-serve%c8%99te" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Măsurile aditive sunt inima fiecărei fact table deoarece permit agregările pe care business-ul le cere: totaluri pe perioadă, pe regiune, pe produs. Regula cheie: stochează întotdeauna valorile atomice (detaliul), niciodată agregatele. Dintr-o sumă pe linie de factură poți obține totalul lunar; din totalul lunar nu poți reconstitui liniile individuale.&lt;/p&gt;</description></item><item><title>AI Manager</title><link>https://ivanluminaria.com/ro/glossary/ai-manager/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/ai-manager/</guid><description>&lt;p&gt;&lt;strong&gt;AI Manager&lt;/strong&gt; este rolul profesional care guvernează introducerea și utilizarea inteligenței artificiale într-un proiect sau organizație. Nu este cel care folosește AI-ul — este cel care decide unde, cum și cu ce precauții să-l integreze în arhitecturile existente.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;AI Managerul răspunde la întrebări la care niciun model nu poate răspunde: unde AI-ul generează valoare reală și unde generează doar entuziasm? Cât costă menținerea lui, nu doar implementarea? Ce se întâmplă când modelul greșește? Cum se integrează cu arhitecturile mission-critical fără a le compromite stabilitatea?&lt;/p&gt;</description></item><item><title>ANALYZE</title><link>https://ivanluminaria.com/ro/glossary/postgresql-analyze/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/postgresql-analyze/</guid><description>&lt;p&gt;&lt;strong&gt;ANALYZE&lt;/strong&gt; este comanda PostgreSQL care colecteaza statistici despre distributia datelor in tabele si le stocheaza in catalogul &lt;code&gt;pg_statistic&lt;/code&gt; (citibil prin vizualizarea &lt;code&gt;pg_stats&lt;/code&gt;). Optimizatorul foloseste aceste statistici pentru a estima cardinalitatea — cate randuri va returna fiecare operatie — si a alege cel mai eficient plan de executie.&lt;/p&gt;
&lt;h2 id="ce-colecteaza" class="relative group"&gt;Ce colecteaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#ce-colecteaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Statisticile colectate de ANALYZE includ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Most common values&lt;/strong&gt;: valorile cele mai frecvente pentru fiecare coloana si procentul lor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Histograme de distributie&lt;/strong&gt;: cum sunt distribuite valorile ramase&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Numarul de valori distincte&lt;/strong&gt;: cate valori unice are fiecare coloana&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Procentul de NULL&lt;/strong&gt;: cate randuri au valoarea NULL pentru fiecare coloana&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Calitatea acestor statistici depinde de numarul de esantioane colectate, controlat de parametrul &lt;code&gt;default_statistics_target&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Anonymous User</title><link>https://ivanluminaria.com/ro/glossary/anonymous-user/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/anonymous-user/</guid><description>&lt;p&gt;&lt;strong&gt;Anonymous User&lt;/strong&gt; (utilizatorul anonim) este un cont MySQL/MariaDB cu username gol (&lt;code&gt;''@'localhost'&lt;/code&gt;) care este creat automat în timpul instalării. Nu are nume și adesea nu are parolă.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Când un utilizator se conectează, MySQL caută potrivirea cea mai specifică în tabelul &lt;code&gt;mysql.user&lt;/code&gt;. Utilizatorul anonim &lt;code&gt;''@'localhost'&lt;/code&gt; este mai specific decât &lt;code&gt;'mario'@'%'&lt;/code&gt; pentru o conexiune de pe localhost, deoarece &lt;code&gt;'localhost'&lt;/code&gt; bate &lt;code&gt;'%'&lt;/code&gt; în ierarhia specificității. În consecință, Mario care se conectează local este autentificat ca utilizator anonim și pierde toate privilegiile sale.&lt;/p&gt;</description></item><item><title>ASH</title><link>https://ivanluminaria.com/ro/glossary/ash/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/ash/</guid><description>&lt;p&gt;&lt;strong&gt;ASH&lt;/strong&gt; (Active Session History) este o componenta a Oracle Database care esantioneaza starea fiecarei sesiuni active o data pe secunda si stocheaza datele intr-un buffer circular in memorie (view-ul &lt;code&gt;V$ACTIVE_SESSION_HISTORY&lt;/code&gt;).&lt;/p&gt;
&lt;h2 id="cum-functioneaza" class="relative group"&gt;Cum functioneaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-functioneaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;In fiecare secunda Oracle inregistreaza pentru fiecare sesiune activa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL-ul in executie (&lt;code&gt;SQL_ID&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Wait event-ul curent&lt;/li&gt;
&lt;li&gt;Programul si modulul apelant&lt;/li&gt;
&lt;li&gt;Planul de executie utilizat (&lt;code&gt;SQL_PLAN_HASH_VALUE&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Datele mai vechi sunt descarcate automat in tabelele AWR (&lt;code&gt;DBA_HIST_ACTIVE_SESS_HISTORY&lt;/code&gt;) si pastrate pentru perioada configurata.&lt;/p&gt;</description></item><item><title>Authentication Plugin</title><link>https://ivanluminaria.com/ro/glossary/authentication-plugin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/authentication-plugin/</guid><description>&lt;p&gt;Un &lt;strong&gt;Authentication Plugin&lt;/strong&gt; este modulul pe care MySQL sau MariaDB îl folosește pentru a verifica credențialele unui utilizator la momentul conexiunii. Fiecare utilizator din sistem este asociat cu un plugin specific care determină cum parola este hashată, transmisă și verificată.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Plugin-urile principale sunt: &lt;code&gt;mysql_native_password&lt;/code&gt; (implicit în MySQL 5.7 și MariaDB), care folosește un hash SHA1 dublu; &lt;code&gt;caching_sha2_password&lt;/code&gt; (implicit în MySQL 8.0+), care folosește SHA-256 cu caching pentru îmbunătățirea securității și performanței. Când un client se conectează, trebuie să suporte plugin-ul utilizatorului la care încearcă să se autentifice.&lt;/p&gt;</description></item><item><title>Autovacuum</title><link>https://ivanluminaria.com/ro/glossary/autovacuum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/autovacuum/</guid><description>&lt;p&gt;&lt;strong&gt;Autovacuum&lt;/strong&gt; este un daemon PostgreSQL care rulează automat VACUUM și ANALYZE pe tabele când numărul de dead tuples depășește un prag calculat ca: &lt;code&gt;threshold + scale_factor × n_live_tup&lt;/code&gt;. Cu valorile implicite (threshold=50, scale_factor=0.2), pe o tabelă cu 10 milioane de rânduri se activează după 2 milioane de dead tuples.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Daemon-ul verifică periodic &lt;code&gt;pg_stat_user_tables&lt;/code&gt; și lansează un worker pentru fiecare tabelă care depășește pragul. Numărul maxim de workeri simultani este controlat de &lt;code&gt;autovacuum_max_workers&lt;/code&gt; (implicit 3). Parametrul &lt;code&gt;autovacuum_vacuum_cost_delay&lt;/code&gt; controlează cât se autofrânează vacuum-ul pentru a nu supraîncărca I/O-ul.&lt;/p&gt;</description></item><item><title>AWR</title><link>https://ivanluminaria.com/ro/glossary/awr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/awr/</guid><description>&lt;p&gt;&lt;strong&gt;AWR&lt;/strong&gt; (Automatic Workload Repository) este o componenta integrata in Oracle Database care colecteaza automat statistici de performanta ale sistemului la intervale regulate (implicit la fiecare 60 de minute) si le pastreaza pentru o perioada configurabila.&lt;/p&gt;
&lt;h2 id="cum-functioneaza" class="relative group"&gt;Cum functioneaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-functioneaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;AWR captureaza snapshot-uri periodice care includ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Statistici ale sesiunilor si wait events&lt;/li&gt;
&lt;li&gt;Metrici SQL (top SQL dupa timp de executie, I/O, CPU)&lt;/li&gt;
&lt;li&gt;Statistici ale structurilor de memorie (SGA, PGA)&lt;/li&gt;
&lt;li&gt;Statistici I/O per datafile si tablespace&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="la-ce-serveste" class="relative group"&gt;La ce serveste &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#la-ce-serveste" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Raportul AWR este instrumentul principal pentru diagnosticarea problemelor de performanta in Oracle. Comparand doua snapshot-uri se pot identifica:&lt;/p&gt;</description></item><item><title>B-Tree</title><link>https://ivanluminaria.com/ro/glossary/b-tree/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/b-tree/</guid><description>&lt;p&gt;&lt;strong&gt;B-Tree&lt;/strong&gt; (Balanced Tree) este cea mai comună structură de date pentru indexuri în bazele de date relaționale și este tipul implicit de index în PostgreSQL, MySQL și Oracle. Menține datele sortate într-o structură de arbore echilibrat care garantează timpi de căutare logaritmici.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un B-Tree organizează cheile în noduri sortate, cu fiecare nod conținând pointeri către noduri copil. Căutarea pornește de la rădăcină și coboară către frunze, înjumătățind spațiul de căutare la fiecare nivel. Pentru o tabelă cu 6 milioane de rânduri, un B-Tree necesită tipic 3-4 nivele de adâncime, adică 3-4 citiri de pagină pentru a găsi o valoare.&lt;/p&gt;</description></item><item><title>Bicicletă Pliabilă</title><link>https://ivanluminaria.com/ro/glossary/bicicletta-pieghevole/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/bicicletta-pieghevole/</guid><description>&lt;p&gt;O &lt;strong&gt;Bicicletă Pliabilă&lt;/strong&gt; este o bicicletă proiectată să se plieze în dimensiuni compacte (de obicei 60×55×25 cm) în câteva secunde, devenind transportabilă ca un bagaj. Brompton este cel mai cunoscut model, cu mecanism de pliere în 10-20 secunde.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un sistem de balamale și eliberări rapide permite plierea cadrului, ghidonului și pedalelor într-un pachet compact. Odată pliată, merge la birou sub birou, în metrou sau în portbagaj. În versiunea electrică, combină avantajele pedalării asistate cu portabilitatea totală.&lt;/p&gt;</description></item><item><title>Binary log</title><link>https://ivanluminaria.com/ro/glossary/binary-log/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/binary-log/</guid><description>&lt;p&gt;&lt;strong&gt;Binary log-ul&lt;/strong&gt; (sau binlog) este un registru secvențial în format binar în care MySQL scrie toate evenimentele care modifică datele: INSERT, UPDATE, DELETE și operațiuni DDL. Fișierele sunt numerotate progresiv (&lt;code&gt;mysql-bin.000001&lt;/code&gt;, &lt;code&gt;mysql-bin.000002&lt;/code&gt;, etc.) și gestionate printr-un fișier index.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;De la MySQL 8.0, binary log-ul este activat implicit prin parametrul &lt;code&gt;log_bin&lt;/code&gt;. MySQL creează un nou fișier binlog când serverul pornește, când fișierul curent atinge &lt;code&gt;max_binlog_size&lt;/code&gt;, sau când se execută &lt;code&gt;FLUSH BINARY LOGS&lt;/code&gt;. Suportă trei formate de înregistrare: STATEMENT (înregistrează instrucțiunile SQL), ROW (înregistrează modificările la nivel de rând) și MIXED (alegere automată).&lt;/p&gt;</description></item><item><title>Bloat</title><link>https://ivanluminaria.com/ro/glossary/bloat/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/bloat/</guid><description>&lt;p&gt;&lt;strong&gt;Bloat&lt;/strong&gt; este acumularea de spațiu mort în cadrul unei tabele sau index PostgreSQL, cauzată de dead tuples care nu au fost încă eliminate de VACUUM. O tabelă cu 50% bloat ocupă de două ori spațiul necesar și forțează scanările secvențiale să citească de două ori mai multe pagini.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Bloat-ul se măsoară comparând dimensiunea efectivă a tabelei cu dimensiunea așteptată bazată pe rândurile vii. Extensia &lt;code&gt;pgstattuple&lt;/code&gt; oferă câmpul &lt;code&gt;dead_tuple_percent&lt;/code&gt;. Un bloat peste 20-30% este un semnal de alarmă; peste 50% este o urgență.&lt;/p&gt;</description></item><item><title>Branch</title><link>https://ivanluminaria.com/ro/glossary/branch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/branch/</guid><description>&lt;p&gt;Un &lt;strong&gt;Branch&lt;/strong&gt; (ramură) este o linie de dezvoltare independentă într-un repository Git. Fiecare branch conține o copie a codului pe care se poate lucra fără a afecta branch-ul principal (main) sau munca altor dezvoltatori.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Când un dezvoltator creează un branch (ex. &lt;code&gt;fix/issue-234-eroare-calcul&lt;/code&gt;), Git creează un pointer la versiunea curentă a codului. Din acel moment, modificările făcute pe branch rămân izolate. La finalul lucrului, modificările se propun echipei prin Pull Request și, după aprobare, se unesc (merge) în branch-ul principal.&lt;/p&gt;</description></item><item><title>Brompton</title><link>https://ivanluminaria.com/ro/glossary/brompton/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/brompton/</guid><description>&lt;p&gt;&lt;strong&gt;Brompton&lt;/strong&gt; este o bicicletă pliabilă fabricată la Londra din 1975, considerată referința mondială în categoria sa. Se pliază în 10-20 secunde atingând dimensiuni de aproximativ 58×56×27 cm — suficient de compactă pentru a încăpea sub un birou sau în portbagajul unei mașini mici.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Mecanismul brevetat permite plierea bicicletei în trei mișcări: cadru, ghidon și șa. În versiunea electrică (Brompton Electric), un motor în butucul frontal oferă pedalare asistată până la 25 km/h cu o autonomie de 40-70 km. Bateria este detașabilă și se încarcă în 4 ore.&lt;/p&gt;</description></item><item><title>BYOL</title><link>https://ivanluminaria.com/ro/glossary/byol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/byol/</guid><description>&lt;p&gt;&lt;strong&gt;BYOL&lt;/strong&gt; (Bring Your Own License) este un program Oracle care permite organizatiilor sa transfere licentele software achizitionate pentru infrastructura on-premises catre Oracle Cloud Infrastructure (OCI), fara a fi nevoie sa achizitioneze licente cloud noi.&lt;/p&gt;
&lt;h2 id="cum-functioneaza" class="relative group"&gt;Cum functioneaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-functioneaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cand o organizatie detine deja licente Oracle — de obicei Enterprise Edition cu optiuni precum RAC, Data Guard sau Partitioning — le poate &amp;ldquo;lua cu sine&amp;rdquo; in migrarea catre OCI. Contractul de suport (Software Update License &amp;amp; Support) se mentine, iar licentele sunt asociate resurselor cloud in locul serverelor fizice.&lt;/p&gt;</description></item><item><title>Carbon Footprint</title><link>https://ivanluminaria.com/ro/glossary/carbon-footprint/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/carbon-footprint/</guid><description>&lt;p&gt;&lt;strong&gt;Carbon Footprint&lt;/strong&gt; (amprenta de carbon) este cantitatea totală de gaze cu efect de seră — în principal CO₂ — emise direct sau indirect de o activitate, produs sau individ, exprimată în tone de CO₂ echivalent.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Pentru navetismul urban, calculul este direct: o mașină blocată în traficul din Roma produce în medie 120-150 g de CO₂ pe kilometru. În trafic congestionat chiar mai mult, pentru că motorul funcționează în gol consumând fără a se deplasa. O bicicletă produce zero emisii directe.&lt;/p&gt;</description></item><item><title>CDC</title><link>https://ivanluminaria.com/ro/glossary/cdc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/cdc/</guid><description>&lt;p&gt;&lt;strong&gt;CDC&lt;/strong&gt; (Change Data Capture) este o tehnică pentru interceptarea modificărilor de date (INSERT, UPDATE, DELETE) în momentul în care au loc și propagarea lor către alte sisteme în timp real sau aproape real. Spre deosebire de abordările batch tradiționale (ETL periodic), CDC captează modificările în mod continuu și incremental.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cea mai răspândită abordare este &lt;strong&gt;log-based CDC&lt;/strong&gt;: o componentă externă citește log-urile de tranzacții ale bazei de date (binary log în MySQL, WAL în PostgreSQL, redo log în Oracle) și convertește evenimentele într-un flux de date consumabil de alte sisteme. Instrumente precum Debezium, Maxwell și Canal implementează această abordare pentru MySQL citind direct binary log-urile.&lt;/p&gt;</description></item><item><title>Cheie surogat</title><link>https://ivanluminaria.com/ro/glossary/chiave-surrogata/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/chiave-surrogata/</guid><description>&lt;p&gt;&lt;strong&gt;Cheia surogat&lt;/strong&gt; (surrogate key) este un identificator numeric secvențial generat intern de data warehouse, fără nicio semnificație de business. Este distinctă de cheia naturală — cea care vine din sistemul sursă (ex. codul clientului, numărul de angajat).&lt;/p&gt;
&lt;h2 id="de-ce-este-necesară" class="relative group"&gt;De ce este necesară &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#de-ce-este-necesar%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;În SCD Tip 2, același client poate avea mai multe linii în tabela dimensională — câte una pentru fiecare versiune istorică. Cheia naturală (&lt;code&gt;client_id&lt;/code&gt;) nu mai este unică, deci este nevoie de un identificator care să distingă fiecare versiune individuală: cheia surogat (&lt;code&gt;client_key&lt;/code&gt;).&lt;/p&gt;</description></item><item><title>Churn</title><link>https://ivanluminaria.com/ro/glossary/churn/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/churn/</guid><description>&lt;p&gt;&lt;strong&gt;Churn-ul&lt;/strong&gt; unei tabele este măsura a cât de mult se modifică datele sale după inserare. O tabelă cu churn ridicat suportă frecvente UPDATE-uri și DELETE-uri; o tabelă cu churn scăzut este predominant append-only (doar INSERT).&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;În PostgreSQL, fiecare UPDATE creează o versiune nouă a rândului (datorită modelului MVCC) iar versiunea veche devine un dead tuple. DELETE-urile creează de asemenea dead tuples. Cu cât churn-ul este mai mare, cu atât mai multă muncă trebuie să facă VACUUM și indexurile pentru a menține performanța. Un index GIN pe o tabelă cu churn ridicat poate degrada semnificativ performanța la scriere.&lt;/p&gt;</description></item><item><title>COALESCE</title><link>https://ivanluminaria.com/ro/glossary/coalesce/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/coalesce/</guid><description>&lt;p&gt;&lt;strong&gt;COALESCE&lt;/strong&gt; este o funcție SQL standard care acceptă o listă de expresii și returnează prima care nu este NULL. Dacă toate expresiile sunt NULL, returnează NULL.&lt;/p&gt;
&lt;h2 id="sintaxă" class="relative group"&gt;Sintaxă &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#sintax%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;COALESCE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expresie1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresie2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresie3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;...)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Echivalent cu un lanț de CASE WHEN:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;CASE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresie1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;IS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresie1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresie2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;IS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresie2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresie3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;IS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;expresie3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ELSE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;END&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="utilizare-în-ierarhii" class="relative group"&gt;Utilizare în ierarhii &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#utilizare-%c3%aen-ierarhii" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;În contextul ragged hierarchies, COALESCE este adesea folosită pentru a completa nivelurile lipsă:&lt;/p&gt;</description></item><item><title>Code Review</title><link>https://ivanluminaria.com/ro/glossary/code-review/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/code-review/</guid><description>&lt;p&gt;&lt;strong&gt;Code Review&lt;/strong&gt; este practica prin care un coleg examinează codul scris de un alt dezvoltator înainte ca acesta să fie incorporat în branch-ul principal. Pe GitHub are loc în interiorul Pull Request-urilor.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Dezvoltatorul deschide un Pull Request cu modificările sale. Un reviewer atribuit examinează diff-ul codului, lasă comentarii, sugerează îmbunătățiri și în final aprobă sau cere modificări. Procesul este asincron: nu sunt necesare ședințe, review-ul are loc pe instrument. Doar după aprobare codul se fuzionează în branch-ul principal.&lt;/p&gt;</description></item><item><title>Compliance</title><link>https://ivanluminaria.com/ro/glossary/compliance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/compliance/</guid><description>&lt;p&gt;&lt;strong&gt;Compliance&lt;/strong&gt; (conformitate normativă) este aderarea unei organizații la legile, reglementările și standardele de sector aplicabile activității sale. În contextul AI, include GDPR, reglementări bancare (SOX, PCI-DSS), reglementări sanitare și politici interne privind utilizarea datelor.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Conformitatea se verifică prin audituri, controale documentare și monitorizare continuă. Pentru proiectele AI, necesită trasabilitatea datelor folosite pentru training, documentarea deciziilor automatizate și capacitatea de a explica cum a ajuns modelul la un anumit output (explainability).&lt;/p&gt;</description></item><item><title>CTAS</title><link>https://ivanluminaria.com/ro/glossary/ctas/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/ctas/</guid><description>&lt;p&gt;&lt;strong&gt;CTAS&lt;/strong&gt; (Create Table As Select) este o comandă SQL Oracle care creează o tabelă nouă și o populează într-o singură operație cu rezultatele unui SELECT. Este tehnica standard pentru migrarea datelor de la o structură la alta pe tabele de dimensiuni mari.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Comanda combină DDL și DML: creează tabela cu structura derivată din SELECT și inserează datele într-un singur pas. Cu hint-ul &lt;code&gt;PARALLEL&lt;/code&gt; și modul &lt;code&gt;NOLOGGING&lt;/code&gt;, copierea a sute de GB se poate completa în câteva ore. După copiere, tabela originală se redenumește, cea nouă îi ia locul, iar downtime-ul se limitează la cele câteva secunde ale redenumirii.&lt;/p&gt;</description></item><item><title>Cutover</title><link>https://ivanluminaria.com/ro/glossary/cutover/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/cutover/</guid><description>&lt;p&gt;&lt;strong&gt;Cutover-ul&lt;/strong&gt; este momentul in care un sistem de productie este mutat de pe infrastructura veche pe cea noua. Este faza cea mai vizibila a unei migrari — cea pe care toata lumea si-o aminteste, in bine sau in rau.&lt;/p&gt;
&lt;h2 id="anatomia-unui-cutover" class="relative group"&gt;Anatomia unui cutover &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#anatomia-unui-cutover" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un cutover bine planificat urmeaza un runbook detaliat cu pasi numerotati, timpi estimati, criterii de succes si proceduri de rollback pentru fiecare pas. Componentele tipice:&lt;/p&gt;</description></item><item><title>Daily Standup</title><link>https://ivanluminaria.com/ro/glossary/daily-standup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/daily-standup/</guid><description>&lt;p&gt;&lt;strong&gt;Daily Standup&lt;/strong&gt; este o ședință zilnică scurtă (maximum 15 minute) în care fiecare membru al echipei răspunde la trei întrebări: ce am făcut ieri, ce voi face azi, mă blochează ceva. Scopul este sincronizarea echipei, nu rezolvarea problemelor.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Fiecare persoană are aproximativ două minute pentru actualizarea sa. Problemele sunt semnalate dar nu discutate: rezolvarea are loc după, între persoanele implicate. Constrângerea temporală este ceea ce face standup-ul eficient — fără ea, degenerează într-o ședință de status de 45 de minute.&lt;/p&gt;</description></item><item><title>Data Governance</title><link>https://ivanluminaria.com/ro/glossary/data-governance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/data-governance/</guid><description>&lt;p&gt;&lt;strong&gt;Data Governance&lt;/strong&gt; este setul de politici, procese, roluri și standarde pe care o organizație le adoptă pentru a garanta că datele sale sunt corecte, sigure, conforme cu reglementările și utilizate în mod coerent.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Definește cine este responsabil de date (data owner, data steward), ce reguli de calitate se aplică, cum se clasifică datele după sensibilitate și cum se trasează proveniența lor (data lineage). Într-un context AI, include și verificarea provenienței și calității datelor folosite pentru training-ul modelelor.&lt;/p&gt;</description></item><item><title>Data Guard</title><link>https://ivanluminaria.com/ro/glossary/data-guard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/data-guard/</guid><description>&lt;p&gt;&lt;strong&gt;Data Guard&lt;/strong&gt; este tehnologia Oracle care mentine una sau mai multe copii sincronizate (standby) ale unei baze de date de productie (primar). Standby-ul primeste si aplica continuu redo log-urile generate de primar, ramanand aliniat in timp real sau aproape.&lt;/p&gt;
&lt;h2 id="cum-functioneaza" class="relative group"&gt;Cum functioneaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-functioneaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Primarul genereaza redo log-uri cu fiecare tranzactie. Aceste log-uri sunt transmise standby-ului prin retea, unde sunt aplicate in doua moduri posibile:&lt;/p&gt;</description></item><item><title>Data Warehouse</title><link>https://ivanluminaria.com/ro/glossary/data-warehouse/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/data-warehouse/</guid><description>&lt;p&gt;Un &lt;strong&gt;Data Warehouse&lt;/strong&gt; (DWH) este un sistem de stocare a datelor proiectat specific pentru analiză, raportare și suport al deciziilor de afaceri. Spre deosebire de bazele de date operaționale (OLTP), un DWH colectează date din surse multiple, le transformă și le organizează în structuri optimizate pentru interogări analitice.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Datele sunt extrase din sistemele sursă (aplicații de gestiune, CRM, ERP), transformate prin procese ETL care le curăță, normalizează și îmbogățesc, și în final încărcate în DWH. Modelul de date tipic este star schema: o tabelă de fapte centrală cu măsurile numerice conectată la tabele dimensionale care descriu contextul (timp, client, produs, geografie).&lt;/p&gt;</description></item><item><title>Dead Tuple</title><link>https://ivanluminaria.com/ro/glossary/dead-tuple/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/dead-tuple/</guid><description>&lt;p&gt;Un &lt;strong&gt;Dead Tuple&lt;/strong&gt; este un rând într-o tabelă PostgreSQL care a fost actualizat (UPDATE) sau șters (DELETE) dar nu a fost încă eliminat fizic. Rămâne în paginile de date, ocupând spațiu pe disc și încetinind scanările.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Când PostgreSQL execută un UPDATE, nu suprascrie rândul original: creează o versiune nouă și o marchează pe cea veche ca &amp;ldquo;moartă.&amp;rdquo; Rândul vechi rămâne fizic în pagina de date până când VACUUM îl curăță. Dead tuple-urile sunt prețul modelului MVCC — necesare pentru a garanta izolarea tranzacțională.&lt;/p&gt;</description></item><item><title>DEFAULT PRIVILEGES</title><link>https://ivanluminaria.com/ro/glossary/default-privileges/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/default-privileges/</guid><description>&lt;p&gt;&lt;strong&gt;DEFAULT PRIVILEGES&lt;/strong&gt; este un mecanism PostgreSQL care permite definirea în avans a privilegiilor ce vor fi atribuite automat tuturor obiectelor viitoare create într-o schemă. Se configurează cu comanda &lt;code&gt;ALTER DEFAULT PRIVILEGES&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Comanda &lt;code&gt;ALTER DEFAULT PRIVILEGES IN SCHEMA schema1 GRANT SELECT ON TABLES TO srv_monitorizare&lt;/code&gt; face ca fiecare tabelă nouă creată în &lt;code&gt;schema1&lt;/code&gt; să fie automat citibilă de &lt;code&gt;srv_monitorizare&lt;/code&gt;. Fără această configurare, tabelele viitoare ar necesita un GRANT manual de fiecare dată.&lt;/p&gt;</description></item><item><title>default_statistics_target</title><link>https://ivanluminaria.com/ro/glossary/postgresql-default-statistics-target/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/postgresql-default-statistics-target/</guid><description>&lt;p&gt;&lt;strong&gt;default_statistics_target&lt;/strong&gt; este parametrul PostgreSQL care defineste numarul de esantioane colectate de comanda &lt;code&gt;ANALYZE&lt;/code&gt; pentru a construi statisticile fiecarei coloane. Valoarea implicita este 100.&lt;/p&gt;
&lt;h2 id="cum-functioneaza" class="relative group"&gt;Cum functioneaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-functioneaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;PostgreSQL esantioneaza un anumit numar de valori pentru fiecare coloana si le foloseste pentru a construi doua structuri:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Most common values (MCV)&lt;/strong&gt;: lista valorilor celor mai frecvente, cu frecventele respective&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Histograma&lt;/strong&gt;: distributia valorilor ramase, impartita in bucket-uri de populatie egala&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Parametrul &lt;code&gt;default_statistics_target&lt;/code&gt; determina cate elemente vor avea aceste structuri. Cu valoarea implicita de 100, histograma va avea 100 de bucket-uri si lista MCV va contine pana la 100 de valori.&lt;/p&gt;</description></item><item><title>Directiva 2011/7/UE</title><link>https://ivanluminaria.com/ro/glossary/direttiva-2011-7-ue/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/direttiva-2011-7-ue/</guid><description>&lt;p&gt;&lt;strong&gt;Directiva 2011/7/UE&lt;/strong&gt; este reglementarea europeană privind întârzierile la plată în tranzacțiile comerciale. Stabilește reguli clare: termen standard de 30 de zile, maxim 60 între întreprinderi (cu acord explicit), 30 pentru administrația publică, și dobânzi de întârziere automate la rata BCE + 8%.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Directiva a fost transpusă în dreptul italian prin D.Lgs. 231/2002 (modificat în 2012). Pe hârtie regulile există: 30 de zile standard, dobânzi automate, compensație forfetară de 40€ per factură plătită cu întârziere. În practica italiană e ca și cum n-ar exista — DSO-ul mediu italian este de 80 de zile, mult peste maximul de 60.&lt;/p&gt;</description></item><item><title>Dobânzi de Întârziere</title><link>https://ivanluminaria.com/ro/glossary/interessi-di-mora/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/interessi-di-mora/</guid><description>&lt;p&gt;&lt;strong&gt;Dobânzile de Întârziere&lt;/strong&gt; sunt dobânzile care se acumulează automat pe fiecare factură plătită cu întârziere față de termenul contractual. Conform D.Lgs. 231/2002 italian (transpunerea Directivei UE 2011/7/UE), rata este egală cu rata BCE + 8 puncte procentuale, fără necesitatea unei somații formale.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Din ziua următoare scadenței facturii, dobânzile se acumulează automat. Creditorul are dreptul și la o compensație forfetară de 40€ pentru fiecare factură plătită cu întârziere, pentru cheltuielile de recuperare. Nu este necesară trimiterea unei somații — dreptul se naște din lege.&lt;/p&gt;</description></item><item><title>Drill-down</title><link>https://ivanluminaria.com/ro/glossary/drill-down/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/drill-down/</guid><description>&lt;p&gt;&lt;strong&gt;Drill-down-ul&lt;/strong&gt; este operațiunea de navigare în rapoarte care permite trecerea de la un nivel agregat la un nivel de detaliu mai mare, coborând de-a lungul unei ierarhii.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Într-o ierarhie Top Group → Group → Client:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Se pornește de la nivelul cel mai înalt: cifra de afaceri totală pe Top Group&lt;/li&gt;
&lt;li&gt;Se face clic pe un Top Group pentru a vedea Group-urile sale (drill-down de primul nivel)&lt;/li&gt;
&lt;li&gt;Se face clic pe un Group pentru a vedea Clienții individuali (drill-down de al doilea nivel)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Operațiunea inversă — revenirea de la detaliu la agregat — se numește &lt;strong&gt;drill-up&lt;/strong&gt; (sau roll-up).&lt;/p&gt;</description></item><item><title>DSO</title><link>https://ivanluminaria.com/ro/glossary/dso/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/dso/</guid><description>&lt;p&gt;&lt;strong&gt;DSO&lt;/strong&gt; (Days Sales Outstanding) este metrica care măsoară numărul mediu de zile pe care o companie le necesită pentru a-și încasa creanțele după emiterea facturii. Este indicatorul principal al vitezei de plată într-o piață.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Se calculează ca: &lt;code&gt;(Creanțe comerciale / Venituri) × Zile din perioadă&lt;/code&gt;. Un DSO de 30 înseamnă că în medie clienții plătesc într-o lună. În Italia DSO-ul mediu este de 80 de zile conform European Payment Report — aproape de trei ori media nordului Europei (24-27 zile).&lt;/p&gt;</description></item><item><title>ETL</title><link>https://ivanluminaria.com/ro/glossary/etl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/etl/</guid><description>&lt;p&gt;&lt;strong&gt;ETL&lt;/strong&gt; (Extract, Transform, Load) este procesul fundamental prin care datele sunt mutate din sistemele sursa (baze de date operationale, fisiere, API-uri) in data warehouse.&lt;/p&gt;
&lt;h2 id="cele-trei-faze" class="relative group"&gt;Cele trei faze &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cele-trei-faze" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Extract&lt;/strong&gt;: extragerea datelor din sistemele sursa. Poate fi completa (full load) sau incrementala (doar date noi sau modificate)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transform&lt;/strong&gt;: curatarea, validarea, standardizarea si imbogatirea datelor. Aici se aplica regulile de business, lookup-urile pe dimensiuni, calculele derivate&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Load&lt;/strong&gt;: incarcarea datelor transformate in tabelele data warehouse-ului (fact si dimension)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="de-ce-este-critic" class="relative group"&gt;De ce este critic &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#de-ce-este-critic" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;ETL este partea cea mai putin vizibila dar cea mai critica a unui data warehouse. Daca datele sunt extrase incomplet, transformate cu reguli eronate sau incarcate fara verificari, tot ce sta deasupra — rapoarte, dashboard-uri, decizii — va fi gresit.&lt;/p&gt;</description></item><item><title>Exchange Partition</title><link>https://ivanluminaria.com/ro/glossary/exchange-partition/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/exchange-partition/</guid><description>&lt;p&gt;&lt;strong&gt;Exchange Partition&lt;/strong&gt; este o operațiune DDL Oracle care permite schimbarea instantanee a conținutului unei partiții cu cel al unei tabele nepartiționate. Nu se mută niciun byte de date — operațiunea modifică doar pointerii din data dictionary.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Comanda &lt;code&gt;ALTER TABLE ... EXCHANGE PARTITION ... WITH TABLE ...&lt;/code&gt; modifică metadatele din data dictionary astfel încât segmentele fizice ale partiției și ale tabelei de staging să își schimbe proprietarul. Tabela de staging devine partiția și invers. Operațiunea durează mai puțin de o secundă indiferent de volumul datelor, deoarece nu implică nicio mișcare fizică.&lt;/p&gt;</description></item><item><title>Execution Plan</title><link>https://ivanluminaria.com/ro/glossary/execution-plan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/execution-plan/</guid><description>&lt;p&gt;Un &lt;strong&gt;execution plan&lt;/strong&gt; (plan de executie) este secventa de operatii pe care baza de date o alege pentru a rezolva o interogare SQL. Cand scrii un SELECT cu JOIN-uri, filtre WHERE si sortari, optimizatorul evalueaza zeci de strategii posibile si alege una pe baza statisticilor disponibile.&lt;/p&gt;
&lt;h2 id="cum-functioneaza" class="relative group"&gt;Cum functioneaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-functioneaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Planul este reprezentat ca un arbore de noduri: fiecare nod este o operatie (scan, join, sort, aggregate) care primeste date de la nodurile copil si le transmite nodului parinte. In PostgreSQL se vizualizeaza cu &lt;code&gt;EXPLAIN&lt;/code&gt; (plan estimat) sau &lt;code&gt;EXPLAIN ANALYZE&lt;/code&gt; (plan real cu timpii efectivi si contoarele de randuri).&lt;/p&gt;</description></item><item><title>Facilitator</title><link>https://ivanluminaria.com/ro/glossary/facilitatore/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/facilitatore/</guid><description>&lt;p&gt;&lt;strong&gt;Facilitatorul&lt;/strong&gt; este persoana însărcinată cu ghidarea desfășurării unei ședințe. Nu este cel care decide — este cel care garantează că decizia se ia în mod ordonat, în timpul prevăzut și cu contribuția tuturor participanților.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Facilitatorul ține timpul, gestionează turele de cuvânt, taie discuțiile în afara subiectului (&amp;ldquo;o notez în parking lot, discutăm după&amp;rdquo;) și se asigură că standup-ul nu depășește 15 minute. Rolul poate fi fix sau prin rotație în echipă.&lt;/p&gt;</description></item><item><title>Fact table</title><link>https://ivanluminaria.com/ro/glossary/fact-table/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/fact-table/</guid><description>&lt;p&gt;&lt;strong&gt;Fact table&lt;/strong&gt; (tabela de fapte) este tabela centrală a unui star schema în data warehouse. Conține măsurile numerice — sume, cantități, contorizări, durate — și cheile externe care o conectează la tabelele dimensionale.&lt;/p&gt;
&lt;h2 id="structură" class="relative group"&gt;Structură &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#structur%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Fiecare linie din fact table reprezintă un eveniment sau o tranzacție de business: o vânzare, o daună, o expediere, un acces. Coloanele se împart în două categorii:&lt;/p&gt;</description></item><item><title>Float Financiar</title><link>https://ivanluminaria.com/ro/glossary/float-finanziario/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/float-finanziario/</guid><description>&lt;p&gt;&lt;strong&gt;Float-ul Financiar&lt;/strong&gt; este lichiditatea pe care o companie o generează din diferența dintre timpii de încasare de la clienții săi (mai scurți) și timpii de plată către furnizorii săi (mai lungi). Este efectiv un împrumut la cost zero obținut pe cheltuiala furnizorilor.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;O firmă de consultanță încasează de la clientul final la 30 de zile dar plătește consultanții proprii la 90 de zile. Diferența de 60 de zile generează un float: pentru fiecare 100.000€ de venituri lunare, compania dispune de ~200.000€ de lichiditate gratuită pe care o poate investi sau folosi ca capital circulant.&lt;/p&gt;</description></item><item><title>FLUSH PRIVILEGES</title><link>https://ivanluminaria.com/ro/glossary/flush-privileges/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/flush-privileges/</guid><description>&lt;p&gt;&lt;strong&gt;FLUSH PRIVILEGES&lt;/strong&gt; este o comandă MySQL/MariaDB care forțează serverul să reîncarce în memorie tabelele de privilegii din baza de date &lt;code&gt;mysql&lt;/code&gt;. Face imediat efective modificările permisiunilor.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;MySQL menține în memorie un cache al tabelelor de grant (&lt;code&gt;mysql.user&lt;/code&gt;, &lt;code&gt;mysql.db&lt;/code&gt;, &lt;code&gt;mysql.tables_priv&lt;/code&gt;). Când se folosesc &lt;code&gt;CREATE USER&lt;/code&gt; și &lt;code&gt;GRANT&lt;/code&gt;, MySQL actualizează atât tabelele cât și cache-ul automat. Dar dacă tabelele de grant sunt modificate direct cu &lt;code&gt;INSERT&lt;/code&gt;, &lt;code&gt;UPDATE&lt;/code&gt; sau &lt;code&gt;DELETE&lt;/code&gt;, cache-ul nu se actualizează. &lt;code&gt;FLUSH PRIVILEGES&lt;/code&gt; forțează reîncărcarea cache-ului din tabele.&lt;/p&gt;</description></item><item><title>Full Table Scan</title><link>https://ivanluminaria.com/ro/glossary/full-table-scan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/full-table-scan/</guid><description>&lt;p&gt;&lt;strong&gt;Full Table Scan&lt;/strong&gt; (sau TABLE ACCESS FULL) este o operatie in care baza de date citeste toate blocurile de date ale unei tabele, de la inceput la sfarsit, fara a trece prin vreun index.&lt;/p&gt;
&lt;h2 id="cum-functioneaza" class="relative group"&gt;Cum functioneaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-functioneaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Oracle solicita blocuri de pe disc (sau din cache) in secventa, folosind citiri multi-bloc (&lt;code&gt;db file scattered read&lt;/code&gt;). Fiecare rand din tabela este examinat, indiferent daca indeplineste sau nu criteriile query-ului.&lt;/p&gt;</description></item><item><title>GIN Index</title><link>https://ivanluminaria.com/ro/glossary/gin-index/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/gin-index/</guid><description>&lt;p&gt;Un &lt;strong&gt;GIN Index&lt;/strong&gt; (Generalized Inverted Index) este un tip de index PostgreSQL proiectat pentru indexarea valorilor compuse: array-uri, documente JSONB, text cu trigrame și căutări full-text. Spre deosebire de B-Tree, un GIN creează un mapping inversat: de la fiecare element (cuvânt, trigramă, cheie JSON) la înregistrările care îl conțin.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Pentru fiecare valoare distinctă din datele indexate, GIN menține o listă de pointeri către rândurile care conțin acea valoare. În cazul &lt;code&gt;pg_trgm&lt;/code&gt;, textul este descompus în trigrame (secvențe de 3 caractere) și fiecare trigramă este indexată. O căutare &lt;code&gt;LIKE '%ABC%'&lt;/code&gt; este tradusă într-o intersecție de trigrame, evitând scanarea secvențială.&lt;/p&gt;</description></item><item><title>Grain</title><link>https://ivanluminaria.com/ro/glossary/grain/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/grain/</guid><description>&lt;p&gt;&lt;strong&gt;Grain-ul&lt;/strong&gt; (granularitatea) este nivelul de detaliu al unei fact table într-un data warehouse. Definește ce reprezintă un singur rând: o tranzacție, un sumar zilnic, un total lunar, o linie de factură.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Alegerea grain-ului este prima decizie la proiectarea unei fact table. Toate celelalte decizii — măsuri, dimensiuni, ETL — decurg din ea:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Grain fin&lt;/strong&gt; (ex. linie de factură): flexibilitate maximă în interogări, mai multe rânduri de gestionat&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grain agregat&lt;/strong&gt; (ex. total lunar per client): mai puține rânduri, interogări mai rapide, dar imposibilitatea de a coborî în detaliu&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Principiul fundamental al lui Kimball: modelează întotdeauna la cel mai fin nivel de detaliu disponibil în sistemul sursă.&lt;/p&gt;</description></item><item><title>GRANT</title><link>https://ivanluminaria.com/ro/glossary/grant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/grant/</guid><description>&lt;p&gt;&lt;strong&gt;GRANT&lt;/strong&gt; este comanda SQL folosită pentru atribuirea de privilegii unui utilizator sau rol pe obiecte specifice ale bazei de date. În MySQL și MariaDB, privilegiile se atribuie perechii &lt;code&gt;'utilizator'@'host'&lt;/code&gt;, nu doar numelui de utilizator.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Sintaxa de bază este &lt;code&gt;GRANT &amp;lt;privilegii&amp;gt; ON &amp;lt;baza_de_date&amp;gt;.&amp;lt;tabel&amp;gt; TO 'utilizator'@'host'&lt;/code&gt;. Privilegiile pot fi granulare (SELECT, INSERT, UPDATE, DELETE) sau globale (ALL PRIVILEGES). În MySQL 8, GRANT nu mai creează utilizatori implicit: e nevoie mai întâi de un &lt;code&gt;CREATE USER&lt;/code&gt; explicit, apoi GRANT. În MySQL 5.7 și MariaDB, GRANT cu &lt;code&gt;IDENTIFIED BY&lt;/code&gt; creează utilizatorul și atribuie privilegiile într-o singură comandă.&lt;/p&gt;</description></item><item><title>Group Replication</title><link>https://ivanluminaria.com/ro/glossary/group-replication/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/group-replication/</guid><description>&lt;p&gt;&lt;strong&gt;Group Replication&lt;/strong&gt; este mecanismul nativ al MySQL pentru crearea de clustere cu disponibilitate ridicată și replicare sincronă între mai multe noduri. Spre deosebire de replicarea clasică (asincronă, master-slave), Group Replication garantează că fiecare tranzacție este confirmată de majoritatea nodurilor înainte de a fi considerată committed.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Nodurile comunică printr-un protocol de grup (GCS — Group Communication System) care gestionează consensul distribuit. Fiecare nod menține o copie completă a datelor. Tranzacțiile sunt certificate de grup: dacă nu există conflicte, sunt aplicate pe toate nodurile. Dacă apare un conflict, tranzacția este anulată pe nodul care a inițiat-o.&lt;/p&gt;</description></item><item><title>GTID</title><link>https://ivanluminaria.com/ro/glossary/gtid/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/gtid/</guid><description>&lt;p&gt;&lt;strong&gt;GTID&lt;/strong&gt; (Global Transaction Identifier) este un identificator unic atribuit automat fiecărei tranzacții confirmate pe un server MySQL. Formatul este &lt;code&gt;server_uuid:transaction_id&lt;/code&gt; — de exemplu &lt;code&gt;3E11FA47-71CA-11E1-9E33-C80AA9429562:23&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Când GTID este activat (&lt;code&gt;gtid_mode = ON&lt;/code&gt;), fiecare tranzacție primește un identificator care o face trasabilă pe orice server din clusterul de replicare. Replica știe exact ce tranzacții a executat deja și care îi mai lipsesc, fără a fi nevoie să specifice manual pozițiile binlog (fișier + offset).&lt;/p&gt;</description></item><item><title>Hash Join</title><link>https://ivanluminaria.com/ro/glossary/hash-join/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/hash-join/</guid><description>&lt;p&gt;&lt;strong&gt;Hash join&lt;/strong&gt; este o strategie de join proiectata pentru volume mari de date. Functioneaza in doua faze: mai intai construieste o structura de date in memorie, apoi o foloseste pentru a gasi corespondentele eficient.&lt;/p&gt;
&lt;h2 id="cum-functioneaza" class="relative group"&gt;Cum functioneaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-functioneaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Baza de date citeste tabelul mai mic (build side) si construieste o hash table in memorie, indexand randurile dupa coloana de join. Apoi scaneaza tabelul mai mare (probe side) si pentru fiecare rand cauta corespondenta in hash table cu un lookup O(1).&lt;/p&gt;</description></item><item><title>Hot Desk</title><link>https://ivanluminaria.com/ro/glossary/hot-desk/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/hot-desk/</guid><description>&lt;p&gt;&lt;strong&gt;Hot Desk&lt;/strong&gt; (hot desking) este un model de organizare a spațiilor de lucru în care birourile nu sunt atribuite angajaților individuali. Cine vine la birou ocupă un post de lucru liber, de obicei rezervabil printr-un sistem digital.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;În loc de 50 de posturi fixe pentru 50 de angajați, compania amenajează 15-20 de posturi partajate (hot desks) echipate cu monitor, docking station și conectivitate. Angajații rezervă postul în zilele în care trebuie să fie la birou, folosind celelalte zile în smart working.&lt;/p&gt;</description></item><item><title>Huge Pages</title><link>https://ivanluminaria.com/ro/glossary/huge-pages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/huge-pages/</guid><description>&lt;p&gt;&lt;strong&gt;Huge Pages&lt;/strong&gt; sunt pagini de memorie de 2 MB, față de cele standard de 4 KB ale Linux. Pentru o SGA Oracle de 64 GB, trecerea de la pagini de 4 KB (16,7 milioane de pagini) la Huge Pages de 2 MB (32.768 pagini) reduce de 500 de ori numărul de intrări în Page Table.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Se configurează prin parametrul kernel &lt;code&gt;vm.nr_hugepages&lt;/code&gt; în &lt;code&gt;/etc/sysctl.d/&lt;/code&gt;. Numărul necesar se calculează împărțind dimensiunea SGA la 2 MB și adăugând o marjă de 1,5%. După repornirea instanței Oracle, SGA este alocată în Huge Pages, verificabil din &lt;code&gt;/proc/meminfo&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>I/O Scheduler</title><link>https://ivanluminaria.com/ro/glossary/io-scheduler/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/io-scheduler/</guid><description>&lt;p&gt;&lt;strong&gt;I/O Scheduler&lt;/strong&gt; este componenta kernelului Linux care gestionează coada cererilor de citire și scriere către dispozitivele bloc (discuri). Decide ordinea de execuție a cererilor pentru a optimiza throughput-ul și a minimiza latența.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Linux oferă mai mulți scheduleri: &lt;code&gt;cfq&lt;/code&gt; (Completely Fair Queuing, pentru desktop), &lt;code&gt;deadline&lt;/code&gt;/&lt;code&gt;mq-deadline&lt;/code&gt; (pentru servere și baze de date), &lt;code&gt;noop&lt;/code&gt;/&lt;code&gt;none&lt;/code&gt; (pentru SSD/NVMe). Pentru Oracle recomandarea este &lt;code&gt;deadline&lt;/code&gt;, care servește cererile minimizând seek-urile discului. Se configurează prin &lt;code&gt;/sys/block/sdX/queue/scheduler&lt;/code&gt; și se face permanent prin GRUB.&lt;/p&gt;</description></item><item><title>INTO OUTFILE</title><link>https://ivanluminaria.com/ro/glossary/into-outfile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/into-outfile/</guid><description>&lt;p&gt;&lt;strong&gt;INTO OUTFILE&lt;/strong&gt; este o clauză SQL MySQL care permite exportul rezultatului unei interogări direct într-un fișier pe filesystem-ul serverului de baze de date. Este metoda nativă pentru generarea de fișiere CSV, TSV sau cu separatori personalizați.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Clauza se adaugă la sfârșitul unui &lt;code&gt;SELECT&lt;/code&gt; și specifică calea fișierului de destinație. Parametrii &lt;code&gt;FIELDS TERMINATED BY&lt;/code&gt;, &lt;code&gt;ENCLOSED BY&lt;/code&gt; și &lt;code&gt;LINES TERMINATED BY&lt;/code&gt; controlează formatul output-ului. Fișierul este creat de utilizatorul de sistem MySQL (nu de utilizatorul care execută query-ul), deci trebuie să fie într-un director cu permisiunile corecte.&lt;/p&gt;</description></item><item><title>Issue Tracker</title><link>https://ivanluminaria.com/ro/glossary/issue-tracker/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/issue-tracker/</guid><description>&lt;p&gt;Un &lt;strong&gt;Issue Tracker&lt;/strong&gt; este un sistem pentru înregistrarea, atribuirea, prioritizarea și monitorizarea bug-urilor, cererilor de funcționalități și task-urilor de proiect. Pe GitHub este integrat direct în repository-ul de cod.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Fiecare problemă sau cerere este creată ca &amp;ldquo;issue&amp;rdquo; cu titlu, descriere, etichete de categorie/prioritate și atribuire unui dezvoltator. Issue-urile pot fi legate de branch-uri și Pull Request-uri: când un PR care referențiază un issue este fuzionat, issue-ul se închide automat. Aceasta creează o trasabilitate completă de la problemă la soluție.&lt;/p&gt;</description></item><item><title>IST</title><link>https://ivanluminaria.com/ro/glossary/ist/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/ist/</guid><description>&lt;p&gt;&lt;strong&gt;IST&lt;/strong&gt; (Incremental State Transfer) este mecanismul prin care un nod Galera care revine în cluster după o absență scurtă primește doar tranzacțiile lipsă, fără a fi nevoie să descarce întregul set de date.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Când un nod se reconectează la cluster, donatorul verifică dacă tranzacțiile lipsă sunt încă disponibile în gcache-ul său (Galera cache). Dacă gap-ul este acoperit de gcache, se execută un IST: doar tranzacțiile lipsă sunt trimise nodului, care le aplică și revine în starea Synced. Dacă gap-ul depășește gcache-ul, Galera recurge la un SST complet.&lt;/p&gt;</description></item><item><title>Kimball</title><link>https://ivanluminaria.com/ro/glossary/kimball/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/kimball/</guid><description>&lt;p&gt;&lt;strong&gt;Kimball&lt;/strong&gt; se referă la Ralph Kimball și la metodologia sa de proiectare a data warehouse-urilor, descrisă în cartea &lt;em&gt;The Data Warehouse Toolkit&lt;/em&gt; (prima ediție 1996, a treia ediție 2013).&lt;/p&gt;
&lt;h2 id="abordarea" class="relative group"&gt;Abordarea &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#abordarea" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Metodologia Kimball se bazează pe trei piloni:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dimensional modeling&lt;/strong&gt;: organizarea datelor în star schema cu fact tables și dimension tables, optimizate pentru interogări analitice&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bottom-up&lt;/strong&gt;: construirea DWH-ului pornind de la data mart-uri departamentale individuale, integrându-le progresiv prin dimensiuni conforme (conformed dimensions)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bus architecture&lt;/strong&gt;: un framework pentru a garanta coerența între data mart-uri prin dimensiuni și fapte partajate&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="slowly-changing-dimensions" class="relative group"&gt;Slowly Changing Dimensions &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#slowly-changing-dimensions" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Kimball a definit clasificarea SCD (Slowly Changing Dimensions) în tipurile de la 0 la 7, care a devenit standardul de facto în industrie. Tipul 2 — cu chei surogat și date de valabilitate — este cel mai utilizat pentru urmărirea istoriei dimensiunilor.&lt;/p&gt;</description></item><item><title>Knowledge Transfer</title><link>https://ivanluminaria.com/ro/glossary/knowledge-transfer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/knowledge-transfer/</guid><description>&lt;p&gt;&lt;strong&gt;Knowledge Transfer&lt;/strong&gt; (transfer de cunoștințe) este procesul prin care competențe, informații și know-how sunt transferate de la cei care le dețin la cei care au nevoie de ele — între colegi, între echipe, sau între persoane și sisteme de documentare.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Poate fi formal (documentare, sesiuni de training, wiki-uri) sau informal (pair programming, mentorat, însoțire). AI-ul poate accelera knowledge transfer-ul generând documentație din cod, commituri și issue-uri — nu perfectă, dar suficientă pentru a nu pierde cunoștințe când cineva părăsește proiectul.&lt;/p&gt;</description></item><item><title>KPI</title><link>https://ivanluminaria.com/ro/glossary/kpi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/kpi/</guid><description>&lt;p&gt;Un &lt;strong&gt;KPI&lt;/strong&gt; (Key Performance Indicator) este o metrică cuantificabilă folosită pentru a evalua succesul unei activități, proiect sau organizații față de obiective predefinite. În contextul muncii la distanță, KPI-urile înlocuiesc prezența fizică ca indicator de productivitate.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un KPI eficient este specific, măsurabil și legat de un obiectiv concret. În consultanța IT: tickete închise, cod livrat, SLA-uri respectate, clienți satisfăcuți. Nu &amp;ldquo;ore la birou&amp;rdquo; — pentru că orele nu măsoară valoarea produsă, măsoară doar timpul petrecut.&lt;/p&gt;</description></item><item><title>Least Privilege</title><link>https://ivanluminaria.com/ro/glossary/least-privilege/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/least-privilege/</guid><description>&lt;p&gt;&lt;strong&gt;Least Privilege&lt;/strong&gt; (principiul privilegiului minim) este un principiu fundamental al securității informatice: fiecare utilizator, proces sau sistem trebuie să aibă doar permisiunile strict necesare pentru a-și îndeplini funcția, nimic mai mult.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;În contextul bazelor de date, principiul se aplică atribuind privilegii granulare: &lt;code&gt;SELECT&lt;/code&gt; dacă utilizatorul trebuie doar să citească, &lt;code&gt;SELECT + INSERT + UPDATE&lt;/code&gt; dacă trebuie și să scrie, niciodată &lt;code&gt;ALL PRIVILEGES&lt;/code&gt; dacă nu este strict necesar. Combinat cu modelul &lt;code&gt;utilizator@host&lt;/code&gt; al MySQL, principiul poate fi aplicat și în funcție de originea conexiunii.&lt;/p&gt;</description></item><item><title>Lift-and-Shift</title><link>https://ivanluminaria.com/ro/glossary/lift-and-shift/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/lift-and-shift/</guid><description>&lt;p&gt;&lt;strong&gt;Lift-and-Shift&lt;/strong&gt; (rehosting) este o strategie de migrare care constă în mutarea unui sistem dintr-un mediu în altul — de obicei din on-premise în cloud — fără a-i modifica arhitectura, codul aplicativ sau configurația. Sistemul este luat ca atare și &amp;ldquo;ridicat și mutat&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Infrastructura este replicată în mediul de destinație: aceleași mașini virtuale, aceleași baze de date, același middleware. Avantajul este viteza: nu există rescrierea codului, nu există reproiectare arhitecturală. Riscul este de a duce cu sine toate problemele din mediul original, inclusiv ineficiențele și datoria tehnică.&lt;/p&gt;</description></item><item><title>Local Index</title><link>https://ivanluminaria.com/ro/glossary/local-index/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/local-index/</guid><description>&lt;p&gt;Un &lt;strong&gt;Local Index&lt;/strong&gt; este un index Oracle creat pe o tabelă partițională, care este automat partiționat cu aceeași cheie și aceleași limite ca tabela. Fiecare partiție a tabelei are o partiție de index corespunzătoare.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Când se creează un index cu clauza &lt;code&gt;LOCAL&lt;/code&gt;, Oracle creează o partiție de index pentru fiecare partiție a tabelei. Dacă tabela are 100 de partiții lunare, indexul va avea 100 de partiții corespunzătoare. Operațiile DDL pe o partiție (DROP, TRUNCATE, SPLIT) invalidează doar partiția de index corespunzătoare, nu întregul index.&lt;/p&gt;</description></item><item><title>MERGE</title><link>https://ivanluminaria.com/ro/glossary/merge-sql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/merge-sql/</guid><description>&lt;p&gt;&lt;strong&gt;MERGE&lt;/strong&gt; este o instrucțiune SQL care combină operațiunile de INSERT și UPDATE (și opțional DELETE) într-un singur statement. Dacă înregistrarea există o actualizează, dacă nu există o inserează. Este numită informal &amp;ldquo;upsert&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="sintaxă-oracle" class="relative group"&gt;Sintaxă Oracle &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#sintax%c4%83-oracle" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;MERGE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;INTO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tabel_destinatie&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;USING&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;tabel_sursa&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cheie&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cheie&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;MATCHED&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;UPDATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SET&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;camp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;camp&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;WHEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;MATCHED&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;THEN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cheie&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;camp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;VALUES&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cheie&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;camp&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="utilizare-în-data-warehouse" class="relative group"&gt;Utilizare în data warehouse &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#utilizare-%c3%aen-data-warehouse" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;În contextul ETL, MERGE este mecanismul de bază pentru încărcarea tabelelor dimensionale:&lt;/p&gt;</description></item><item><title>Mobilitate Durabilă</title><link>https://ivanluminaria.com/ro/glossary/mobilita-sostenibile/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/mobilita-sostenibile/</guid><description>&lt;p&gt;&lt;strong&gt;Mobilitatea Durabilă&lt;/strong&gt; este o abordare a transportului urban care privilegiază utilizarea mijloacelor cu impact scăzut asupra mediului — bicicletă, transport public, vehicule electrice, car sharing — față de mașina privată cu motor cu combustie internă.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Se bazează pe o schimbare de paradigmă: în loc să se construiască mai multe drumuri pentru mai multe mașini, se investește în infrastructură ciclabilă, transport public eficient și stimulente pentru mobilitatea activă. Orașe precum Amsterdam, Copenhaga și München demonstrează că modelul funcționează la scară largă.&lt;/p&gt;</description></item><item><title>MVCC</title><link>https://ivanluminaria.com/ro/glossary/mvcc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/mvcc/</guid><description>&lt;p&gt;&lt;strong&gt;MVCC&lt;/strong&gt; (Multi-Version Concurrency Control) este modelul de concurență folosit de PostgreSQL pentru a gestiona accesul simultan la date. Fiecare UPDATE creează o nouă versiune a rândului și o marchează pe cea veche ca &amp;ldquo;moartă&amp;rdquo;; fiecare DELETE marchează rândul ca nevizibil. Citirile nu blochează scrierile și invers.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Fiecare tranzacție vede un snapshot consistent al bazei de date din momentul începerii sale. Rândurile modificate de alte tranzacții neconfirmate sunt invizibile. Aceasta elimină nevoia de lock-uri exclusive pe citiri, permițând concurență ridicată — dar generează &amp;ldquo;gunoi&amp;rdquo; sub formă de dead tuples care trebuie curățate de VACUUM.&lt;/p&gt;</description></item><item><title>mydumper</title><link>https://ivanluminaria.com/ro/glossary/mydumper/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/mydumper/</guid><description>&lt;p&gt;&lt;strong&gt;mydumper&lt;/strong&gt; este un instrument open source de backup logic pentru MySQL și MariaDB care implementează paralelism adevărat: nu doar între tabele diferite, ci și în interiorul aceleiași tabele, împărțind-o în chunk-uri bazate pe primary key.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;mydumper se conectează la serverul MySQL, achiziționează un snapshot consistent cu &lt;code&gt;FLUSH TABLES WITH READ LOCK&lt;/code&gt; (sau &lt;code&gt;--trx-consistency-only&lt;/code&gt; pentru a evita lock-urile globale pe InnoDB), apoi distribuie munca între thread-uri multiple. Fiecare tabelă mare este spartă în chunk-uri — implicit bazate pe range-urile primary key-ului — și fiecare chunk este exportat de un thread separat.&lt;/p&gt;</description></item><item><title>mysqlbinlog</title><link>https://ivanluminaria.com/ro/glossary/mysqlbinlog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/mysqlbinlog/</guid><description>&lt;p&gt;&lt;strong&gt;mysqlbinlog&lt;/strong&gt; este utilitarul de linie de comandă furnizat cu MySQL pentru citirea și decodificarea conținutului fișierelor binary log. Este singurul instrument capabil să convertească formatul binar al binlog-urilor în output lizibil sau în instrucțiuni SQL re-executabile.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;mysqlbinlog citește fișierele binlog și produce output în format text. Suportă mai multe filtre:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pe interval de timp&lt;/strong&gt;: &lt;code&gt;--start-datetime&lt;/code&gt; și &lt;code&gt;--stop-datetime&lt;/code&gt; pentru a limita output-ul la o fereastră temporală&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pe bază de date&lt;/strong&gt;: &lt;code&gt;--database&lt;/code&gt; pentru a filtra evenimentele unei baze de date specifice&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pe poziție&lt;/strong&gt;: &lt;code&gt;--start-position&lt;/code&gt; și &lt;code&gt;--stop-position&lt;/code&gt; pentru a selecta evenimente specifice&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cu format ROW, flag-ul &lt;code&gt;--verbose&lt;/code&gt; decodifică modificările la nivel de rând în format pseudo-SQL comentat, altfel output-ul este un blob binar ilizibil.&lt;/p&gt;</description></item><item><title>mysqldump</title><link>https://ivanluminaria.com/ro/glossary/mysqldump/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/mysqldump/</guid><description>&lt;p&gt;&lt;strong&gt;mysqldump&lt;/strong&gt; este utilitarul de backup logic inclus standard în fiecare instalare de MySQL și MariaDB. Produce un fișier SQL care conține toate instrucțiunile (CREATE TABLE, INSERT) necesare pentru a reconstrui complet schema și datele unei baze de date.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;mysqldump se conectează la serverul MySQL și citește tabelele una câte una, generând instrucțiunile SQL corespunzătoare la ieșire. Operația este strict single-threaded: o tabelă după alta, un rând după altul. Fișierul produs poate fi comprimat extern (gzip, zstd) dar instrumentul în sine nu oferă compresie nativă.&lt;/p&gt;</description></item><item><title>mysqlpump</title><link>https://ivanluminaria.com/ro/glossary/mysqlpump/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/mysqlpump/</guid><description>&lt;p&gt;&lt;strong&gt;mysqlpump&lt;/strong&gt; este utilitarul de backup logic introdus de Oracle în MySQL 5.7 ca evoluție a mysqldump. Diferența principală este suportul pentru paralelism la nivel de tabelă și compresia nativă a output-ului (zlib, lz4, zstd).&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;mysqlpump poate face dump la mai multe tabele simultan folosind thread-uri paralele, configurabile cu &lt;code&gt;--default-parallelism&lt;/code&gt;. Compresia se aplică direct în timpul dump-ului, fără a necesita pipe-uri externe către gzip. Suportă și dump-ul selectiv al utilizatorilor și conturilor MySQL.&lt;/p&gt;</description></item><item><title>Navetism</title><link>https://ivanluminaria.com/ro/glossary/pendolarismo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/pendolarismo/</guid><description>&lt;p&gt;&lt;strong&gt;Navetismul&lt;/strong&gt; (commuting) este deplasarea zilnică între casă și locul de muncă. În marile orașe italiene precum Roma, naveta medie absoarbe 2-4 ore pe zi, cu costuri directe (combustibil, parcare, transport public) și indirecte (stres, oboseală, productivitate pierdută).&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un consultant IT care locuiește la 30 km de birou în Roma poate petrece 1h15-2h30 doar pentru dus. Pe 220 de zile lucrătoare, sunt 47-89 de ore pierdute pe lună — până la două săptămâni lucrătoare petrecute în mașină fără a produce nimic.&lt;/p&gt;</description></item><item><title>Nested Loop</title><link>https://ivanluminaria.com/ro/glossary/nested-loop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/nested-loop/</guid><description>&lt;p&gt;&lt;strong&gt;Nested loop&lt;/strong&gt; este cea mai simpla strategie de join: pentru fiecare rand din tabelul extern, baza de date cauta randurile corespunzatoare in tabelul intern. Functioneaza ca un dublu ciclu &lt;code&gt;for&lt;/code&gt; imbricat — de aici numele.&lt;/p&gt;
&lt;h2 id="cum-functioneaza" class="relative group"&gt;Cum functioneaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-functioneaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Optimizatorul alege un tabel ca &amp;ldquo;extern&amp;rdquo; (outer) si unul ca &amp;ldquo;intern&amp;rdquo; (inner). Pentru fiecare rand din tabelul extern, executa o cautare in tabelul intern pe coloana de join. Daca tabelul intern are un index pe coloana de join, fiecare cautare este un acces direct via B-tree. Fara index, fiecare cautare devine un sequential scan complet.&lt;/p&gt;</description></item><item><title>NOLOGGING</title><link>https://ivanluminaria.com/ro/glossary/nologging/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/nologging/</guid><description>&lt;p&gt;&lt;strong&gt;NOLOGGING&lt;/strong&gt; este un mod Oracle care dezactivează generarea de redo log în timpul operațiunilor de încărcare masivă. Operațiunile se completează mult mai rapid, dar datele nu sunt recuperabile prin redo în caz de crash înainte de un backup.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Când un segment (tabelă, index, partiție) este în mod NOLOGGING, operațiunile masive precum CTAS, &lt;code&gt;INSERT /*+ APPEND */&lt;/code&gt; și &lt;code&gt;ALTER TABLE MOVE&lt;/code&gt; nu scriu redo log pentru blocurile de date. Pe o copie de 380 GB, acest lucru elimină generarea aceleiași cantități de redo, prevenind saturarea zonei de archivelog și reducând timpii de la zile la ore.&lt;/p&gt;</description></item><item><title>Object Privilege</title><link>https://ivanluminaria.com/ro/glossary/object-privilege/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/object-privilege/</guid><description>&lt;p&gt;Un &lt;strong&gt;Object Privilege&lt;/strong&gt; în Oracle este o autorizare care permite executarea operațiunilor pe un obiect specific al bazei de date: o tabelă, o vizualizare, o secvență sau o procedură PL/SQL. Exemple tipice includ &lt;code&gt;SELECT ON schema.tabela&lt;/code&gt;, &lt;code&gt;INSERT ON schema.tabela&lt;/code&gt; și &lt;code&gt;EXECUTE ON schema.procedura&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Privilegiile de obiect se acordă cu &lt;code&gt;GRANT&lt;/code&gt; specificând operațiunea și obiectul țintă: &lt;code&gt;GRANT SELECT ON app_owner.clienti TO srv_report&lt;/code&gt;. Pot fi atribuite utilizatorilor individuali sau rolurilor. Spre deosebire de privilegiile de sistem, operează pe un singur obiect și nu conferă puteri globale asupra bazei de date.&lt;/p&gt;</description></item><item><title>OCI</title><link>https://ivanluminaria.com/ro/glossary/oci/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/oci/</guid><description>&lt;p&gt;&lt;strong&gt;OCI&lt;/strong&gt; (Oracle Cloud Infrastructure) este platforma cloud a Oracle, lansata in a doua generatie in 2018. Spre deosebire de alti furnizori cloud, OCI este proiectata nativ pentru workload-uri Oracle Database si ofera avantaje semnificative in ceea ce priveste licentierea si performanta.&lt;/p&gt;
&lt;h2 id="de-ce-oci-pentru-oracle-database" class="relative group"&gt;De ce OCI pentru Oracle Database &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#de-ce-oci-pentru-oracle-database" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Avantajul principal tine de licentiere. Pe OCI, Oracle recunoaste propriile OCPU (Oracle CPU) cu un raport 1:1 pentru calculul licentelor. Pe alti furnizori cloud precum AWS sau Azure, raportul vCPU-licente este mai putin favorabil si riscul de audit este real.&lt;/p&gt;</description></item><item><title>OLAP</title><link>https://ivanluminaria.com/ro/glossary/olap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/olap/</guid><description>&lt;p&gt;&lt;strong&gt;OLAP&lt;/strong&gt; (Online Analytical Processing) indică o abordare a procesării datelor orientată spre analiza multidimensională: agregări, drill-down, comparații temporale, slice-and-dice pe volume mari de date istorice.&lt;/p&gt;
&lt;h2 id="olap-vs-oltp" class="relative group"&gt;OLAP vs OLTP &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#olap-vs-oltp" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Caracteristică&lt;/th&gt;
 &lt;th&gt;OLAP&lt;/th&gt;
 &lt;th&gt;OLTP&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Scop&lt;/td&gt;
 &lt;td&gt;Analiză și raportare&lt;/td&gt;
 &lt;td&gt;Tranzacții operative&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Model de date&lt;/td&gt;
 &lt;td&gt;Star schema, denormalizat&lt;/td&gt;
 &lt;td&gt;3NF, normalizat&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Interogare tipică&lt;/td&gt;
 &lt;td&gt;Agregări pe milioane de linii&lt;/td&gt;
 &lt;td&gt;Citire/scriere a câtorva linii&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Utilizatori&lt;/td&gt;
 &lt;td&gt;Analiști, management&lt;/td&gt;
 &lt;td&gt;Aplicații, operatori&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Actualizare&lt;/td&gt;
 &lt;td&gt;Batch (ETL periodic)&lt;/td&gt;
 &lt;td&gt;Timp real&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="operațiuni-olap" class="relative group"&gt;Operațiuni OLAP &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#opera%c8%9biuni-olap" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Operațiunile fundamentale ale analizei OLAP sunt:&lt;/p&gt;</description></item><item><title>Outsourcing</title><link>https://ivanluminaria.com/ro/glossary/outsourcing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/outsourcing/</guid><description>&lt;p&gt;&lt;strong&gt;Outsourcing-ul&lt;/strong&gt; este practica de a încredința dezvoltarea, mentenanța sau gestionarea sistemelor IT unor furnizori externi companiei. Poate implica proiecte complete (dezvoltarea de software custom) sau servicii continue (gestionarea infrastructurii, suport aplicativ).&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Compania client definește cerințele și semnează un contract cu un furnizor extern care se angajează să realizeze proiectul. Cele mai comune modele contractuale sunt: la pachet (preț fix pentru rezultat definit), pe timp și materiale (zile-om facturate), sau hibride. Furnizorul pune la dispoziție o echipă de consultanți care lucrează pe proiect, adesea cu rotație periodică a personalului.&lt;/p&gt;</description></item><item><title>Parking Lot</title><link>https://ivanluminaria.com/ro/glossary/parking-lot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/parking-lot/</guid><description>&lt;p&gt;&lt;strong&gt;Parking Lot&lt;/strong&gt; este o listă vizibilă — pe o tablă, un document partajat sau chat — unde facilitatorul notează subiectele care apar în timpul unei ședințe dar care nu pot fi discutate în timpul disponibil. Subiectele sunt &amp;ldquo;parcate&amp;rdquo; și abordate după ședință doar cu persoanele implicate.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Când în timpul unui standup cineva ridică o problemă complexă, facilitatorul spune: &amp;ldquo;O notez în parking lot, discutăm după.&amp;rdquo; Subiectul nu este ignorat — este doar mutat în contextul potrivit, unde poate fi abordat fără a pierde timpul celor neimplicați.&lt;/p&gt;</description></item><item><title>Partita IVA</title><link>https://ivanluminaria.com/ro/glossary/partita-iva/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/partita-iva/</guid><description>&lt;p&gt;&lt;strong&gt;Partita IVA&lt;/strong&gt; este codul de identificare fiscală atribuit lucrătorilor independenți și întreprinderilor din Italia pentru operațiunile supuse TVA. În consultanța IT, &amp;ldquo;a lucra cu partita IVA&amp;rdquo; înseamnă a opera ca freelancer, facturând serviciile direct clientului.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Consultantul freelancer emite factură clientului la sfârșitul perioadei de lucru. Plata se face conform termenilor contractuali — care în Italia sunt de obicei 60-90-120 de zile sfârșit de lună. Între timp, consultantul suportă toate cheltuielile (contribuții sociale, impozite, chirie, utilități) din fonduri proprii.&lt;/p&gt;</description></item><item><title>Partition Pruning</title><link>https://ivanluminaria.com/ro/glossary/partition-pruning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/partition-pruning/</guid><description>&lt;p&gt;&lt;strong&gt;Partition Pruning&lt;/strong&gt; este mecanismul prin care Oracle, în timpul execuției unei interogări pe o tabelă partițională, identifică și exclude automat partițiile care nu pot conține date relevante pentru predicatul interogării.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Când o interogare include un predicat pe coloana de partiție (ex. &lt;code&gt;WHERE data_movimento BETWEEN ...&lt;/code&gt;), Oracle consultă metadatele partițiilor și determină care partiții conțin date în intervalul solicitat. Doar acele partiții sunt citite. În planul de execuție apare ca &lt;code&gt;PARTITION RANGE SINGLE&lt;/code&gt; sau &lt;code&gt;PARTITION RANGE ITERATOR&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Pedalare Asistată</title><link>https://ivanluminaria.com/ro/glossary/pedalata-assistita/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/pedalata-assistita/</guid><description>&lt;p&gt;&lt;strong&gt;Pedalarea Asistată&lt;/strong&gt; este un sistem de propulsie electrică montat pe o bicicletă care amplifică forța de pedalare a ciclistului printr-un motor electric. Motorul se activează doar când se pedalează și se dezactivează peste 25 km/h (limita europeană).&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un senzor detectează forța și cadența pedalării și activează motorul electric proporțional. Cu cât pedalezi mai tare, cu atât motorul ajută mai mult. Rezultatul este că urcări precum dealul Celio din Roma devin o pantă ușoară, iar la destinație ajungi fără să transpiri — un detaliu crucial pentru cine trebuie să se prezinte la birou.&lt;/p&gt;</description></item><item><title>pg_stat_statements</title><link>https://ivanluminaria.com/ro/glossary/pg-stat-statements/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/pg-stat-statements/</guid><description>&lt;p&gt;&lt;strong&gt;pg_stat_statements&lt;/strong&gt; este o extensie PostgreSQL — inclusă în distribuția oficială dar neactivă implicit — care ține evidența statisticilor de execuție pentru toate query-urile SQL care trec prin server. Query-urile sunt normalizate (valorile literale înlocuite cu parametri) pentru a grupa execuțiile aceluiași pattern.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Extensia necesită încărcarea ca shared library la pornirea serverului prin parametrul &lt;code&gt;shared_preload_libraries&lt;/code&gt;. Odată activă, înregistrează pentru fiecare query: numărul de execuții, timpul total și mediu, rândurile returnate, blocurile citite de pe disc și din cache. Parametrul &lt;code&gt;pg_stat_statements.max&lt;/code&gt; controlează câte query-uri distincte sunt urmărite (implicit 5000).&lt;/p&gt;</description></item><item><title>pg_trgm</title><link>https://ivanluminaria.com/ro/glossary/pg-trgm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/pg-trgm/</guid><description>&lt;p&gt;&lt;strong&gt;pg_trgm&lt;/strong&gt; este o extensie PostgreSQL care implementează căutarea bazată pe trigrame — secvențe de trei caractere consecutive extrase din text. Activează utilizarea indexurilor GIN și GiST pentru a accelera căutări &lt;code&gt;LIKE '%valoare%'&lt;/code&gt; și &lt;code&gt;ILIKE&lt;/code&gt;, care altfel ar necesita scanări secvențiale.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Extensia descompune fiecare șir în trigrame: de exemplu, &amp;ldquo;hello&amp;rdquo; devine {&amp;quot; h&amp;quot;, &amp;quot; he&amp;quot;, &amp;ldquo;hel&amp;rdquo;, &amp;ldquo;ell&amp;rdquo;, &amp;ldquo;llo&amp;rdquo;, &amp;ldquo;lo &amp;ldquo;}. Un index GIN cu operator class &lt;code&gt;gin_trgm_ops&lt;/code&gt; indexează aceste trigrame. Când se execută un &lt;code&gt;LIKE '%ell%'&lt;/code&gt;, PostgreSQL caută trigramele corespunzătoare în index în loc să scaneze întreaga tabelă.&lt;/p&gt;</description></item><item><title>PITR</title><link>https://ivanluminaria.com/ro/glossary/pitr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/pitr/</guid><description>&lt;p&gt;&lt;strong&gt;PITR&lt;/strong&gt; (Point-in-Time Recovery) este o tehnică de restaurare care permite readucerea unei baze de date la orice moment în timp, nu doar la momentul backup-ului. Se bazează pe combinarea unui backup complet cu log-urile de tranzacții (binary log în MySQL, WAL în PostgreSQL, redo log în Oracle).&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Procesul se desfășoară în două faze:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Restaurarea backup-ului&lt;/strong&gt;: baza de date este restaurată la ultimul backup disponibil&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Replay-ul log-urilor&lt;/strong&gt;: log-urile de tranzacții sunt reaplicate de la momentul backup-ului până la momentul dorit, excluzând evenimentul care a cauzat problema&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;În MySQL, tool-ul &lt;code&gt;mysqlbinlog&lt;/code&gt; extrage evenimentele din binary log-uri și le reproduce pe baza de date restaurată.&lt;/p&gt;</description></item><item><title>Presenteism</title><link>https://ivanluminaria.com/ro/glossary/presenteismo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/presenteismo/</guid><description>&lt;p&gt;&lt;strong&gt;Presenteismul&lt;/strong&gt; este cultura organizațională care măsoară valoarea muncii pe baza prezenței fizice a angajatului la birou, indiferent de calitatea și cantitatea rezultatelor produse. Este presupunerea că &amp;ldquo;dacă te văd la birou, lucrezi.&amp;rdquo;&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Într-o organizație presenteistă, a fi la birou de la 9 la 18 este mai important decât închiderea task-urilor. A veni târziu este o problemă chiar dacă ai produs mai mult decât toți. A lucra de acasă este suspect chiar dacă rezultatele sunt excelente. Controlul se bazează pe vedere, nu pe metrici.&lt;/p&gt;</description></item><item><title>Pull Request</title><link>https://ivanluminaria.com/ro/glossary/pull-request/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/pull-request/</guid><description>&lt;p&gt;Un &lt;strong&gt;Pull Request&lt;/strong&gt; (PR) este o cerere formală de incorporare a modificărilor dintr-un branch de dezvoltare în branch-ul principal al repository-ului. Este mecanismul central de colaborare pe GitHub și platforme similare.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Dezvoltatorul lucrează pe un branch dedicat (ex. &lt;code&gt;fix/issue-234-eroare-calcul&lt;/code&gt;), completează modificările și deschide un PR. PR-ul arată diff-ul codului, permite colegilor să comenteze rând cu rând, să ceară modificări sau să aprobe. Doar după aprobare codul se unește (merge) în branch-ul principal. Aceasta garantează că codul &amp;ldquo;bun&amp;rdquo; rămâne bun.&lt;/p&gt;</description></item><item><title>Quorum</title><link>https://ivanluminaria.com/ro/glossary/quorum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/quorum/</guid><description>&lt;p&gt;&lt;strong&gt;Quorum-ul&lt;/strong&gt; este numărul minim de noduri care trebuie să fie de acord pentru ca clusterul să fie considerat operațional. Într-un cluster cu 3 noduri, quorum-ul este 2 (majoritatea). Dacă un nod se deconectează, celelalte două recunosc că sunt majoritatea și continuă să funcționeze normal.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Galera Cluster folosește un protocol de comunicare de grup care verifică continuu câte noduri sunt accesibile. Calculul este simplu: quorum = (număr total noduri / 2) + 1. Cu 3 noduri quorum-ul este 2, cu 5 noduri este 3. Nodurile care pierd quorum-ul trec în starea Non-Primary și refuză scrierile pentru a evita inconsistențele.&lt;/p&gt;</description></item><item><title>RAC</title><link>https://ivanluminaria.com/ro/glossary/rac/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/rac/</guid><description>&lt;p&gt;&lt;strong&gt;RAC&lt;/strong&gt; (Real Application Clusters) este tehnologia Oracle care permite mai multor instante ale bazei de date sa acceseze simultan acelasi storage partajat. Daca un nod se defecteaza, celelalte continua sa serveasca cererile fara intrerupere — failover-ul este transparent pentru aplicatii.&lt;/p&gt;
&lt;h2 id="cum-functioneaza" class="relative group"&gt;Cum functioneaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-functioneaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Un cluster RAC este compus din doua sau mai multe servere (noduri) conectate printr-o retea privata de mare viteza (interconnect) si storage partajat (de obicei ASM — Automatic Storage Management). Fiecare nod ruleaza propria instanta Oracle, dar toate acceseaza aceleasi datafile-uri.&lt;/p&gt;</description></item><item><title>Ragged hierarchy</title><link>https://ivanluminaria.com/ro/glossary/ragged-hierarchy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/ragged-hierarchy/</guid><description>&lt;p&gt;O &lt;strong&gt;ragged hierarchy&lt;/strong&gt; (ierarhie dezechilibrată) este o structură ierarhică în care nu toate ramurile ating aceeași adâncime. Unele niveluri intermediare lipsesc pentru anumite entități.&lt;/p&gt;
&lt;h2 id="exemplu-concret" class="relative group"&gt;Exemplu concret &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#exemplu-concret" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Într-o ierarhie cu trei niveluri Top Group → Group → Client:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unii clienți au toate cele trei niveluri (ierarhie completă)&lt;/li&gt;
&lt;li&gt;Unii clienți au un Group dar niciun Top Group&lt;/li&gt;
&lt;li&gt;Unii clienți nu au nici Group nici Top Group (clienți direcți)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rezultatul este o structură cu &amp;ldquo;goluri&amp;rdquo; care cauzează probleme în rapoartele de agregare: linii cu NULL, totaluri împărțite, drill-down-uri incomplete.&lt;/p&gt;</description></item><item><title>Range Partitioning</title><link>https://ivanluminaria.com/ro/glossary/range-partitioning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/range-partitioning/</guid><description>&lt;p&gt;&lt;strong&gt;Range Partitioning&lt;/strong&gt; (partiționare pe intervale) este o strategie de partiționare a tabelelor în care rândurile sunt distribuite în partiții diferite pe baza valorii unei coloane relative la intervale predefinite. Coloana de partiționare este aproape întotdeauna o dată în data warehouse-uri.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Fiecare partiție este definită cu o clauză &lt;code&gt;VALUES LESS THAN&lt;/code&gt; care stabilește limita superioară a intervalului. Oracle atribuie automat fiecare rând partiției corecte pe baza valorii coloanei de partiționare. Dacă un rând are &lt;code&gt;data_vendita = '2025-03-15'&lt;/code&gt;, este inserat în partiția al cărei interval include acea dată.&lt;/p&gt;</description></item><item><title>Redo Log</title><link>https://ivanluminaria.com/ro/glossary/redo-log/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/redo-log/</guid><description>&lt;p&gt;&lt;strong&gt;Redo Log&lt;/strong&gt; este mecanismul prin care Oracle inregistreaza fiecare modificare a datelor (INSERT, UPDATE, DELETE, DDL) inainte ca aceasta sa fie scrisa definitiv in datafile-uri. Este garantia fundamentala a durabilitatii tranzactiilor.&lt;/p&gt;
&lt;h2 id="cum-functioneaza" class="relative group"&gt;Cum functioneaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-functioneaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Oracle scrie modificarile in redo log-urile online secvential si continuu. Redo log-urile sunt organizate in grupuri circulare: cand un grup se umple, Oracle trece la urmatorul. Cand toate grupurile au fost folosite, Oracle revine la primul (log switch).&lt;/p&gt;</description></item><item><title>Relay log</title><link>https://ivanluminaria.com/ro/glossary/relay-log/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/relay-log/</guid><description>&lt;p&gt;&lt;strong&gt;Relay log-ul&lt;/strong&gt; este un fișier de log intermediar prezent pe slave într-o arhitectură de replicare MySQL. Conține evenimentele primite din binary log-ul master-ului, în așteptarea de a fi executate local de către thread-ul SQL al slave-ului.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Fluxul replicării MySQL trece prin relay log în trei faze:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;I/O thread-ul&lt;/strong&gt; slave-ului se conectează la master și citește binary log-urile&lt;/li&gt;
&lt;li&gt;Evenimentele primite sunt scrise în relay log-ul local&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL thread-ul&lt;/strong&gt; slave-ului citește evenimentele din relay log și le execută pe baza de date locală&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Această arhitectură cu două thread-uri permite decuplarea recepției datelor de aplicarea lor: slave-ul poate continua să primească evenimente de la master chiar dacă execuția locală este temporar mai lentă.&lt;/p&gt;</description></item><item><title>REVOKE</title><link>https://ivanluminaria.com/ro/glossary/revoke/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/revoke/</guid><description>&lt;p&gt;&lt;strong&gt;REVOKE&lt;/strong&gt; este comanda SQL care elimină privilegiile sau rolurile acordate anterior cu &lt;code&gt;GRANT&lt;/code&gt;. Este complementul indispensabil al GRANT și instrumentul principal pentru restricționarea permisiunilor atunci când un model de securitate este restructurat.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Sintaxa urmează același tipar ca GRANT: &lt;code&gt;REVOKE SELECT ON schema.tabela FROM utilizator&lt;/code&gt; sau &lt;code&gt;REVOKE rol FROM utilizator&lt;/code&gt;. În Oracle, revocarea unui rol precum &lt;code&gt;DBA&lt;/code&gt; elimină dintr-o singură lovitură toate privilegiile de sistem incluse în acel rol. Înainte de a executa un REVOKE critic, este esențial să se verifice că utilizatorul păstrează privilegiile necesare pentru funcțiile sale.&lt;/p&gt;</description></item><item><title>RMAN</title><link>https://ivanluminaria.com/ro/glossary/rman/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/rman/</guid><description>&lt;p&gt;&lt;strong&gt;RMAN&lt;/strong&gt; (Recovery Manager) este instrumentul nativ Oracle pentru backup, restore si recovery al bazei de date. Este o utilitate de linie de comanda care gestioneaza toate operatiunile de protectie a datelor in mod integrat cu baza de date.&lt;/p&gt;
&lt;h2 id="ce-face" class="relative group"&gt;Ce face &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#ce-face" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Backup&lt;/strong&gt;: complet, incremental, doar archived log-uri&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restore&lt;/strong&gt;: recuperarea datafile-urilor, tablespace-urilor sau a intregii baze de date&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recovery&lt;/strong&gt;: aplicarea redo log-urilor pentru a aduce baza de date la un punct specific in timp&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Duplicate&lt;/strong&gt;: crearea de copii ale bazei de date, inclusiv baze de date standby pentru Data Guard&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rman-si-data-guard" class="relative group"&gt;RMAN si Data Guard &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#rman-si-data-guard" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Pentru crearea unei baze de date standby, RMAN permite &lt;code&gt;DUPLICATE ... FOR STANDBY FROM ACTIVE DATABASE&lt;/code&gt; — o copie directa prin retea de la primar la standby, fara nevoia de backup-uri intermediare pe banda sau disc. Comanda transfera toate datafile-urile si controlfile-urile si le configureaza automat pentru replicare.&lt;/p&gt;</description></item><item><title>ROI</title><link>https://ivanluminaria.com/ro/glossary/roi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/roi/</guid><description>&lt;p&gt;&lt;strong&gt;ROI&lt;/strong&gt; (Return on Investment) este metrica care măsoară randamentul unei investiții raportând beneficiul net la costul suportat, exprimat ca procent. Un ROI de 200% înseamnă că fiecare euro investit a generat doi euro retur.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Se calculează ca: &lt;code&gt;(Beneficiu - Cost) / Cost × 100&lt;/code&gt;. În contextul proiectelor IT cu componente AI, calculul ROI trebuie să includă nu doar costurile de implementare ci și cele de mentenanță, training al echipei, guvernanță și gestionare a erorilor modelului.&lt;/p&gt;</description></item><item><title>ROLE</title><link>https://ivanluminaria.com/ro/glossary/postgresql-role/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/postgresql-role/</guid><description>&lt;p&gt;În PostgreSQL, &lt;strong&gt;ROLE&lt;/strong&gt; este singura entitate de securitate. Nu există o distincție între &amp;ldquo;utilizator&amp;rdquo; și &amp;ldquo;rol&amp;rdquo;: totul este un ROLE. Un ROLE cu atributul &lt;code&gt;LOGIN&lt;/code&gt; se comportă ca un utilizator; fără &lt;code&gt;LOGIN&lt;/code&gt;, este un container de privilegii atribuibil altor ROLE-uri.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CREATE USER mario&lt;/code&gt; este pur și simplu o scurtătură pentru &lt;code&gt;CREATE ROLE mario WITH LOGIN&lt;/code&gt;. ROLE-urile pot deține obiecte, moșteni privilegii de la alte ROLE-uri prin atributul &lt;code&gt;INHERIT&lt;/code&gt;, și fi utilizate pentru a construi ierarhii de permisiuni. Un ROLE &amp;ldquo;funcțional&amp;rdquo; (fără LOGIN) grupează privilegii; ROLE-urile &amp;ldquo;utilizator&amp;rdquo; (cu LOGIN) le moștenesc.&lt;/p&gt;</description></item><item><title>RPO</title><link>https://ivanluminaria.com/ro/glossary/rpo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/rpo/</guid><description>&lt;p&gt;&lt;strong&gt;RPO&lt;/strong&gt; (Recovery Point Objective) este cantitatea maxima de date pe care o organizatie si-o poate permite sa piarda in caz de defectiune sau dezastru. Se masoara in timp: un RPO de 1 ora inseamna acceptarea pierderii a cel mult ultimei ore de tranzactii.&lt;/p&gt;
&lt;h2 id="cum-se-determina" class="relative group"&gt;Cum se determina &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-se-determina" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;RPO-ul depinde de strategia de backup si replicare:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Strategie&lt;/th&gt;
 &lt;th&gt;RPO tipic&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Backup nocturn pe banda&lt;/td&gt;
 &lt;td&gt;12-24 ore&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Backup + archived log-uri pe storage remote&lt;/td&gt;
 &lt;td&gt;1-4 ore&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data Guard asincron (MaxPerformance)&lt;/td&gt;
 &lt;td&gt;Cateva secunde&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data Guard sincron (MaxAvailability)&lt;/td&gt;
 &lt;td&gt;Zero&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="rpo-vs-rto" class="relative group"&gt;RPO vs RTO &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#rpo-vs-rto" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;RPO si RTO sunt complementare dar distincte:&lt;/p&gt;</description></item><item><title>RTO</title><link>https://ivanluminaria.com/ro/glossary/rto/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/rto/</guid><description>&lt;p&gt;&lt;strong&gt;RTO&lt;/strong&gt; (Recovery Time Objective) este timpul maxim acceptabil pentru restaurarea serviciului dupa o defectiune sau un dezastru. Se masoara din momentul defectiunii pana in momentul in care sistemul redevine operational.&lt;/p&gt;
&lt;h2 id="cum-se-determina" class="relative group"&gt;Cum se determina &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-se-determina" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;RTO-ul depinde de strategia de recuperare si de infrastructura disponibila:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Strategie&lt;/th&gt;
 &lt;th&gt;RTO tipic&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Restore din backup pe banda&lt;/td&gt;
 &lt;td&gt;4-12 ore&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Restore din backup pe disc&lt;/td&gt;
 &lt;td&gt;1-4 ore&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data Guard cu switchover manual&lt;/td&gt;
 &lt;td&gt;1-5 minute&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data Guard cu Fast-Start Failover&lt;/td&gt;
 &lt;td&gt;10-30 secunde&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="rto-vs-rpo" class="relative group"&gt;RTO vs RPO &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#rto-vs-rpo" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RTO&lt;/strong&gt;: cat timp dureaza repornirea (priveste inainte)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RPO&lt;/strong&gt;: cate date poti pierde (priveste inapoi)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sunt metrici independente. Un restore din backup poate avea RTO=2 ore si RPO=24 ore. Un Data Guard sincron poate avea RTO=30 secunde si RPO=0.&lt;/p&gt;</description></item><item><title>SCAN Listener</title><link>https://ivanluminaria.com/ro/glossary/scan-listener/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/scan-listener/</guid><description>&lt;p&gt;&lt;strong&gt;SCAN Listener&lt;/strong&gt; (Single Client Access Name) este componenta Oracle RAC care ofera un singur nume DNS pentru accesul la cluster. Aplicatiile se conecteaza la SCAN name fara a fi nevoie sa cunoasca nodurile individuale: listener-ul distribuie automat conexiunile intre nodurile active.&lt;/p&gt;
&lt;h2 id="cum-functioneaza" class="relative group"&gt;Cum functioneaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-functioneaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;SCAN este un nume DNS care se rezolva la trei adrese IP virtuale (VIP), distribuite intre nodurile clusterului. Cand un client se conecteaza la SCAN name, DNS-ul returneaza una dintre cele trei IP-uri, iar listener-ul de pe acel IP redirectioneaza conexiunea catre nodul cel mai potrivit in functie de serviciul solicitat si de sarcina.&lt;/p&gt;</description></item><item><title>SCD</title><link>https://ivanluminaria.com/ro/glossary/scd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/scd/</guid><description>&lt;p&gt;&lt;strong&gt;SCD&lt;/strong&gt; (Slowly Changing Dimension) se refera la un set de tehnici folosite in data warehouse pentru gestionarea modificarilor in datele tabelelor dimensionale de-a lungul timpului.&lt;/p&gt;
&lt;h2 id="tipurile-principale" class="relative group"&gt;Tipurile principale &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#tipurile-principale" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tipul 1&lt;/strong&gt;: suprascrierea valorii anterioare. Nicio istorie conservata&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tipul 2&lt;/strong&gt;: inserarea unui rand nou cu date de valabilitate (data inceput, data sfarsit). Conserva toata istoria&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tipul 3&lt;/strong&gt;: adaugarea unei coloane pentru valoarea anterioara. Conserva doar ultima modificare&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="de-ce-conteaza" class="relative group"&gt;De ce conteaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#de-ce-conteaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Intr-o baza de date tranzactionala, cand un client isi schimba adresa se actualizeaza inregistrarea. Intr-un data warehouse acest lucru ar insemna pierderea istoriei: toate vanzarile anterioare ar aparea asociate noii adrese.&lt;/p&gt;</description></item><item><title>Schema</title><link>https://ivanluminaria.com/ro/glossary/schema/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/schema/</guid><description>&lt;p&gt;O &lt;strong&gt;Schemă&lt;/strong&gt; într-o bază de date relațională este un namespace logic care grupează obiecte precum tabele, vizualizări, funcții și secvențe. Funcționează ca un container organizațional în cadrul unei baze de date.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;În PostgreSQL, schema prestabilită este &lt;code&gt;public&lt;/code&gt;. Pentru a accesa un obiect dintr-o altă schemă este necesar prefixul: &lt;code&gt;schema1.tabela&lt;/code&gt;. Privilegiul &lt;code&gt;USAGE&lt;/code&gt; pe o schemă este prerequisit pentru accesarea oricărui obiect din ea — fără &lt;code&gt;USAGE&lt;/code&gt;, nici măcar un &lt;code&gt;GRANT SELECT&lt;/code&gt; pe tabele nu funcționează.&lt;/p&gt;</description></item><item><title>Scope</title><link>https://ivanluminaria.com/ro/glossary/scope/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/scope/</guid><description>&lt;p&gt;&lt;strong&gt;Scope&lt;/strong&gt;-ul (domeniul) unui proiect definește perimetrul a ceea ce proiectul trebuie să realizeze: funcționalități incluse, livrabile așteptate, constrângeri și limite convenite cu stakeholderii. Tot ce este în scope se face; tot ce este în afara, nu.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Scope-ul se definește în fazele inițiale ale proiectului prin documente precum Statement of Work sau Project Charter. Orice cerere de modificare ulterioară trebuie să treacă printr-un proces formal de gestionare a schimbărilor pentru a evalua impactul asupra termenelor, bugetului și resurselor.&lt;/p&gt;</description></item><item><title>Scope Creep</title><link>https://ivanluminaria.com/ro/glossary/scope-creep/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/scope-creep/</guid><description>&lt;p&gt;&lt;strong&gt;Scope Creep&lt;/strong&gt; este expansiunea progresivă și adesea necontrolată a scopului unui proiect față de ceea ce fusese definit inițial. Cerințe noi, modificări ale specificațiilor și funcționalități suplimentare se acumulează fără o ajustare corespunzătoare a bugetului și a termenelor.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Într-un proiect software, scope creep-ul începe de obicei cu cereri aparent mici: &amp;ldquo;hai să adăugăm și acest câmp&amp;rdquo;, &amp;ldquo;ar fi util și această funcție&amp;rdquo;. Fiecare modificare individuală pare rezonabilă, dar efectul cumulativ este devastator. Specificațiile devin o țintă mobilă, echipa nu reușește niciodată să atingă o baseline stabilă, iar proiectul intră într-un ciclu infinit de revizuiri.&lt;/p&gt;</description></item><item><title>Scrum</title><link>https://ivanluminaria.com/ro/glossary/scrum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/scrum/</guid><description>&lt;p&gt;&lt;strong&gt;Scrum&lt;/strong&gt; este un framework agil pentru gestionarea proiectelor care organizează munca în iterații cu durată fixă numite sprinturi (de obicei 2 săptămâni). Definește trei roluri (Product Owner, Scrum Master, Development Team) și patru ceremonii (Sprint Planning, Daily Standup, Sprint Review, Sprint Retrospective).&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Fiecare sprint începe cu o planificare, continuă cu standup-uri zilnice pentru sincronizare, și se termină cu o review (ce s-a făcut) și o retrospectivă (cum să îmbunătățim procesul). Timeboxing-ul este principiul fundamental: fiecare ceremonie are o durată maximă nenegociabilă.&lt;/p&gt;</description></item><item><title>secure-file-priv</title><link>https://ivanluminaria.com/ro/glossary/secure-file-priv/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/secure-file-priv/</guid><description>&lt;p&gt;&lt;strong&gt;secure-file-priv&lt;/strong&gt; este o variabilă de sistem MySQL care controlează unde instrucțiunile &lt;code&gt;LOAD DATA INFILE&lt;/code&gt;, &lt;code&gt;SELECT INTO OUTFILE&lt;/code&gt; și funcția &lt;code&gt;LOAD_FILE()&lt;/code&gt; pot opera pe filesystem-ul serverului.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Variabila acceptă trei valori: o cale specifică (ex. &lt;code&gt;/var/lib/mysql-files/&lt;/code&gt;), care limitează operațiunile pe fișiere la acel director; un șir gol (&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;), care nu impune nicio restricție; sau &lt;code&gt;NULL&lt;/code&gt;, care dezactivează complet operațiunile pe fișiere. Valoarea poate fi setată doar în fișierul de configurare (&lt;code&gt;my.cnf&lt;/code&gt;) și necesită restart al serviciului pentru a fi modificată — nu poate fi schimbată la runtime.&lt;/p&gt;</description></item><item><title>Self-parenting</title><link>https://ivanluminaria.com/ro/glossary/self-parenting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/self-parenting/</guid><description>&lt;p&gt;&lt;strong&gt;Self-parenting-ul&lt;/strong&gt; este o tehnică de dimensional modeling folosită pentru a echilibra ierarhiile dezechilibrate (ragged hierarchies). Principiul este simplu: o entitate care nu are un nivel ierarhic superior devine propriul părinte la acel nivel.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Într-o ierarhie cu trei niveluri Top Group → Group → Client:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un Client fără Group folosește propriul nume/ID ca Group&lt;/li&gt;
&lt;li&gt;Un Group fără Top Group folosește propriul nume/ID ca Top Group&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rezultatul este o tabelă dimensională fără NULL-uri în coloanele ierarhice, cu toate nivelurile întotdeauna populate.&lt;/p&gt;</description></item><item><title>Sequential Scan</title><link>https://ivanluminaria.com/ro/glossary/sequential-scan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/sequential-scan/</guid><description>&lt;p&gt;&lt;strong&gt;Sequential Scan&lt;/strong&gt; (Seq Scan) este operația prin care PostgreSQL citește o tabelă de la început până la sfârșit, bloc cu bloc, fără a folosi vreun index. Este echivalentul PostgreSQL al Full Table Scan din Oracle.&lt;/p&gt;
&lt;h2 id="când-este-normal" class="relative group"&gt;Când este normal &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#c%c3%a2nd-este-normal" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Pe tabele mici (câteva mii de rânduri), sequential scan-ul este adesea opțiunea cea mai eficientă. Citirea unei tabele întregi secvențial este mai rapidă decât lookup-urile pe un index când tabela încape în câteva pagini. Optimizer-ul alege sequential scan-ul când estimează că este mai ieftin decât un index scan.&lt;/p&gt;</description></item><item><title>SGA</title><link>https://ivanluminaria.com/ro/glossary/sga/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/sga/</guid><description>&lt;p&gt;&lt;strong&gt;SGA&lt;/strong&gt; (System Global Area) este zona de memorie partajată principală a Oracle Database. Conține structurile de date fundamentale: buffer cache (pagini de date citite de pe disc), shared pool (planuri de execuție și dicționar de date), redo log buffer și large pool.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Dimensiunea SGA este controlată de parametrul &lt;code&gt;SGA_TARGET&lt;/code&gt; sau &lt;code&gt;SGA_MAX_SIZE&lt;/code&gt;. Oracle alocă SGA la pornirea instanței în memoria partajată a sistemului de operare. Parametrii kernel Linux &lt;code&gt;shmmax&lt;/code&gt; și &lt;code&gt;shmall&lt;/code&gt; trebuie dimensionați pentru a permite alocarea completă a SGA.&lt;/p&gt;</description></item><item><title>shared_buffers</title><link>https://ivanluminaria.com/ro/glossary/shared-buffers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/shared-buffers/</guid><description>&lt;p&gt;&lt;strong&gt;shared_buffers&lt;/strong&gt; este parametrul care controlează dimensiunea zonei de memorie partajată pe care PostgreSQL o folosește ca cache pentru blocurile de date citite de pe disc. De fiecare dată când PostgreSQL citește o pagină de date (8 KB), o păstrează în shared_buffers pentru citirile ulterioare.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;PostgreSQL alocă memoria pentru shared_buffers la pornirea serviciului. Toate procesele backend partajează această zonă de memorie. Când un proces are nevoie de un bloc de date, caută mai întâi în shared_buffers. Dacă îl găsește (cache hit), citirea este imediată. Dacă nu (cache miss), trebuie să citească de pe disc — o operație cu ordine de mărime mai lentă.&lt;/p&gt;</description></item><item><title>Single-primary</title><link>https://ivanluminaria.com/ro/glossary/single-primary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/single-primary/</guid><description>&lt;p&gt;&lt;strong&gt;Single-primary&lt;/strong&gt; este modul de operare cel mai frecvent al MySQL Group Replication, în care un singur nod din cluster — primary-ul — acceptă operații de scriere. Celelalte noduri (secondary) sunt read-only (&lt;code&gt;read_only=ON&lt;/code&gt;, &lt;code&gt;super_read_only=ON&lt;/code&gt;) și primesc modificările prin replicarea sincronă a grupului.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Parametrul &lt;code&gt;group_replication_single_primary_mode=ON&lt;/code&gt; activează acest mod. Primary-ul este singurul nod cu &lt;code&gt;read_only=OFF&lt;/code&gt;. Dacă primary-ul este oprit sau devine inaccesibil, clusterul declanșează o alegere automată și unul dintre secondary devine noul primary în câteva secunde.&lt;/p&gt;</description></item><item><title>Smart Working</title><link>https://ivanluminaria.com/ro/glossary/smart-working/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/smart-working/</guid><description>&lt;p&gt;&lt;strong&gt;Smart Working&lt;/strong&gt;-ul (lucru agil) este un model organizațional care permite angajatului să lucreze de oriunde, combinând zile la birou și zile la distanță, cu program flexibil și evaluare bazată pe rezultate în loc de prezență.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Modelul tipic este 80/20: 80% la distanță, 20% la birou. Zilele la birou servesc pentru workshopuri, review-uri de proiect și team building — nu pentru a încălzi scaunul. Compania furnizează echipament pentru postul de lucru de acasă (monitor, scaun ergonomic, căști) și o contribuție pentru conectivitate.&lt;/p&gt;</description></item><item><title>Snapshot (Oracle)</title><link>https://ivanluminaria.com/ro/glossary/snapshot-oracle/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/snapshot-oracle/</guid><description>&lt;p&gt;&lt;strong&gt;Snapshot&lt;/strong&gt; in Oracle este o captura punctuala a statisticilor de performanta ale bazei de date stocata in repository-ul AWR. Implicit Oracle genereaza un snapshot la fiecare 60 de minute si le pastreaza timp de 8 zile.&lt;/p&gt;
&lt;h2 id="cum-functioneaza" class="relative group"&gt;Cum functioneaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-functioneaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Fiecare snapshot inregistreaza sute de metrici: wait events, statistici SQL, metrici de memorie (SGA, PGA), I/O per datafile, statistici de sistem. Compararea a doua snapshot-uri genereaza raportul AWR, care arata ce s-a schimbat intre cele doua momente.&lt;/p&gt;</description></item><item><title>Split-brain</title><link>https://ivanluminaria.com/ro/glossary/split-brain/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/split-brain/</guid><description>&lt;p&gt;&lt;strong&gt;Split-brain-ul&lt;/strong&gt; este o condiție critică care apare când un cluster de baze de date se împarte în două sau mai multe partiții care nu pot comunica între ele, iar fiecare partiție continuă să accepte scrieri independent. Rezultatul sunt date divergente imposibil de reconciliat automat.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Într-un cluster cu 3 noduri, dacă rețeaua dintre Nodul 1 și Nodurile 2-3 se întrerupe, fără protecția quorum-ului ambele părți ar putea continua să accepte scrieri. Când rețeaua se restabilește, clusterul s-ar găsi cu două versiuni diferite ale acelorași date. Mecanismul de quorum previne acest scenariu: doar partiția cu majoritatea nodurilor (quorum) poate continua să funcționeze.&lt;/p&gt;</description></item><item><title>SQL Injection</title><link>https://ivanluminaria.com/ro/glossary/sql-injection/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/sql-injection/</guid><description>&lt;p&gt;&lt;strong&gt;SQL Injection&lt;/strong&gt; este una dintre cele mai răspândite și periculoase vulnerabilități în aplicațiile web. Apare când input-urile furnizate de utilizator sunt inserate direct în interogările SQL fără validare sau parametrizare, permițând unui atacator să modifice logica interogării.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Atacatorul inserează fragmente de cod SQL în câmpurile de input ale aplicației (formulare de autentificare, câmpuri de căutare, parametri URL). Dacă aplicația concatenează aceste input-uri direct în interogările SQL, codul malițios este executat de baza de date cu privilegiile utilizatorului aplicativ. În combinație cu privilegiul &lt;code&gt;FILE&lt;/code&gt; al MySQL-ului și un &lt;code&gt;secure-file-priv&lt;/code&gt; neconfigurat, atacatorul poate citi fișiere de sistem sau scrie fișiere arbitrare pe server.&lt;/p&gt;</description></item><item><title>SST</title><link>https://ivanluminaria.com/ro/glossary/sst/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/sst/</guid><description>&lt;p&gt;&lt;strong&gt;SST&lt;/strong&gt; (State Snapshot Transfer) este mecanismul prin care un nod Galera care se alătură clusterului (sau care a fost offline prea mult timp) primește o copie completă a întregului set de date de la un nod donator.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Când un nod se alătură clusterului și gap-ul de tranzacții lipsă depășește dimensiunea gcache-ului, clusterul inițiază un SST. Nodul donator creează un snapshot complet al bazei de date și îl transferă nodului receptor. Metodele disponibile sunt: &lt;code&gt;mariabackup&lt;/code&gt; (nu blochează donatorul), &lt;code&gt;rsync&lt;/code&gt; (rapid dar blochează donatorul pe citire), și &lt;code&gt;mysqldump&lt;/code&gt; (lent și blocant).&lt;/p&gt;</description></item><item><title>Stakeholder</title><link>https://ivanluminaria.com/ro/glossary/stakeholder/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/stakeholder/</guid><description>&lt;p&gt;Un &lt;strong&gt;Stakeholder&lt;/strong&gt; este orice persoană, grup sau organizație cu un interes direct sau indirect în rezultatul unui proiect. Include clienți, sponsori, utilizatori finali, echipe de dezvoltare, management și furnizori externi.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;În project management, stakeholderii sunt identificați, clasificați după nivelul de influență și interes, și gestionați cu strategii de comunicare diferențiate. Un stakeholder cu influență și interes ridicate (precum CTO) necesită implicare activă; unul cu influență scăzută necesită doar actualizări periodice.&lt;/p&gt;</description></item><item><title>Star schema</title><link>https://ivanluminaria.com/ro/glossary/star-schema/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/star-schema/</guid><description>&lt;p&gt;&lt;strong&gt;Star schema&lt;/strong&gt; (schema stea) este cel mai utilizat model de date în data warehouse. Își primește numele de la forma sa: o tabelă centrală de fapte (fact table) conectată la mai multe tabele dimensionale care o înconjoară, ca razele unei stele.&lt;/p&gt;
&lt;h2 id="structură" class="relative group"&gt;Structură &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#structur%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fact table&lt;/strong&gt; în centru: conține măsurile numerice și cheile externe către dimensiuni&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dimension tables&lt;/strong&gt; în jurul ei: conțin atributele descriptive (cine, ce, unde, când) cu structură denormalizată&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dimensiunile într-un star schema sunt tipic denormalizate — toate atributele într-o singură tabelă plată, fără ierarhii normalizate. Acest lucru simplifică interogările și îmbunătățește performanța agregărilor.&lt;/p&gt;</description></item><item><title>Swappiness</title><link>https://ivanluminaria.com/ro/glossary/swappiness/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/swappiness/</guid><description>&lt;p&gt;&lt;strong&gt;Swappiness&lt;/strong&gt; (&lt;code&gt;vm.swappiness&lt;/code&gt;) este un parametru al kernelului Linux care controlează cât de agresiv mută sistemul pagini de memorie din RAM în swap pe disc. Valoarea variază de la 0 (swap doar în cazuri extreme) la 100 (swap agresiv). Valoarea implicită este 60.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cu valoarea implicită de 60, Linux începe să facă swap când presiunea pe memorie este încă relativ scăzută. Pentru un server de baze de date dedicat, acest lucru este inacceptabil: SGA trebuie să rămână în RAM, întotdeauna. Valoarea recomandată pentru Oracle este 1 — nu 0, care ar dezactiva complet swap-ul și ar putea declanșa OOM killer-ul.&lt;/p&gt;</description></item><item><title>Switchover</title><link>https://ivanluminaria.com/ro/glossary/switchover/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/switchover/</guid><description>&lt;p&gt;&lt;strong&gt;Switchover-ul&lt;/strong&gt; este o operatiune planificata in Oracle Data Guard care inverseaza rolurile intre baza de date primary si standby. Primary-ul devine standby, standby-ul devine primary. Nicio data nu se pierde, nicio tranzactie nu esueaza — este o tranzitie curata si controlata.&lt;/p&gt;
&lt;h2 id="switchover-vs-failover" class="relative group"&gt;Switchover vs Failover &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#switchover-vs-failover" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Distinctia este fundamentala:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;Switchover&lt;/th&gt;
 &lt;th&gt;Failover&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Cand&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Planificat (mentenanta, migrare)&lt;/td&gt;
 &lt;td&gt;Urgenta (defectiune a primary-ului)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Pierdere de date&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Zero&lt;/td&gt;
 &lt;td&gt;Posibila (depinde de mod)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Reversibilitate&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Da, cu un alt switchover&lt;/td&gt;
 &lt;td&gt;Nu, standby-ul devine primary permanent&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Timp&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Minute (de obicei 1-3)&lt;/td&gt;
 &lt;td&gt;Secunde pana la minute&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="cum-se-executa" class="relative group"&gt;Cum se executa &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-se-executa" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Cu Data Guard Broker, switchover-ul este o singura comanda:&lt;/p&gt;</description></item><item><title>System Privilege</title><link>https://ivanluminaria.com/ro/glossary/system-privilege/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/system-privilege/</guid><description>&lt;p&gt;Un &lt;strong&gt;System Privilege&lt;/strong&gt; în Oracle este o autorizare care permite executarea operațiunilor globale pe baza de date, independent de un obiect specific. Exemple tipice includ &lt;code&gt;CREATE TABLE&lt;/code&gt;, &lt;code&gt;CREATE SESSION&lt;/code&gt;, &lt;code&gt;ALTER SYSTEM&lt;/code&gt;, &lt;code&gt;CREATE USER&lt;/code&gt; și &lt;code&gt;DROP ANY TABLE&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Privilegiile de sistem se acordă cu &lt;code&gt;GRANT&lt;/code&gt; și se revocă cu &lt;code&gt;REVOKE&lt;/code&gt;. Pot fi atribuite direct unui utilizator sau unui rol. Rolul predefinit &lt;code&gt;DBA&lt;/code&gt; include peste 200 de privilegii de sistem, motiv pentru care atribuirea sa utilizatorilor aplicativi este o practică periculoasă.&lt;/p&gt;</description></item><item><title>systemd</title><link>https://ivanluminaria.com/ro/glossary/systemd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/systemd/</guid><description>&lt;p&gt;&lt;strong&gt;systemd&lt;/strong&gt; este sistemul de inițializare și managerul de servicii implicit pe distribuțiile Linux moderne (CentOS/RHEL 7+, Ubuntu 16.04+, Debian 8+). În contextul bazelor de date, este mecanismul care pornește, oprește și monitorizează instanțele MySQL sau MariaDB.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Fiecare serviciu este definit de un fișier unit (ex. &lt;code&gt;mysqld.service&lt;/code&gt;) care specifică comanda de pornire, fișierul de configurare, dependențele și comportamentul în caz de crash. Într-un setup multi-instanță, se creează fișiere unit separate pentru fiecare instanță (ex. &lt;code&gt;mysqld-app2.service&lt;/code&gt;, &lt;code&gt;mysqld-reporting.service&lt;/code&gt;), fiecare cu propriul &lt;code&gt;--defaults-file&lt;/code&gt; care indică spre un &lt;code&gt;my.cnf&lt;/code&gt; diferit.&lt;/p&gt;</description></item><item><title>Tablespace</title><link>https://ivanluminaria.com/ro/glossary/tablespace/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/tablespace/</guid><description>&lt;p&gt;Un &lt;strong&gt;Tablespace&lt;/strong&gt; este unitatea logică de organizare a stocării în Oracle Database. Fiecare tablespace este compus din unul sau mai multe fișiere de date (datafile) fizice pe disc, iar fiecare obiect al bazei de date (tabelă, index, partiție) rezidă într-un tablespace.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Oracle separă gestionarea logică (tablespace) de cea fizică (datafile). Un DBA poate crea tablespace-uri dedicate pentru scopuri diferite: unul pentru datele active, unul pentru indexuri, unul pentru arhivă. Aceasta permite distribuirea sarcinii de I/O pe discuri diferite și aplicarea de politici de gestionare diferențiate (ex. read-only pentru datele istorice).&lt;/p&gt;</description></item><item><title>THP</title><link>https://ivanluminaria.com/ro/glossary/thp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/thp/</guid><description>&lt;p&gt;&lt;strong&gt;THP&lt;/strong&gt; (Transparent Huge Pages) este o funcție a kernelului Linux care promovează automat paginile de memorie de la 4 KB la 2 MB în fundal, fără configurare explicită. Spre deosebire de Huge Pages statice, sunt gestionate de procesul kernel &lt;code&gt;khugepaged&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Când sunt active (implicit &lt;code&gt;always&lt;/code&gt;), kernelul încearcă să compacteze paginile normale în pagini mari în fundal. Procesul &lt;code&gt;khugepaged&lt;/code&gt; lucrează continuu pentru a găsi și uni grupuri de pagini contigue, cauzând micro-înghețări imprevizibile în timpul operațiunilor de compactare.&lt;/p&gt;</description></item><item><title>Timeboxing</title><link>https://ivanluminaria.com/ro/glossary/timeboxing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/timeboxing/</guid><description>&lt;p&gt;&lt;strong&gt;Timeboxing&lt;/strong&gt; este o tehnică de gestionare a timpului care constă în atribuirea unui interval temporal fix și nenegociabil unei activități. Când timpul expiră, activitatea se încheie — indiferent dacă a fost finalizată sau nu.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Se definește durata maximă (15 minute pentru un standup, 1 oră pentru o ședință de design, 2 săptămâni pentru un sprint) și constrângerea se respectă. Timeboxul forțează persoanele să se concentreze pe esențial, evitând discuțiile interminabile și perfecționismul paralizant.&lt;/p&gt;</description></item><item><title>Transport Lag</title><link>https://ivanluminaria.com/ro/glossary/transport-lag/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/transport-lag/</guid><description>&lt;p&gt;&lt;strong&gt;Transport lag&lt;/strong&gt; este intarzierea intre momentul in care baza de date primary genereaza un redo log si momentul in care acel redo log este primit de baza de date standby intr-o configuratie Oracle Data Guard. Este unul dintre cei mai importanti indicatori pentru evaluarea sanatatii replicarii.&lt;/p&gt;
&lt;h2 id="cum-se-masoara" class="relative group"&gt;Cum se masoara &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-se-masoara" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Transport lag-ul se monitorizeaza printr-un query pe view-ul &lt;code&gt;V$DATAGUARD_STATS&lt;/code&gt; sau prin Data Guard Broker:&lt;/p&gt;</description></item><item><title>Unified Audit</title><link>https://ivanluminaria.com/ro/glossary/unified-audit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/unified-audit/</guid><description>&lt;p&gt;&lt;strong&gt;Unified Audit&lt;/strong&gt; (Oracle Unified Auditing) este sistemul de audit centralizat introdus în Oracle Database 12c care înlocuiește mecanismele de audit tradiționale cu o singură infrastructură unificată. Toate evenimentele de audit converg în vizualizarea &lt;code&gt;UNIFIED_AUDIT_TRAIL&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Unified Audit se bazează pe &lt;strong&gt;audit policies&lt;/strong&gt;: reguli declarative care specifică ce acțiuni să fie monitorizate (DDL, DML, autentificări, operațiuni administrative). Politicile se creează cu &lt;code&gt;CREATE AUDIT POLICY&lt;/code&gt;, se activează cu &lt;code&gt;ALTER AUDIT POLICY ... ENABLE&lt;/code&gt; și pot fi aplicate utilizatorilor specifici sau global. Înregistrările de audit sunt scrise într-o coadă internă și apoi persistate în tabela de sistem.&lt;/p&gt;</description></item><item><title>Unix Socket</title><link>https://ivanluminaria.com/ro/glossary/unix-socket/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/unix-socket/</guid><description>&lt;p&gt;Un &lt;strong&gt;Unix Socket&lt;/strong&gt; (sau socket de domeniu Unix) este un endpoint de comunicare care permite la două procese de pe același sistem de operare să facă schimb de date fără a trece prin stiva de rețea TCP/IP. În MySQL, este metoda de conectare implicită când te conectezi la &lt;code&gt;localhost&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Când un client MySQL se conectează specificând &lt;code&gt;-h localhost&lt;/code&gt;, clientul nu folosește TCP. Folosește fișierul socket Unix (de obicei &lt;code&gt;/var/run/mysqld/mysqld.sock&lt;/code&gt;) pentru a comunica direct cu procesul serverului MySQL. Această comunicare se desfășoară integral în kernel, fără overhead de rețea, și e mai rapidă decât o conexiune TCP chiar și pe același host.&lt;/p&gt;</description></item><item><title>VACUUM</title><link>https://ivanluminaria.com/ro/glossary/vacuum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/vacuum/</guid><description>&lt;p&gt;&lt;strong&gt;VACUUM&lt;/strong&gt; este comanda PostgreSQL care recuperează spațiul ocupat de dead tuples (rânduri moarte) și îl face disponibil pentru inserări noi. Nu returnează spațiu sistemului de operare, nu reorganizează tabela și nu compactează nimic — marchează paginile ca rescriptibile.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;VACUUM tabela&lt;/code&gt; scanează tabela, identifică dead tuple-urile care nu mai sunt vizibile niciunei tranzacții și marchează spațiul lor ca reutilizabil. Este o operațiune ușoară care nu blochează scrierile și poate rula în paralel cu interogările normale. &lt;code&gt;VACUUM FULL&lt;/code&gt; în schimb rescrie fizic întreaga tabelă cu lock exclusiv — de folosit foarte rar și doar în urgențe.&lt;/p&gt;</description></item><item><title>Vendor Lock-in</title><link>https://ivanluminaria.com/ro/glossary/vendor-lock-in/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/vendor-lock-in/</guid><description>&lt;p&gt;&lt;strong&gt;Vendor Lock-in&lt;/strong&gt; este situația în care o companie devine dependentă de un furnizor extern până la punctul în care schimbarea devine extrem de costisitoare sau complex din punct de vedere tehnic. În contextul IT, apare când codul, arhitectura sau cunoașterea sistemului sunt în mâinile furnizorului, nu ale clientului.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Lock-in-ul se instaurează gradual: furnizorul scrie codul cu convențiile proprii, folosește tehnologii proprietare sau nedocumentate, iar echipa internă nu este implicată în dezvoltare. Când furnizorul pleacă — din proprie voință sau prin concediere — ia cu el know-how-ul. Clientul rămâne cu un software pe care nu-l înțelege, nu știe să-l întrețină și nu-l poate evolua fără a reangaja același furnizor sau a o lua de la zero.&lt;/p&gt;</description></item><item><title>Version Control</title><link>https://ivanluminaria.com/ro/glossary/version-control/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/version-control/</guid><description>&lt;p&gt;&lt;strong&gt;Version Control&lt;/strong&gt; (controlul versiunilor) este un sistem care înregistrează fiecare modificare a fișierelor unui proiect, menținând un istoric complet al cine a schimbat ce, când și de ce. Git este cel mai utilizat sistem de version control din lume.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Fiecare modificare se înregistrează ca &amp;ldquo;commit&amp;rdquo; cu un mesaj descriptiv, un autor și un timestamp. Sistemul menține întreaga istorie a proiectului: poți reveni la orice versiune anterioară, compara versiuni diferite și înțelege evoluția codului în timp. Cu Git, fiecare dezvoltator are o copie completă a istoriei pe propriul computer.&lt;/p&gt;</description></item><item><title>Wait Event</title><link>https://ivanluminaria.com/ro/glossary/wait-event/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/wait-event/</guid><description>&lt;p&gt;&lt;strong&gt;Wait Event&lt;/strong&gt; este un indicator de diagnostic al Oracle Database care identifica motivul pentru care o sesiune asteapta in loc sa lucreze activ. De fiecare data cand un proces nu poate continua — pentru ca asteapta un bloc de pe disc, un lock, un raspuns din retea sau un tur de CPU — Oracle inregistreaza un wait event specific.&lt;/p&gt;
&lt;h2 id="cele-mai-comune" class="relative group"&gt;Cele mai comune &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cele-mai-comune" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Wait Event&lt;/th&gt;
 &lt;th&gt;Semnificatie&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db file sequential read&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Citire un singur bloc — tipica accesului prin index&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db file scattered read&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Citire multi-bloc — tipica full table scan-urilor&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;log file sync&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Asteptarea commit-ului in redo log&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;enq: TX - row lock contention&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Conflict de lock pe rand&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;direct path read&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Citire directa (ocolind buffer cache-ul)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="la-ce-servesc" class="relative group"&gt;La ce servesc &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#la-ce-servesc" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Wait event-urile sunt baza metodologiei de diagnostic Oracle. Analizand ce evenimente domina DB time-ul (prin AWR sau ASH) se identifica imediat natura problemei: I/O, contention, CPU sau retea.&lt;/p&gt;</description></item><item><title>WSREP</title><link>https://ivanluminaria.com/ro/glossary/wsrep/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/wsrep/</guid><description>&lt;p&gt;&lt;strong&gt;WSREP&lt;/strong&gt; (Write Set Replication) este API-ul și protocolul pe care Galera Cluster îl folosește pentru replicarea sincronă multi-master. Fiecare tranzacție este capturată ca &amp;ldquo;write set&amp;rdquo; (set de modificări la nivel de rând) și replicată pe toate nodurile clusterului înainte de commit.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Când un nod execută o tranzacție, WSREP o interceptează la momentul commit-ului, o împachetează ca write set și o trimite tuturor nodurilor clusterului prin protocolul de comunicare de grup. Fiecare nod execută un proces de &lt;strong&gt;certification&lt;/strong&gt;: verifică dacă tranzacția nu intră în conflict cu alte tranzacții concurente. Dacă certification-ul are succes, toate nodurile aplică tranzacția. Dacă eșuează, tranzacția este anulată pe nodul care a inițiat-o.&lt;/p&gt;</description></item><item><title>Yes-And</title><link>https://ivanluminaria.com/ro/glossary/yes-and/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/yes-and/</guid><description>&lt;p&gt;&lt;strong&gt;Yes-And&lt;/strong&gt; (Da-Și) este o tehnică de comunicare originară din teatrul de improvizație, aplicată în project management pentru a transforma discuțiile conflictuale în conversații constructive. Principiul este simplu: în loc să negi propunerea interlocutorului cu &amp;ldquo;Nu, dar&amp;hellip;&amp;rdquo;, o accepți cu &amp;ldquo;Da, și&amp;hellip;&amp;rdquo; adăugând propria contribuție.&lt;/p&gt;
&lt;h2 id="cum-funcționează" class="relative group"&gt;Cum funcționează &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-func%c8%9bioneaz%c4%83" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Când cineva propune o idee, răspunsul &amp;ldquo;Nu&amp;rdquo; declanșează o reacție defensivă și blochează conversația. Răspunsul &amp;ldquo;Da, și&amp;hellip;&amp;rdquo; recunoaște validitatea propunerii și o extinde, menținând dialogul deschis. Nu înseamnă să fii de acord cu totul — înseamnă să construiești pe propunerea celuilalt înainte de a o redirecționa.&lt;/p&gt;</description></item><item><title>ZDM</title><link>https://ivanluminaria.com/ro/glossary/zdm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ivanluminaria.com/ro/glossary/zdm/</guid><description>&lt;p&gt;&lt;strong&gt;ZDM&lt;/strong&gt; (Zero Downtime Migration) este instrumentul pe care Oracle il pune la dispozitie pentru automatizarea migrarilor bazelor de date Oracle catre OCI (Oracle Cloud Infrastructure) sau catre baze de date on-premises de versiune superioara. Numele este putin optimist — downtime-ul nu este zero, dar este redus la minim.&lt;/p&gt;
&lt;h2 id="cum-functioneaza" class="relative group"&gt;Cum functioneaza &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#cum-functioneaza" aria-label="Link"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;ZDM este in esenta un orchestrator care combina tehnologii Oracle existente intr-un flux automatizat unic. Suporta doua moduri:&lt;/p&gt;</description></item></channel></rss>