Nu m-am așteptat la asta, dar una dintre părțile cele mai interesante ale Sign nu ține de ceea ce spune datele, ci de modul în care datele pot fi grupate și interpretate la scară fără a rescrie logica de fiecare dată.
Pentru că majoritatea sistemelor se împotmolesc atunci când treci de la înregistrări unice la colecții de acestea. O dovadă este ușor de verificat. Dar în momentul în care începi să te ocupi cu sute sau mii, lucrurile devin haotice. Ai nevoie de filtre, reguli de agregare, praguri și logică personalizată doar pentru a răspunde la întrebări simple precum „câți utilizatori se califică?” sau „grupul acesta îndeplinește cerințele?”
Acolo se acumulează fricțiunea.
Sign introduce o modalitate de a trata grupuri de dovezi aproape ca pe seturi interogabile, mai degrabă decât intrări izolate. În loc să gestionezi fiecare înregistrare individual, poți evalua tipare pe baza multora dintre ele fără a reconstrui logica de la zero de fiecare dată.
Asta este o schimbare în modul în care sunt folosite datele.
În loc să întrebi "este această înregistrare validă?", începi să întrebi "ce îmi spune întregul set de înregistrări?" Și, mai important, poți defini acele condiții o dată și să le reutilizezi oriunde este necesar.
De exemplu, în loc să verifici eligibilitatea unui utilizator de fiecare dată, un sistem poate evalua un grup întreg pe baza unor criterii comune. Poate determina dacă suficiente condiții sunt îndeplinite în cadrul unui set de date, nu doar în cadrul unei singure dovezi.
Asta este mai aproape de cum funcționează sistemele reale.
Pentru că deciziile rareori sunt luate pe baza unor puncte de date izolate. Ele sunt luate pe baza tendințelor, numărului, combinațiilor și pragurilor. Și majoritatea sistemelor ajung să reconstruiască acea logică separat pentru fiecare aplicație.
Aici, acea logică devine reutilizabilă.
Un alt detaliu care mi-a sărit în ochi este cum asta reduce duplicarea la scară.
În configurațiile tipice, de fiecare dată când vrei să analizezi un grup de înregistrări, scrii interogări noi, filtre noi sau pași de procesare noi. Și acelea adesea diferă ușor între sisteme, chiar și atunci când încearcă să răspundă la aceeași întrebare.
Asta duce la inconsistențe.
Cu această abordare, logica pentru gruparea și evaluarea datelor poate fi standardizată. Definiți cum ar trebui să fie interpretat un set o dată și apoi aplicați acea interpretare oriunde sunt utilizate datele.
Asta reduce divergența.
De asemenea, face rezultatele mai previzibile.
Pentru că, în loc ca fiecare aplicație să calculeze lucrurile în felul ei, ele se pot baza pe aceleași definiții de bază. Același set de date produce aceeași rezultat, indiferent de unde este evaluat.
Asta este mai greu de realizat decât pare.
De asemenea, am început să mă gândesc la cum asta afectează performanța și complexitatea.
Atunci când logica este duplicată între sisteme, se creează un overhead. Fiecare aplicație trebuie să proceseze datele independent, să mențină propriile reguli și să gestioneze cazurile particulare pe cont propriu. Asta se adună rapid.
Prin mutarea unei părți din acea logică mai aproape de datele în sine, reduci cât de multă muncă trebuie să facă fiecare sistem.
Nu trebuie să reprocesați totul de la zero. Se pot baza pe interpretări comune.
Și asta simplifică arhitectura.
În loc să construiești straturi grele de procesare în fiecare aplicație, te îndrepți spre sisteme mai ușoare care consumă date deja structurate în moduri semnificative.
Ceea ce găsesc interesant este cum asta schimbă complet rolul datelor.
Nu mai este doar ceva ce stochezi și recuperezi.
Devine ceva asupra căruia poți raționa colectiv, fără să redefinești constant cum funcționează acel raționament.
Și asta deschide mai multe cazuri de utilizare avansate.
Pentru că, odată ce poți evalua cu fiabilitate grupuri de date, poți începe să construiești sisteme care răspund la tipare în loc de evenimente individuale. Poți defini praguri, urmări progresul pe mai multe înregistrări sau declanșa acțiuni când anumite condiții sunt îndeplinite într-un set de date.
Asta este un alt nivel de abstracție.
Și este ceva cu care majoritatea sistemelor se luptă să suporte curat.
Când mă uit înapoi, asta pare a fi o altă îmbunătățire subtilă.
Nu este ceva ce observi la început.
Dar ceva ce devine din ce în ce mai important pe măsură ce sistemele cresc.
Pentru că gestionarea unei singure piese de date este ușoară.
Gestionarea a mii de înregistrări în mod constant, eficient și fără a rescrie logica de fiecare dată, acolo este locul unde majoritatea sistemelor încep să cedeze.
Și aici este unde Sign pare să adopte o abordare diferită.