De: Tim Smith | Actualizat: 2017-11-07 | Comentarii | Inrudit: Mai mult> Dezvoltare de aplicatii
Problema

Depunem o configuratie de aplicatie care implica mai multe baze de date si acest proces a necesitat mai mult timp decat ne asteptam initial. Unele dintre problemele cu care ne-am confruntat erau lipsele de dependenta in baza de date si aplicatie, cum ar trebui sa arate proiectul final si lipsuri in intelegerea modului in care aplicatiile au interactionat cu baza de date. Care sunt unele bune practici pentru a evita acest lucru in viitor?

Solutie

In acest sfat, vom incepe examinand sfarsitul construirii unei aplicatii care foloseste o baza de date SQL Server din vederea back-end-ului. In acest sfat excludem obiectele intermediare si front-end-ul. Depanarea poate consuma peste jumatate din timpul de dezvoltare si daca nu ne pregatim cu o foaie de parcurs de validare, poate dura mai mult timp. Un singur buton pe care il vad impotriva scrierii interogarilor de validare sau a scripturilor este „dureaza ceva timp”. Acest lucru este adevarat, dar cand compar medii care folosesc scripturi de validare cu medii care nu, mediile anterioare economisesc 80-90% mai mult timp cu o reducere semnificativa in depanarea. Crearea de scripturi de validare se pregateste pentru solutionarea inevitabila a problemelor care apare la crearea aplicatiilor.

Salvati interogari pentru obiectele SQL Server

Ce obiecte SQL Server necesita aplicatie? De la tabele la proceduri pana la joburi SQL, putem executa interogari care returneaza lista obiectelor pe care le gasim sau putem pastra o lista de obiecte pe care le folosim pentru a valida aceste existente (vazuta in interogarea de mai jos). Fie ca dorim sa rulam o interogare care returneaza toate obiectele pe care le gasim (verificam ce lipseste) sau daca pastram un script care identifica ceea ce lipseste, ambele necesita efort. Cand un test de unitate sau un alt proces de validare a afacerii este executat si esueaza, aceste scripturi ar trebui sa ne spuna intr-o perioada scurta daca lipseste un obiect. Folosind un exemplu de aplicatie care necesita 5 tabele, 3 proceduri si 2 joburi SQL, vom folosi o interogare care returneaza ceea ce nu exista :

DECLARE @Objects TABLE (ObligatoriuObject VARCHAR (1000)) INSERT IN VALORI @Objects (‘Table tbOne’), (‘Table tbTwo’), (‘Table tbThree’), (‘Table tbFour’), ​​(‘Table tbFive’) , (‘Procedura stpOne’), (‘Procedura stpTwo’), (‘Procedura stpThree’), (‘Job jbOne’), (‘Job jbTwo’) —- Adaugati noi obiecte aici folosind sintaxa (”) SELECTA NecesarObiect FROM @Objects WHERE ObligatorObject NU IN (SELECTA „Tabel” + nume AS FoundObject FROM sys.tables UNION ALL SELECT ‘Procedura’ + nume AS FoundObject FROM sys.procedures UNION ALL SELECT ‘Job’ + nume AS FoundObject FROM msdb.dbo .sysjobs)

Daca aplicatia noastra necesita obiecte, cum ar fi declansatoare, vizualizari, etc, le-am include in pasul nostru de validare. Ca alternativa, am putea interoga pur si simplu ce este prezent – aceasta interogare returneaza tabelele, procedurile si numele posturilor, dar nu ne spune daca acestea sunt necesare si atunci va trebui sa ne comparam pentru a descoperi ce este necesar:

SELECTA ‘Tabel’ + nume AS FoundObject FROM sys.tables UNION ALL SELECT ‘Procedura’ + nume AS FoundObject FROM sys.procedures UNION ALL SELECT ‘Job’ + nume AS FoundObject FROM msdb.dbo.sysjobs

Primul exemplu ar putea dura mai mult timp pentru a crea si a actualiza pe masura ce apar modificari, dar la timpul depanarii, identificam rapid un obiect sau o cerinta lipsa. Ambele vor functiona la rezolvarea problemelor, dar cat de mult mergeti pentru validare poate economisi timp semnificativ. In functie de arhitectura aplicatiei dvs., este posibil sa puteti extrage obiectele utilizate pe back-end din metadate si, daca este posibil, utilizati acest lucru pentru interogarea bazei de date. De asemenea, daca utilizati controlul sursa pentru toate obiectele bazei de date (inclusiv SQL Jobs, pachete SSIS, etc.) si configurati controlul sursa pentru o baza de date pe aplicatie, puteti utiliza obiectele pe care le gasiti din controlul sursa si puteti compara cu ceea ce este prezent. Cu toate acestea, daca mai multe aplicatii folosesc o singura baza de date, este posibil sa nu utilizeze controlul sursa ca „harta”,

Recomand aceasta abordare pe aplicatie . Deoarece bazele de date pot fi utilizate de mai multe aplicatii, fiecare ar avea o harta a obiectelor utilizate. De exemplu, daca am avea baze de date cu informatii despre pretul gazelor naturale (1), informatii meteo (2) si detalii de tranzactionare pentru piata gazelor naturale (3), am dori fiecare aplicatie care foloseste bazele de date respective sau o combinatie a acestora , sa aiba propria lor harta. Cum ar putea arata acest lucru in acest exemplu:

  • Daca aplicatia de facturare a clientului ar folosi numai baza de date cu informatii privind preturile la gaze naturale, aceasta ar avea o harta pentru acea baza de date.
  • Daca aplicatia de acoperire comerciala ar folosi baza de date cu informatii privind preturile de gaze naturale, baza de date cu detalii meteorologice si baza de date cu detalii comerciale, aceasta ar avea o harta pentru fiecare din aceste baze de date.
  • Daca aplicatia de vanzare ar folosi baza de date cu informatii privind preturile la gaze naturale si baza de date cu detalii meteorologice, aceasta ar avea o harta pentru fiecare din aceste baze de date.

In acest exemplu, avem 3 aplicatii si un total de 6 harti sau schite pentru validarea obiectelor bazei de date utilizate.

Salvati interogari pentru informatii bazate pe baze de date personalizate

Sa presupunem ca avem o aplicatie care necesita valori dintr-un tabel de configurare sau un tabel de aplicatii personalizate, cum ar fi o lista de utilizatori in afara utilizatorilor standard Windows sau SQL. Deoarece unele dintre informatiile personalizate se afla intr-un tabel, dorim sa facem interogarea validarii noastre cu un pas mai departe prin interogarea acestor tabele pentru a ne asigura ca vedem valorile pe care le asteptam. Cate tabele ar putea fi implicate? Atatea tabele solicitate de aplicatie. In exemplul de mai jos, ne uitam la o tabela de blog_user si ne unim cu o tabela blog_grupuri, care ne spune utilizatorii si rolurile. In interogarea selectata de mai jos, validam un utilizator AuthorTwo si CuratorOne si vedem ca unul lipseste (CuratorOne) si unul este in grupul gresit (AuthorTwo).

CREATE TABLE blog_groups (GroupId SMALLINT IDENTITY (1,1) PRIMARY KEY, GroupName VARCHAR (25), AuthorizationId SMALLINT) CREATE TABLE blog_users (UserId INT IDENTITY (1,1) PRIMARY KEY, UserName VARCHAR (150), BlogGroupEIGN SMALLINT blog_groups (GroupId)) INSERT INTO blog_groups (GroupName, AuthorizationId) VALORES (‘Publicare’, 1), (‘Comentariu’, 2) INSERT INTO blog_users (UserName, BlogGroupId) VALUES (‘AuthorOne’, 1), (‘AuthorTwo’) , 2) —- Vrem sa verificam AuthorTwo are Grupul de publicare si CuratorOne exista: SELECTA t.UserName, tt.GroupName DE la blog_users T INNER JOIN blog_groups tt ON t.BlogGroupId = tt.GroupId WHERE t.UserName IN (‘AuthorTwo ‘,’ CuratorOne ‘) DROP TABLE blog_users DROP TABLE blog_groups

In acest exemplu personalizat, putem cauta in mod explicit ceea ce ne asteptam, sau putem rula o interogare si obtine toate rezultatele inapoi si putem compara cu ceea ce asteptam. Deoarece folosim aceasta configurare personalizata, am avea un script pentru validarea acestei configuratii. Ar trebui sa cream interogari de validare la orice informatii personalizate de configurare a bazei de date pe care le folosim. Ca si validarea obiectelor SQL Server, aceasta ne ajuta, de asemenea, sa incepem cu finalul: cum arata produsul final cand solicitam informatii pe care le folosim in aplicatia noastra?

Cand ar trebui sa folosim interogari personalizate?

  • Orice date personalizate sunt necesare pentru ca o aplicatie sau un proces (adica: ETL) sa functioneze. Un exemplu este un tabel de utilizator si rol personalizat in care un rol lipsa sau un utilizator care lipseste va avea ca rezultat o eroare a aplicatiei.
  • De fiecare data cand o aplicatie sau proces (adica: ETL) utilizeaza un tabel pentru o caracteristica din aplicatie. De exemplu, cand o aplicatie incarca o lista de meniu dintr-o baza de date.
  • De fiecare data cand o aplicatie sau proces (adica: ETL) utilizeaza un tabel pentru informatii de configurare; in unele cazuri, cererea nu va incepe nici macar pentru validare.

Chiar si atunci cand luam in considerare dezavantajul actualizarii interogarilor, deoarece apar modificari – ceea ce foloseste timpul, vom economisi o cantitate semnificativa de timp la remedierea defectiunilor. Prin scrierea de interogari pentru arhitectura personalizata, ne gandim la modul in care aplicatia sau procesul nostru foloseste baza de date sau bazele de date si s-ar putea sa ne gandim din nou la proiectarea noastra, sau sa ne dam seama de defecte in proiectarea noastra. In plus, daca apare o eroare, va trebui sa le scriem la momentul depanarii. In cele din urma, celalalt avantaj este acela ca facilitam reducerea posibilitatilor: daca oamenii migreaza in cadrul companiei noastre sau catre alte companii, aceste intrebari reduc timpul de invatare al noilor dezvoltatori.

In ambele etape, utilizam interogari pentru a prezenta modul in care aplicatia noastra functioneaza in back-end. Am vazut numeroase situatii in care depanarea a durat ore sau zile, pur si simplu pentru ca echipa nu a luat cinci minute pentru a scrie o intrebare care ar fi impiedicat problema – o inregistrare sau un obiect lipsa. Depanarea consuma mai mult timp decat dezvoltare si aceste contururi cresc timpul pentru dezvoltare prin reducerea timpului depanare.

Documentati o privire de ansamblu a bazei de date si a aplicatiei

Indiferent daca este scris sau video, acesta din urma oferind posibilitatea de a afisa exemple vizuale, documenteaza o imagine de ansamblu a aplicatiei.

ana mocanu porno http://www.idfwo.org/redir.asp?url=https://adult69.ro/
amator porno http://www.e-skafos.gr/go.php?l=https://adult69.ro/
filme porno hd online http://union.diexun.com/market/?action=click&area=A-h-02-b&id=561&url=https://adult69.ro/
filme porno cu femei mature si tineri http://1800getsolar.com/__media__/js/netsoltrademark.php?d=adult69.ro/filme-porno/amatori
videos porno hentai http://www.hendersontx.com/t.aspx?c=460&u=https://adult69.ro/filme-porno/anal
muzica porno http://variglog.com/__media__/js/netsoltrademark.php?d=adult69.ro/filme-porno/asiatice
porno cu femei flocoase http://sat-plus.net/ext_link?url=https://adult69.ro/filme-porno/beeg
porno hd romanesti https://bticino.ru/bitrix/redirect.php?event1=photo_out&event2=http2F%2Fwww.elmaks.ru&event3=3B%D0%ADBB%D0D0%B0BA%D126quot%3B&goto=https://adult69.ro/filme-porno/blonde
porno orgasme http://creamlemon.show-channel.net/link.php?url=https://adult69.ro/filme-porno/brazzers
filme porno ejaculare http://master-plate.com/__media__/js/netsoltrademark.php?d=adult69.ro/filme-porno/brunete
porno eleve http://www.teemaster.com/redirect.asp?url=https://adult69.ro/filme-porno/chaturbate
free porno incest http://www.welcomecenters.com/redirect.asp?location=Charlotte&page=https://adult69.ro/pula-neagra-in-guri-largi-de-secretare
porno cu cur mare http://www.aniltj.com/blog/ct.ashx?url=https://adult69.ro/gaura-curului-se-largeste-vazand-cu-ochii
porno masaj http://webradio.fm/webtop.cfm?site=https://adult69.ro/suge-pula-direct-din-cutie
filme porno 3d http://www.dol2day.com/referrer.php?link=https://adult69.ro/tatal-le-pocneste-cu-pula-peste-gura-pe-fiicele-sale
www.filme porno http://www.searchingredirect.com/__media__/js/netsoltrademark.php?d=adult69.ro/doica-baietelului-inghite-sperma-la-greu
sure porno http://www.ma.by/away.php?url=https://adult69.ro/imparte-pizda-sotiei-cu-prietenul-lui-cel-mai-bun
porno massage http://www.web-magic.ca/redir.php?U=https://adult69.ro/sex-anal-la-un-salon-de-masaj
porno cu parinti http://click2insure.com/__media__/js/netsoltrademark.php?d=adult69.ro/scolaria-timida-calareste-pula-in-magazin
piticul porno http://kiamagic.com/net/profile/kiabot?zrl=https://adult69.ro/matroana-asiatica-isi-domina-fiul-cu-pizda

Documentatia poate oferi o imagine de ansamblu asupra a ceea ce face aplicatia, ce arhitectura este necesara si cum interactioneaza fiecare componenta a aplicatiei. De exemplu, daca datele utilizatorului provin de la ServerOrigin la ServerDestination printr-un pachet SSIS care utilizeaza configuratii dintr-un tabel, documentati aceste informatii. Acest lucru ii ajuta pe oameni sa stabileasca rapid ce poate sa fi esuat din cauza a ceea ce lipseste, cum ar fi datele utilizatorilor care lipsesc pe ServerDestination indica o posibila problema cu pachetul SSIS sau obiectele de care are nevoie.

In trecut, am inteles pushback asupra documentatiei, deoarece documentatia scrisa poate avea o munca semnificativa. Cu toate acestea, documentatia video este rapida si vizuala si nu mai necesita o cantitate mare de spatiu. MP4-urile sunt foarte usoare si detaliate. Majoritatea prezentarilor generale ale aplicatiilor pot fi inregistrate in decurs de 10-15 minute, rezultand in sute de ore salvate depanare. Cateva dintre avantajele:

  • Documentarea arhitecturii complexe se poate face in minute, nu in ore.
  • Noii dezvoltatori vad ce piese sunt implicate in aplicatii, ETL, arhitectura bazelor de date; un videoclip poate indica de fapt pachetele SSIS, clasele de aplicatii etc.
  • Pe masura ce mai multi Millennials (nascuti in 1980 – 1995) si iGenz (nascuti in 1996 – 2011) intra in forta de munca, ei se asteapta la acest lucru – ei tind sa foloseasca YouTube ca motor de cautare peste Google, astfel incat documentatia video le este mai familiara.
  • Documentatia video reduce intalnirile si rezolva multe probleme de comunicare, deoarece oamenii vad imaginea de ansamblu.

Cu documentatia video, as atrage atentia asupra a trei puncte: perfectionism, scop si indexare. Din moment ce software-ul se schimba, videoclipurile trebuie sa fie rapide si la obiect si sa le faca sa para si sa se simta perfect pierde timpul, deoarece aplicatia se va schimba in timp. Daca inregistram un videoclip de 10 minute de ansamblu si doi ani mai tarziu, trebuie sa inregistram inca un videoclip de 10 minute, tot am petrecut doar 20 de minute in 2 ani – o parte din documentatia scrisa ar fi costat. Cu toate acestea, daca petrecem timp incercand sa facem un videoclip perfect, vom incheia lucrari care nu genereaza rezultate. Pastrati-l simplu si la obiect. In plus, un videoclip de ansamblu ar trebui sa fie demarcat de la un videoclip de depanare – videoclipurile de depanare ar trebui sa fie pe un subiect specific, cum ar fi „Cand primesc aceasta eroare, ce fac?” Cand dezvoltatorii rezolva probleme, nu doresc fiecare detaliu, ci cum sa rezolve problema. Cand dezvoltatorii vor sa vada cum se construieste arhitectura, ei doresc prezentarea de ansamblu. Acestea ar trebui sa fie videoclipuri separate.

In cele din urma, indexarea videoclipurilor poate fi o provocare, dar aceasta este o provocare cu orice documentatie – „unde le putem gasi?” Sugerez pastrarea videoclipurilor pe teme specifice, ceea ce faciliteaza indexarea.

Pasii urmatori
  • Deoarece aplicatiile si arhitectura bazelor de date pot necesita dependente, as sugera pastrarea unei liste de cerinte care pot fi utilizate pentru o lista de verificare in ordinea a ceea ce trebuie creat mai intai (sau organizat de ceea ce poate fi creat independent).
  • In solutionarea problemelor si a arhitecturii bazei de date, aproximativ jumatate din probleme sunt cauzate de lipsa valorilor de configurare, a fluxului de date sau a obiectelor de date lipsa sau a fisierelor lipsa sau a altor obiecte legate de aplicatie. Interogarile care contin toate cerintele pentru back-end nu numai ca economisesc timp in timpul depanarii, dar ii ajuta pe dezvoltatori sa valideze obiectele necesare si datele sunt construite.

Ultima actualizare: 2017-11-07

Despre autor

Tim Smith lucreaza ca DBA si dezvoltator si invata, de asemenea, Automatizarea ETL pe Udemy.

Vezi toate sfaturile mele