Per personal de Techopedia, 15 de març de 2017
Takeeaway: L' amfitrió Eric Kavanagh va discutir la depuració i el perfil de bases de dades amb el doctor Robin Bloor, Dez Blanchfield i Bert Scalzo de l'IDERA.
Actualment no teniu la sessió iniciada. Inicieu la sessió o registreu-vos per veure el vídeo.
Eric Kavanagh: D'acord, senyores, és a les 4:00 hora de l'est un dimecres, i per descomptat, això vol dir.
Robin Bloor: No et sento, Eric.
Eric Kavanagh: Fa uns dies que hi vaig estar, així que no esteu sol. Però, doncs, el tema actual és realment interessant. És el tipus de cosa que voleu assegurar que passi en un segon pla a la vostra empresa, tret que siguis la persona que ho està fent, en aquest cas voleu assegurar-vos que ho esteu fent correctament. Perquè parlem de depuració. A ningú li agraden els errors, a ningú li agrada quan el programari deixi de funcionar: la gent es molesta, els usuaris es mostren antipàtics. Això no és bo. Així, doncs, parlarem de "Resposta ràpida: depuració de bases de dades i perfilació del rescat".
Hi ha un lloc sobre el vostre realment, em pega a Twitter, @eric_kavanagh, per descomptat.
Aquest any fa calor. I la depuració serà calenta, no importa el que sigui. Realment serà un d’aquests problemes que mai no s’apagarà, per molt que estiguem en aquest tema, sempre hi haurà problemes, així que la clau és com arribar a on es poden solucionar els problemes ràpidament? L’ideal és que tinguis programadors excel·lents, entorns fantàstics, on no es faci massa mal, però, com diu la vella dita, “Els accidents passen en la millor de les famílies”. I el mateix passa per a les organitzacions. Aleshores, això passa, passa, la pregunta és quina serà la vostra solució per tractar-la i resoldre aquests problemes?
Sentirem el doctor Robin Bloor, el nostre propi Dez Blanchfield des de baix i, per descomptat, el nostre bon amic Bert Scalzo de IDERA. De fet, vaig a lliurar les claus de Robin Bloor, que m'ho treguin. El pis és teu.
Robin Bloor: D' acord. Aquest és un tema interessant. Vaig pensar que, a causa que Dez és possible que continuïn les tècniques reals i les històries de guerra sobre la depuració, vaig pensar que només faria una discussió de fons per obtenir una imatge completament arrodonida del que passa. Vaig fer-ho molt de temps i solia ser un codificador, així que és així, i gairebé vaig tenir la temptació amb aquesta presentació de començar a encerar la lírica sobre la idea de codi obert, però vaig pensar que ho deixaré a algú altre.
A continuació, es mostra una llista d’errors famosos, i la majoria d’aquests arriben a la llista superior de qualsevol, bàsicament, tots menys els dos últims costen almenys 100 milions de dòlars. El primer va ser el Mars Climate Orbiter, que es va perdre a l’espai i va ser a causa d’un problema de codificació, on la gent va confondre unitats mètriques amb peus i rius. L'Arian Five Flight 501 va haver-hi un desajust entre un motor posat i els ordinadors que haurien d'executar el coet quan es va llançar. Falles múltiples de l'ordinador, coets que exploten, notícies de titular. El gasoducte soviètic, el 1982, va dir que és l'explosió més gran de la història del planeta; No estic segur de si ho és. Els russos van robar algun programari de control automatitzat i la CIA es va adonar que anaven a fer això i hi van posar errors, i els soviètics el van implementar sense provar-los. Per tant, va explotar una canalització, va pensar que era divertit.
El cuc de Morris va ser un experiment de codificació, que es va convertir de sobte en un cuc rapaç que va donar la volta a tothom, aparentment va causar danys per valor de 100 milions de dòlars; això és una estimació, per descomptat. Intel va cometre un famós error amb un xip de matemàtiques (una instrucció de matemàtiques del xip Pentium el 1993), que suposadament hauria costat més de 100 milions de dòlars. El programa Maps de Apple és possiblement el pitjor i desastrós llançament de tot el que Apple hagi fet mai. Les persones que van intentar utilitzar-ho, vull dir, algú conduïa al llarg de 101, i va descobrir que Apple Map deia que es trobava al bell mig de la badia de San Francisco. Per tant, la gent va començar a referir-se a l'aplicació Apple Maps com a iLost. La nostra més llarga interrupció el 1990, només és interessant des del punt de vista del cost d’una cosa així, AT&T es va deixar aproximadament nou hores i va costar uns 60 milions de dòlars en trucades de llarga distància.
I jo estava en una companyia d’assegurances del Regne Unit i la base de dades van implementar una nova versió de la base de dades i va començar a esborrar dades. I ho recordo molt bé, perquè després em van trucar per participar en algun tipus de selecció de bases de dades. I era molt interessant que haguessin agafat una nova versió de la base de dades, i tinguessin una bateria de proves que feien per a versions noves de la base de dades que passés totes les proves. Va trobar una manera realment obscura d’esborrar dades.
De totes maneres, és així. Vaig pensar que parlaria del desajust d’impedàncies i de l’SQL emès. És interessant que les bases de dades relacionals emmagatzemen dades en taules i els codificadors solen manipular dades en estructures d'objectes que realment no es corresponen amb les taules. I per això, obteniu el que s’anomena desajustament d’impedències i algú ha d’afrontar-lo d’una manera o d’una altra. Però el que succeeix en realitat, perquè un model, el model del codificador i la base de dades un altre model, no estan especialment alineats. Teniu errors que, simplement, no succeirien si la indústria hagués creat coses que funcionin junts, cosa que crec que és hilarant. Així doncs, bàsicament, des del costat dels codificadors, quan obteniu jerarquies pot ser de tipus, pot donar conjunts de resultats, pot tenir una capacitat de l'API escassa, pot ser un munt de coses que simplement llencen les coses en termes d'interacció amb la base de dades. Però el que és més per a mi, realment interessant; sempre m’ha sorprès que tinguéssiu aquesta barrera SQL que també és una mena d’impedència d’una manera que els codificadors i la base de dades funcionen entre ells. Així doncs, SQL té un reconeixement de dades, que està bé i disposa de DML per seleccionar, projectar i unir-se, cosa que va bé. Podeu aportar moltes funcions quant a la sortida de dades de la base de dades. Però té molt poc llenguatge matemàtic per fer coses. Té una mica d'això i això, i té molt poca cosa basada en el temps. I per això, SQL és un mitjà imperfet, si voleu, per obtenir les dades. Així doncs, els nois de la base de dades van crear procediments emmagatzemats per viure a la base de dades i el motiu dels procediments emmagatzemats que hi vivien va ser que realment no volíeu estar llançant dades cap endavant i cap a un programa.
Perquè algunes de les funcions eren extremadament específiques de dades, de manera que no es tractava només d’integritats referencials i eliminacions en cascada i coses així, la base de dades s’ocupava de tot de sobte que s’està posant la funcionalitat en una base de dades, cosa que significava, per descomptat, que la funcionalitat d'una aplicació es podria dividir entre el codificador i la base de dades en si. I això va fer que la feina d’implementar alguns tipus de funcions fos realment difícil i per tant més propensa a errors. Així doncs, aquest és un costat del joc de bases de dades, perquè vol dir que heu incorporat moltes implementacions, per exemple, que he estat involucrat en bases de dades relacionals, hi ha un munt de codi que té els processos emmagatzemats. per separat del codi que hi ha a les aplicacions. I sembla una cosa molt estranya a l'haver-hi arribat, se suposa que és bastant llest per fer diverses coses.
Vaig pensar que també parlaria sobre el rendiment de la base de dades perquè sovint es consideren errors de rendiment com a errors, però bàsicament es pot tenir un coll d’ampolla a la CPU, a la memòria, al disc, a la xarxa i es poden tenir problemes de rendiment a causa del bloqueig. . La idea seria que el codificador no s'havia de preocupar pel rendiment i, de fet, la base de dades realitzaria un rendiment raonable. Se suposa que ha estat dissenyat perquè el codificador no ho sàpiga. Tanmateix, obteniu un mal disseny de bases de dades, obteniu un mal disseny de programes, obteniu concurrència en la barreja de càrrega de treball, cosa que també pot comportar problemes de rendiment. Obteniu un equilibri de càrrega, obteniu una planificació de capacitat, un creixement de dades, que pot fer que una base de dades s’aturi o s’alenteixi. És una cosa interessant, quan les bases de dades queden gairebé plenes, s’alenteixen. I podeu tenir un problema de capes de dades en termes de replicació i la necessitat de replicar i la necessitat de fer còpies de seguretat i recuperació. De totes maneres, aquesta és una visió general.
L’únic que voldria dir és que la depuració de bases de dades només pot ser tan onerosa i no trivial, i ho dic perquè ho he fet molt, i sovint descobrireu que és com totes les situacions de depuració que jo La primera cosa que mai ha vist és un desastre. I heu d’intentar anar des de l’embolic per esbrinar com va sorgir l’embolic. Sovint, quan esteu buscant un problema de la base de dades, tot el que esteu veient és dades corruptes i esteu pensant: "Com va passar això?"
De totes maneres, passaré a Dez, que probablement dirà més paraules de saviesa que les que he sortit. No sé com passar-te la pilota, Dez.
Eric Kavanagh: Passaré, estarà al costat, aguanta.
Veu automatitzada: Les línies participants van callar.
Eric Kavanagh: D’acord, penja’t un segon, deixa’m donar la pilota a Dez.
Dez Blanchfield: Gràcies, Eric. Sí, doctor Robin Bloor, és que és el més correcte: aquest és un tema, un problema de tota la vida si perdoneu el puny, sento no poder-me ajudar. Esperem que pugueu veure la meva primera pantalla allà, les meves disculpes pel problema de mida de lletra a la part superior. El tema dels errors és una conferència d'un dia, en molts casos, segons la meva experiència. És un tema tan ampli i ampli, així que vaig a centrar-me en dues àrees clau, concretament el concepte del que considerem tant un error, sinó un problema de programació. Crec que els dies que introdueixen un error per si mateix són generalment recollits pels entorns de desenvolupament integrats, tot i que poden ser errors de llarga durada. Però sovint és un cas de codi de perfil i és possible escriure codi que funcioni, que hauria de ser un error. Aleshores, el meu títol de diapositives aquí, en realitat tenia una còpia d’aquest en resolució molt alta A3, però malauradament es va destruir en una casa de mudances. Però es tracta d’una nota escrita en un full de programació de l’any 1945, on suposadament alguns grups de la Universitat de Harvard als Estats Units, la seva segona creació d’una màquina anomenada Mark II. Estaven depurant algun problema, en un llenguatge comú, però intentaven trobar un error, i resulta que hi havia alguna cosa lleugerament diferent del que era un maquinari i un problema suposadament de programari.
Així doncs, el mite urbà és que al voltant del 9 de setembre del 1945 un equip de la Universitat de Harvard estava apartant una màquina, van trobar una cosa que van anomenar "relleix setanta"; en aquells dies la programació es feia en un sentit físic, es va fer un codi de ferida. al voltant d'un tauler, i així va ser que va programar la màquina eficaçment - i van trobar que aquest número de relé setanta hi havia alguna cosa que no hi havia, i resulta que el terme "error" es va produir, ja que literalment era una arna. hi havia una arna que es trobava entre un tros de fil de coure que anava d'un lloc a un altre. I la història explica que el llegendari Grace Hopper, com aquest epígraf, per a la meva diapositiva, "primer cas real d'un error que s'ha trobat" cita unquote.
Però, com ja va destacar Robin en la seva primera diapositiva, el concepte d'error es remunta al que podem imaginar als humans fent càlculs, conceptes com un pegat. El terme "pegat" provenia d'un tros real de cinta adhesiva sobre un forat d'una targeta de perforació. Però tot plegat és que el terme "depuració" va sortir d'aquest concepte de trobar un error en una màquina física. Des de sempre, hem utilitzat aquesta terminologia per intentar tractar problemes, no tant com problemes de codificació en un programa que no es compila, sinó com un programa que no funciona bé. I específicament no s’ha perfilat només trobar coses com bucles que no s’acaben de res enlloc.
Però també tenim un escenari i vaig pensar que hi hauria introduït un parell de diapositives divertides abans d’entrar en una mica més de detall. Aquí teniu el clàssic dibuix animat, anomenat XKCD al web, i el dibuixant té unes vistes força divertides del món. I això es tracta d’un nen anomenat "Little Bobby Tables" i que els seus pares suposadament van anomenar aquest jove noi Robert); TAULA DE DROP Estudiants; i es diu així: “Hola, aquesta és l'escola del vostre fill amb problemes informàtics”, i el progenitor respon: "Oh estimat, va trencar alguna cosa?" I el professor diu: "Bé, en certa manera ", i el professor li pregunta, " realment heu anomenat el vostre fill Robert "); TAULA DE DROP Estudiants; -? ”I el pare diu:“ Ah, sí, les petites taules de Bobby que li anomenem. ”De totes maneres, continuen dient que ara han perdut el rècord d’estudiants de l’any, espero que siguis feliç. I la resposta és "Bé, hauríeu de netejar i sanejar les entrades de la vostra base de dades". I ho faig servir moltes vegades per parlar d'alguns dels problemes que tenim en trobar coses en codi, que sovint el codi no mira les dades. també.
Un altre graciós, no sé si això és real o no - sospito que és una escomesa -, però de nou, també toca el meu divertit os. Algú canvia la matrícula de la part davantera del seu cotxe, amb una declaració similar que fa que les bases de dades baixin de càmeres de velocitat, etc. que capturen les matrícules dels cotxes. I sempre m’hi refereixo perquè dubto que qualsevol programador preveia un cop i un funcionament del seu codi per un vehicle de motor real, però mai no en subestimo això - la potència d’un friki enfadat.
(Rialles)
Però això em porta al meu punt clau, suposo, i és que, una vegada, podríem depurar i codificar el perfil com a simples mortals. Però estic molt del parer que ha passat aquest temps i, anecdòticament, en la meva experiència, la meva primera, i això m’envelleix terriblement, estic segur; Robin, us convidareu a divertir-me per això, però històricament he vingut d'una història als 14 anys errant al final de la ciutat i vaig trucar a la porta d'un centre de dades anomenat "Data Com" a Nova. Zelanda i preguntant si podia guanyar diners de butxaca a l’escola aconseguint l’autobús tardà a casa, uns 25 km de desplaçament cada dia, posant paper en impressores i cintes en unitats de cinta i només ser administrador general. I, curiosament, em van fer una feina. Però, amb el pas del temps, vaig aconseguir endinsar-me en el personal i trobar els programadors i em vaig adonar que m’encantava codificar i vaig passar pel procés d’executar scripts i treballs per lots, que al final del dia continua sent el codi. Heu d’escriure scripts i treballs per lots que semblen mini programes i després passar tot el procés d’asseure’s a mà en un terminal d’escriptura de codi 3270.
De fet, la meva primera experiència va ser en un terminal de teletip, que en realitat era una impressora física de 132 columnes. Essencialment, penseu com una màquina d’escriure molt antiga amb paper que s’hi desplaçava, perquè no tenien un tub CRT. I depurar el codi sobre això era un problema molt no trivial, de manera que tendíeu a escriure tot el vostre codi a mà, i després actuàveu com a mecanògraf, fent el possible per no provocar errors per colar-se, perquè és extremadament frustrant haver-ho de dir. l'editor d'una línia per anar a una determinada línia, per després imprimir-la i després escriure-la. Però una vegada, així va ser com vam escriure codi i així vam depurar, i ens vam fer molt bones. I, de fet, ens va obligar a tenir molt bones tècniques de programació, perquè era una autèntica molèstia per arreglar-ho. Però el viatge va passar després –i tots ho coneixem–, va anar des de l’experiència del terminal 3270 al meu món, fins al Digital Equipment VT220 on podríeu veure les coses a la pantalla, però de nou, ja feia el mateix. ho heu fet a la cinta de paper en format imprès només en un CRT, però heu pogut suprimir més fàcilment i no teníeu aquest so "dit dit dit".
I ja ho sabeu, els terminals del Wyse, com el Wyse 150, probablement la meva interfície preferida per a un equip de sempre, i després el PC i el Mac, i avui en dia les GUI i ID modernes basats en la web. I una gamma de programes a través d’això, programant en un mateix i ensamblador i PILOT i Logo i Lisp i, Fortran i Pascal i llenguatges que poden fer que la gent s’enfonsi. Però es tracta d’idiomes que t’obligaven a escriure un bon codi; no et deixaven escapar de males pràctiques. C, C ++, Java, Ruby, Python, i aconseguim augmentar aquesta fase de programació, ens oferim més scripts, ens acostem més al llenguatge de consulta estructurada i a llenguatges com el PHP que realment s’utilitzen per invocar SQL. El punt de dir-ho és que, venint dels meus antecedents, vaig ser autodidacta de moltes maneres i els que em van ajudar a aprendre, em van ensenyar pràctiques de programació molt bones i pràctiques molt bones al voltant del disseny i processos per assegurar-me que no. introduir el codi buggy.
Els mètodes de programació actuals, com ara, per exemple, Structured Query Language, SQL, és un llenguatge de consulta senzill i molt potent. Però l’hem convertit en un llenguatge de programació i no crec que SQL hagi estat mai dissenyat per a ser un llenguatge de programació modern, però hem inclinat que es converteixi en això. I això introdueix diversos temes, perquè pensem des de dos punts de vista: des del punt de vista de la codificació i des del punt de vista de l’ABD. És molt fàcil presentar i introduir errors per a coses com ara tècniques de programació pobres, esforços mandrosos per escriure codi, manca d’experiència, el clàssic peeve de mascotes que tinc, per exemple, amb gent SQL saltant a Google i buscant alguna cosa i cercant un lloc web que sigui. teniu un exemple i feu una còpia i enganxa del codi existent. I després replicar una mala codificació, mala pràctica i posar-la en producció, perquè només passa per donar-los els resultats que vulguin. Teniu altres reptes, per exemple, en aquests dies ens precipitàvem cap a això, el que anomenem la carrera a zero: intentar fer-ho tot tan barat i tan ràpid, que tenim un escenari on no estem treballant més baix. -personal remunerat. I no vull dir-ho d’una manera enganyosa, però no contractem experts per a tots els llocs de treball possibles. Hi havia una vegada qualsevol cosa relacionada amb els ordinadors: la ciència dels coets; es tractava de coses que feien tristos i eren molt forts, o entraven a l’espai o els enginyers eren homes i dones molt qualificades que havien fet graus i tenien una educació rigorosa que els impedia fer coses boges.
Aquests dies, hi ha molta gent que s’està desenvolupant i dissenyant i en base de dades que no han tingut anys d’experiència, no han tingut necessàriament la mateixa formació o suport. I així acaba amb un escenari del tradicional aficionat versus expert. I hi ha una línia famosa, en realitat no puc recordar qui va crear la cotització, la línia diu: “Si creieu que és car contractar un expert per fer una feina, espereu fins que contracteu un parell d’aficionats que crein un problema i tu. heu de netejar-lo. ”De manera que SQL té aquest problema, i és molt fàcil d’aprendre, és molt fàcil d’utilitzar. Però, al meu parer, no és un llenguatge de programació perfecte. És molt fàcil fer coses com fer una estrella seleccionada des de qualsevol lloc i fer arribar tot això a un llenguatge de programació que us resulti més còmode com PHP, Ruby o Python i utilitzar el llenguatge de programació que coneixeu de forma nativa. la manipulació de dades, en lloc de fer una consulta més complexa a SQL. I ho veiem molt, i llavors la gent es pregunta per què la base de dades funciona lentament; és perquè un milió de persones intenten comprar un bitllet en forma d’un sistema de bitllets en línia, on fa una estrella selecta des de qualsevol lloc.
Ara, aquest és un exemple molt extrem, però treureu el punt de vista de tot això. Per tant, per col·locar realment aquest punt a casa, aquí teniu un exemple que porto molt. Sóc un gran fan de les matemàtiques, m’encanta la teoria del caos, m’encanten els conjunts de Mandelbrot. Al costat dret hi ha una representació del conjunt Mandelbrot, amb la qual estic segur que tots coneixem. I a la banda esquerra hi ha un tros d’SQL que en realitat ho fa. Ara, cada cop que poso això en una pantalla en algun lloc, sento això: "Déu meu, algú va interpretar la sèrie de Mandelbrot amb SQL, estàs de debò? Això és boig! ”Bé, tot el que es tracta és d’il·lustrar el que estava tot ressenyant allà, i això sí, de fet, ara podeu programar gairebé qualsevol cosa en SQL; és un llenguatge de programació modern, molt desenvolupat i potent. Quan originalment era un llenguatge de consulta, es va dissenyar per obtenir dades. Així, ara tenim construccions molt complexes i tenim procediments emmagatzemats, hem aplicat la metodologia de programació a un llenguatge i, per tant, és molt fàcil per a una mala pràctica de programació, manca d’experiència, codi de tallar i enganxar, el personal amb pocs baixos que intenta ser un personal amb molt de pagament, la gent que fingeix que ho sap, però ha d’aprendre a la feina.
Tot un conjunt de coses en què es perfila el codi i el que anomenem depuració, que no és tant trobar errors que impedeixin que els programes funcionin, sinó errors que simplement perjudiquen el sistema i que estiguin mal codificats. Quan mireu aquesta pantalla ara i penseu que és senzill, és maca i penses: "Guau, quina gràfica fantàstica, m'encantaria executar-ho". Però imagineu-ho funcionant amb alguna lògica empresarial. . Sembla bastant ordenat, però parla d'una teoria matemàtica del caos rendible gràficament, però quan penses en què podria utilitzar-se en alguna lògica empresarial, obté la imatge molt ràpidament. I per il·lustrar-ho realment, i em sap greu que els colors es reverteixin, suposa que sigui un fons negre i un text verd que sigui una pantalla verda, però encara podeu llegir-ho.
Vaig anar a fer una ullada ràpida a un exemple d’allò que podríeu fer si realment estigueu boig i no teníeu cap experiència i provenís d’un fons diferent de programació i vaig aplicar els gustos de C ++ a SQL, per il·lustrar realment el meu punt abans. Em lliuro al nostre aprenent convidat d’IDERA. Aquesta és una consulta estructurada escrita com C ++, però està codificada en SQL. I realment s’executa, però s’executa durant un període de tres a cinc minuts. A més, aconsegueix extreure una línia de dades fora de diverses bases de dades, diverses combinacions.
Un cop més, tot el que es té és que si no teniu les eines correctes, si no teniu les plataformes i els entorns correctes per poder agafar aquestes coses, aconsegueixen arribar a la producció, i que tingueu 100.000 persones. colpejar un sistema cada dia o hora o minut, molt aviat acabaràs amb una experiència de Txernòbil on el ferro gran comença a fondre’s i enterrar-se al nucli del planeta, perquè aquest codi mai no hauria d’entrar en producció. Els vostres sistemes i les vostres eines, disculpeu-me, haurien de recollir-ho abans que s’apropi a qualsevol punt, fins i tot a través del procés de prova, fins i tot mitjançant la UAT i la integració de sistemes, s’hauria de recollir i posar en relleu aquell tros de codi i algú s’hauria de deixar de banda i dient: "Mira, això és un codi molt bonic, però anem a obtenir un DBA que us ajudi a crear aquesta consulta estructurada correctament, perquè francament, això és simplement desagradable". I l'URL hi és, podeu anar a fer una ullada. la consulta SQL més complexa que heu escrit. Perquè creieu-me, que efectivament compila, funciona. I si talleu i enganxeu això i simplement burleu la base de dades, és una cosa que cal veure; Si teniu les eines per veure la base de dades, només cal que proveu el desgast en un període de tres a cinc minuts per trucar de nou a la línia de text.
Per tant, per resumir, tot això, tot el meu bagatge en la codificació m'ha ensenyat que es pot donar a les persones una pistola i, si no tenen cura, es dispararan al peu; el truc és mostrar-los on es troba el mecanisme de seguretat. Amb les eines adequades i el programari adequat al vostre abast, després d’haver fet la codificació, podeu revisar el vostre codi, podeu trobar problemes tot perfilant el codi, podeu trobar errors efectivament no desitjats que siguin problemes de rendiment i, com deia. abans, una vegada, ho podríeu fer buscant una pantalla verda. Ja no pots més; hi ha centenars de milers de línies de codi, hi ha desenes de milers d'aplicacions desplegades, hi ha milions de bases de dades en alguns casos, i fins i tot els súper humans no poden fer-ho mai a mà. Necessiteu literalment el programari adequat i les eines adequades al vostre abast i necessiteu que l’equip utilitzi aquestes eines, de manera que pugueu trobar aquests problemes i abordar-los molt ràpidament, abans d’arribar al punt, mentre que el Dr. Va destacar Robin Bloor, les coses es converteixen en desastroses i les coses esclaten o, més sovint, només comencen a costar-te molts dòlars i molt de temps i esforç i destrueixen la moral i les coses, quan no poden esbrinar per què es fan les coses. molt de temps per córrer.
I amb això en compte, vaig a lliurar al nostre convidat i espero veure com han resolt aquest problema. I particularment la demostració crec que estem a punt de rebre-la. Eric, passaré de nou.
Eric Kavanagh: D' acord, Bert, porta-ho.
Bert Scalzo: D' acord, gràcies. Bert Scalzo aquí d’IDERA, sóc el responsable de producte de les nostres eines de bases de dades. I vaig a parlar de depuració. Crec que una de les coses més importants que deia Robin abans, i és cert que la depuració és onerosa i no trivial, i quan aneu a la depuració de bases de dades és un ordre de magnitud encara més onerós i no trivial, així que era una cita important.
D'ACORD. Volia començar amb la història de la programació, ja que moltes vegades veig gent que no està depurant, no utilitza un depurador, només programen amb qualsevol idioma que utilitzen i moltes vegades em diran., "Bé, aquestes coses depuradores són noves, i encara no les hem començat." I el que faig és mostrar-los aquest gràfic de cronologia, una mena de prehistòria, edat avançada, edat mitjana, és amable. de dir on érem en termes de llenguatges de programació. I teníem llenguatges molt antics a partir del 1951 amb codi de muntatge, Lisp i FACT i COBOL. A continuació ens situem al següent grup, Pascals i Cs i, després, el següent grup, els C ++ s, i mirem on es troba aquest signe d'interrogació: aquest signe d'interrogació té aproximadament aproximadament cap al 1978 fins a potser el 1980. En algun lloc d'aquest interval teníem Els depuradors que hi ha a la nostra disposició, i així dir-ho, "Hola, no estic utilitzant un depurador, perquè és una d'aquestes novetats", haureu d'haver començat a programar, ja ho sabeu, a la dècada de 1950, perquè aquesta és la l'única manera d'evitar aquesta petició.
Ara l’altra cosa que és curiosa d’aquest gràfic és que Dez acaba de fer un comentari sobre Grace Hopper, realment coneixia Grace, així que és una mica curiós. Aleshores, l’altra cosa de la que vaig riure és que va parlar de teletips i m’hi estic asseguda, “Home, que va ser el salt més gran que hem tingut en productivitat, quan vam passar de cartes a teletipos, aquest va ser el salt més gran mai. ”Així, i he programat en tots els idiomes que hi ha aquí, inclòs SNOBOL, del qual ningú no havia sentit abans, era un CDC, Control Data Corporation, així que suposo que estic una mica massa vell per a aquesta indústria. .
Dez Blanchfield: Vaig a dir, ens heu envellit allà terriblement.
Bert Scalzo: Sí, ja ho dic, tinc ganes de l'avi Simpson. Així, em fixo en la depuració i hi ha diferents maneres de fer depuració. Podríeu estar parlant d’allò que tots pensem tradicionalment entrar en un depurador i trepitjar codi. Però també, la gent instrumentarà el seu codi; és allà on introduïu declaracions al vostre codi i potser produireu un fitxer de sortida, un fitxer de rastreig o alguna cosa, i així instrumenteu el vostre codi. Comptaria que, com a depuració, és una mica més difícil, una manera de fer, però compta. Però també tenim la famosa declaració d’impressió: veieu i la gent realment hi posa instruccions d’impressió i realment he vist una eina on –i és una eina de bases de dades–, si no sabeu com utilitzar un depurador, premeu un botó i s’enganxarà les declaracions d’impressió a tot el codi i, quan hagueu acabat, premeu un altre botó i les elimineu. Perquè així debuta molta gent.
I la raó per la qual debuguem és doble: primer hem de trobar coses que facin inefectiu el nostre codi. En altres paraules, normalment això significa que hi ha un error lògic o que hem perdut un requisit empresarial, però el que és, és que el codi no és eficaç; no fa el que esperàvem. L’altra vegada que anem i fem depuració, és per eficiència i podria ser un error lògic, però el que és, és que he fet el correcte, simplement no torna prou ràpid. Ara, faig aquest apunt perquè probablement un perfeccionador sigui millor per a aquest segon escenari i parlarem tant sobre depuradors com sobre perfils. A més, hi ha aquest concepte de depuració remota; això és important perquè moltes vegades si esteu asseguts al vostre ordinador personal i utilitzeu un depurador, que arriba a una base de dades on el codi s'executa realment a la base de dades, realment esteu fent el que s'anomena depuració remota. Potser no se n’adones, però això és el que està passant. Aleshores, és molt freqüent que aquests depuradors tinguin punts d’interrupció, punts d’observació, trepitges i passos i algunes altres coses comunes, que els mostraré en una instantània a la pantalla.
Ara, perfilant: podeu fer perfilació de dues maneres diferents. Hi ha qui dirà que la càrrega de treball captura i reprodueix allà on captura tot, allò que compta com a perfil. La meva experiència ha estat més, millor si es fa mostreig. No hi ha cap raó per agafar totes les declaracions, perquè algunes declaracions poden funcionar tan ràpidament que no t'importa, i, realment, el que intentes és que són les que segueixen apareixent una i altra vegada, perquè corren massa temps. De manera que, de vegades, realitzar un perfilat pot significar mostreig en lloc d'executar tota la cosa. I normalment, obtindreu un tipus de sortida que podeu utilitzar, ara que podria ser visual dins d’un entorn de desenvolupament IDE, on pot donar-vos com un histograma del rendiment de les diverses línies de codi, però també podria sigui que produeixi un fitxer de traça.
Els perfils van aparèixer per primera vegada el 1979. Així, també hi ha hagut des de fa temps. Molt bé per trobar consums de recursos o problemes de rendiment, és a dir, això és l'eficiència. En general, és diferent i diferent del depurador, tot i que he treballat amb depuradors que ho fan alhora. I, mentre que els perfeccionistes crec que són més interessants de les dues eines, si considero que no depura gent suficient, aleshores, sens dubte, no hi ha prou gent, perquè sembla que un de cada deu depuradors tindrà perfil. I això és una vergonya, perquè el perfilat pot realment fer una diferència enorme. Ara, els llenguatges de la base de dades, com ja hem parlat anteriorment, teniu SQL, i hem obligat a col·locar el punyal rodó al forat quadrat aquí i l'hem obligat a convertir-se en un llenguatge de programació - i Oracle. Això és PL / SQL (és un llenguatge de procediment SQL) i SQL Server, és Transact-SQL, és SQL-99, és SQL / PSM, per, crec, és un mòdul emmagatzemat de procediments. Postgres li dóna un altre nom, DB2 i un altre nom, Informix, però la qüestió és que tothom ha obligat a realitzar construccions de tipus 3GL; és a dir, que FOR bucles, en declaracions de variables i totes les altres coses alienes a SQL formen part de SQL en aquests idiomes. Per tant, haureu de poder depurar un PL / SQL o un Transact-SQL tal com ho faríeu amb un programa de Visual Basic.
Ara, als objectes de la base de dades, això és important perquè la gent dirà: "Bé, quines coses he de depurar en una base de dades?" I la resposta és, bé, qualsevol cosa que pugueu emmagatzemar a la base de dades com a codi, si ho faig T-SQL, o PL / SQL, i em guarda objectes a la base de dades, probablement sigui un procediment emmagatzemat o una funció emmagatzemada. Però també hi ha disparadors: un disparador és com un procediment emmagatzemat, però es produeix en algun tipus d'esdeveniments. Ara, hi ha algunes persones que disparen que posaran una línia de codi i cridaran un procediment emmagatzemat perquè conservin tot el codi i els procediments emmagatzemats, però és el mateix concepte: no deixa de ser el desencadenant el que inicia tot. I, a continuació, com Oracle, tenen una cosa que s'anomena un paquet, que és com una biblioteca si voleu. Poseu 50 o 100 procediments emmagatzemats en un grup, anomenat paquet, de manera que és com una biblioteca. Llavors, aquí teniu el depurador del camí antic; en realitat això és una eina que realment us introduirà totes les declaracions de depuració del vostre codi. Així, a tot arreu on veieu el bloc de depuració, no suprimiu-lo, l’inici i el rastreig del depurador automàtic, tots tenien alguna eina enganxada. I les línies fora d’això, que és la minoria del codi, bé, aquest és el mètode de depuració no manual.
I la raó per la qual vaig plantejar-ho és que, si intenteu fer-ho a mà, realment aneu a escriure més codi de depuració per incloure totes aquestes declaracions d'impressió que no pas amb el codi. Així que, tot i que això pot funcionar, i si bé és millor que res, aquesta és una manera molt difícil de depurar, sobretot perquè, si passen 10 hores perquè es funcioni aquesta cosa i on tingui un problema es troba a la línia tres? Si estigués fent una sessió de depuració interactiva, ho hauria sabut a la línia de tres (cinc minuts), he aquí un problema, puc deixar-ho. Però amb això he d’esperar que s’executi, fins a completar-ho, i després he de mirar algun fitxer de traça que probablement tingui totes aquestes declaracions d’impressió, i tractar de trobar l’agulla al paller. Novament, això és millor que res, però no seria la millor manera de treballar. Ara, això és el que semblaria a aquest fitxer procedent de la diapositiva anterior; és a dir, he executat el programa i només té un munt d’informacions en aquest fitxer de rastreig i potser o no podré embrutar-me i trobar què és el que he de trobar. Així que, de nou, no estic tan segura que aquesta sigui la manera com voldríeu treballar.
Ara, depuradors interactius, i si heu utilitzat alguna cosa com Visual Studio per escriure programes o Eclipse, heu tingut depuradors i els heu utilitzat amb els vostres altres idiomes, simplement no penseu utilitzar-los aquí amb la vostra base de dades. I hi ha eines per fora, com el nostre DB Artisan i el nostre SQL Rapid, aquí és Rapid SQL, que té un depurador i que es pot veure a la part esquerra, tinc un procediment emmagatzemat anomenat "comprovació de duplicats". Bàsicament només cal anar a buscar i veure si tinc diverses files a la taula amb el mateix títol de pel·lícula. Així doncs, la base de dades és per a pel·lícules. I podríeu veure a la part dreta, al terç superior, tinc el meu codi font al centre, tinc els anomenats variables de rellotge i les safates de pila de trucades i, a la part inferior, " Tinc alguns missatges de sortida. I el que és important aquí és, si mireu la primera fletxa vermella, si faig un ratolí sobre una variable, realment puc veure quin és el valor en aquesta variable en aquest moment en el moment, mentre passeig el codi. I això és realment útil i, a continuació, puc treure una línia a la vegada a través del codi, no he de dir executar, podria dir pas una línia, deixeu-me veure què passava, passo una altra línia, deixeu-me veure què passava i ho faig a la base de dades. I tot i que estic sentat a Rapid SQL al meu PC i la meva base de dades està al núvol, encara puc fer aquesta depuració remota i veure-la i controlar-la des d’aquí, i fer depuració tal com ho faria amb qualsevol altre idioma.
Ara, la següent fletxa que hi ha, es pot veure com una fletxa que apunta cap a la dreta, cap a aquesta sortida del SGBD, és allà on es troba el meu cursor en aquest moment; així és a dir, he trepitjat i aquí és on estic a el moment. Aleshores, si dic "Pas de nou", vaig a la següent línia. Ara, més avall, veureu el punt vermell. Doncs bé, aquest és un punt de ruptura, que diu "Hola, no vull trepitjar aquestes línies". Si només vull saltar tot i arribar a on surti aquest punt vermell, puc prémer el botó d'execució i funcionarà. d’aquí o fins al final o fins a un punt d’interrupció, si hi ha algun punt de ruptura establert, i s’aturarà i em permetrà fer el pas de nou. I la raó per la qual és important i potent és que, quan faig tot això, el que passa al centre i fins i tot a la part inferior (però el més important al mig) canviarà i puc veure els valors de les meves variables, Puc veure el rastreig de la meva trucada de trucades, ja ho sabeu, i així es mostra tota aquesta informació a mesura que trepitjo el codi, de manera que realment puc veure i sentir i comprendre el que passa i com és el codi. treballant en temps d'execució. I normalment puc trobar un problema, si n’hi ha, o si sóc prou bo per agafar-lo.
D’acord, ara vaig a parlar d’un perfeccionador i, en aquest cas, es tracta d’un perfilador que puc veure a través d’un depurador. Recordeu que deia que de vegades són separats i que de vegades poden estar junts? En aquest cas, i de nou, estic a SQL Rapid i puc veure que hi ha un marge, a l’esquerra, al costat dels números de línia. I el que és, és el nombre de segons o microsegons que ha trigat en executar cada línia de codi, i puc veure que clarament, tot el meu temps el dedico a aquest bucle FOR on selecciono tot d’una taula. . Aleshores, el que passi dins d'aquest bucle FOR probablement sigui alguna cosa que he de mirar i, si puc millorar-ho, pagarà dividends. No aconseguiré cap millora treballant en aquestes línies que tenen com a 0, 90 o 0, 86; no hi passa gaire temps. Ara, en aquest cas, i de nou, estic a Rapid SQL, veieu com puc fer els perfils que es combinen amb la meva depuració. Ara, el que és bo és que Rapid SQL també et permet fer-ho d’una altra manera. El Quick SQL permet dir: "Sabeu què? No vull estar al depurador, només vull executar-ho i vull mirar gràficament o visualment el mateix tipus d'informació. "
I podeu veure que ja no sóc al depurador i executa el programa i, després que es faci l’execució, em proporcionen gràfics per dir-me coses perquè puc veure que tinc una declaració que sembla que s’està assumint. la major part del gràfic de tacte i, si miro, veig a la graella cap a la línia inferior, la línia 23, hi ha un altre cop el bucle FOR: s’ocupa el màxim temps, de fet és de color vermell fosc que fa tot el gràfic. I, per tant, aquesta és una altra manera de fer perfilació. Passem a anomenar-lo a "Code Analyst" a la nostra eina. Però bàsicament és només un perfeccionador separat d’un depurador. A algunes persones els agrada fer-ho de la primera manera, a algunes persones els agrada fer-ho de la segona manera.
Per què fem depuració i perfilació? No és perquè vulguem escriure el codi més gran del món i obtenir una pujada de sou - aquesta pot ser la nostra raó, però no és realment la raó per la qual ho fas -, vas prometre al negoci que faria alguna cosa correcta, perquè el seu programa sigui efectiu. Per això usareu el depurador. A més, els usuaris finals del negoci; no tenen molta paciència: volen resultats fins i tot abans de prémer la tecla. Se suposa que hem de llegir la seva ment i fer tot de manera instantània. Dit d'una altra manera, ha de ser eficient. Per tant, això és el que faríem servir el perfiler. Ara, sense aquestes eines, crec que realment ets aquest noi del vestit de negocis amb l’arc i la fletxa, que estàs disparant a l’objectiu i estàs embolicat. Perquè com trobeu com s’executa un programa només mirant el codi estàtic i com descobrireu quina línia és on realment passaria més temps a l’execució, una altra vegada només mirant codi estàtic? Una revisió de codi pot mostrar o no fer algunes d’aquestes coses, però no hi ha garantia que una revisió de codi les trobés totes. Si utilitzeu un depurador i un perfiler, podreu trobar tots aquests errors.
D'acord, només faré una demo ràpida aquí. No és la meva intenció d’empènyer el producte, només vull mostrar-vos com s’assembla un depurador perquè moltes vegades la gent diu: “Mai no he vist un d’aquests.” I es veu molt bé a les pantalles de diapositives de la pantalla., però, com es veu quan està en moviment? Així doncs, aquí a la pantalla publico el nostre producte DB Artisan; també tenim un depurador. El DB Artisan s’adreça més als DBA, el SQL Rapid és més als desenvolupadors, però he vist desenvolupadors que utilitzen DB Artisan i he vist DBA que utilitzen Rapid. Per tant, no us enganxeu al producte. I aquí, tinc l'opció de fer una depuració, però abans de llançar la depuració, vaig a extreure aquest codi perquè pugueu veure com és el codi abans de començar a executar-lo. Aleshores, aquí hi ha el mateix codi que hi havia a la instantània de la pantalla, aquest és el meu control de duplicats. I vull depurar això, així que premo debug. I ara triga un moment i dius: “Bé, per què passa un moment?” Recordeu la depuració remota: la depuració es produeix realment al meu servidor de bases de dades, no al meu PC. Per tant, va haver de passar i crear una sessió allà mateix, crear una cosa de depuració remota, connectar la meva sessió a aquella sessió de depuració remota i configurar un canal de comunicació.
Llavors, aquí teniu la meva fletxa, hi ha cap a dalt a la part superior, per la primera línia, aquí és on estic amb el codi. I si premeu la tercera icona allà, que és un pas endavant, veureu que la fletxa acaba de moure's i, si continuo apretant-la, la veureu continuant en moviment. Ara, si volia anar fins aquest bucle FOR, perquè sé que és on hi ha el problema, puc establir un punt d’interrupció. Vaig pensar que vaig establir això. Oh disparar, tenia una de les teves tecles de captura de pantalla mapejades a la mateixa clau que el depurador, això és el que provoca la confusió. D’acord, així que només he definit manualment un punt d’interrupció, així que ara en lloc de fer un pas, pas, pas, pas fins arribar, en realitat només puc dir: “Endavant i executar aquesta cosa”, i s’aturarà. Observeu que em va traslladar fins a on es troba el punt d’aturada, així que ara estic en el context d’executar aquest bucle, puc veure en què s’estableixen totes les meves variables, cosa que no és una sorpresa, perquè les vaig inicialitzar totes. a zero. I ara, puc aprofundir en aquest bucle i començar a mirar què hi ha dins d’aquest bucle.
Per tant, ara farà un recompte selecte dels meus lloguers i puc fer un ratolí sobre aquest tipus i mirar, és dos, dos és més gran que un, així que probablement farà el següent fragment d'aquest codi. En altres paraules, va trobar alguna cosa. Vaig a avançar i deixar-ho córrer. No vull passar tot per aquí; el que vull mostrar-vos és que quan un depurador finalitzi, acaba com un programa normal. Tinc el punt de ruptura definit, així que quan vaig dir córrer, només vaig tornar al punt de ruptura següent. Ho deixo executar fins al final, perquè el que vull que vegi és que un depurador no canvia el comportament del programa: quan s’acabi en funcionament, hauria d’obtenir els mateixos resultats si l’hagués executat no. dins d’un depurador.
I amb això, suspendré la demostració i tornaré perquè tornem a assegurar-nos que tenim temps per a preguntes i respostes. Per tant, ho obriré per a preguntes i respostes.
Eric Kavanagh: Està bé, Robin, potser alguna pregunta de tu i després una parella de Dez?
Robin Bloor: Sí, segur, ho trobo fascinant, per descomptat. He treballat amb coses com aquesta, però mai he treballat amb una cosa així a la base de dades. Pot fer-me alguna idea de què utilitza el perfeccionador? Perquè és així, estan mirant -perquè presumeixo que són- estan buscant problemes de rendiment, us ajudarà a distingir entre quan una base de dades porta temps i quan un codi requereix?
Bert Scalzo: Ja ho sabeu, és una pregunta fantàstica. Imaginem que estic treballant a Visual Basic i, a dins del meu Visual Basic, vaig a anomenar un Transact-SQL o un PL / SQL. Permetin-me fer el PL / SQL, ja que Oracle no funciona bé sempre amb les eines Microsoft. Podria perfilar el meu codi Visual Basic i el perfil que hi ha pot dir: "Hola, he anomenat aquest procediment emmagatzemat i ha trigat massa". Però, a continuació, puc entrar al procediment emmagatzemat i puc fer un perfil de base de dades al fitxer emmagatzemat procediu i digueu: “D’acord, de les 100 declaracions que hi ha aquí, aquí hi ha les cinc que van causar el problema”. Per tant, potser haureu de fer un equip d’etiquetes, on haureu d’utilitzar diversos perfils.
La idea és que si se us ha explicat que el problema de rendiment es troba a la vostra base de dades, un perfil de base de dades us pot ajudar a trobar l’agulla al paller en què les declaracions són realment les que teniu un problema. Et dic una altra cosa que va aparèixer amb el perfil: si tens un codi que es diu un milió de vegades, però només es necessita un microsegon cadascun del milió de vegades, però es truca un milió de vegades, el que mostrarà el perfilador, això va funcionar durant moltes unitats de temps. Així, mentre que el codi pugui ser altament eficient, podeu mirar i dir: "Oh, fem aquesta trucada a aquest tros de codi massa sovint. Potser només l’hauríem de trucar de tant en tant, cada vegada que processem un registre ”, o alguna cosa així. I, per tant, podeu trobar on hi ha un codi eficaç que s’anomena massa sovint, i en realitat és un problema de rendiment.
Robin Bloor: Sí, això és meravellós. Mai ho he fet. Per suposat, quan tenia problemes de bases de dades era com si jo, d’una manera o altra, tractés amb base de dades o tractés amb codi; Mai vaig poder tractar amb tots dos alhora. Però hi he tornat a fer, mai no he estat involucrat en la creació d'aplicacions on teníem els tràmits emmagatzemats, així que suposo que mai he tingut problemes que em servien per evitar-me. s'hauria dividit el codi entre una base de dades i un programa. Però, fes-ho tot, suposo que la resposta serà que sí, però això forma part de l’activitat d’un equip de desenvolupament, quan estàs, d’una manera o altra, a arreglar alguna cosa trencada o potser intenta portar-ne una de nova. aplicació junts. Però, això s'adapta a tots els altres components que esperaria en el medi ambient? Puc esperar que pogués clipar això juntament amb tots els meus paquets de proves i totes les altres coses que faria i amb les meves coses de gestió de projectes, és així com tots aquests clips junts?
Bert Scalzo: Sí, pot esdevenir part de qualsevol procés estructurat per fer els vostres esforços de programació o desenvolupament. I és curiós, la setmana passada vaig tenir un client que estava construint una aplicació web i la seva base de dades havia estat petita, històricament, i el fet que no eren molt bons programadors no els va fer mal. Doncs bé, la seva base de dades ha crescut al llarg dels anys, i ara triguen 20 segons en una pàgina web, entre quan dius "Inicieu la sessió i doneu-me algunes dades per veure" i quan apareix la pantalla, i ara és així. un problema de rendiment. I sabien que el problema no estava en cap dels Java o en cap altre lloc. Però tenien milers de procediments emmagatzemats i, per tant, van haver de començar a perfilar els procediments emmagatzemats per saber per què es necessita aquesta pàgina web en 20 segons? I en realitat vam trobar que tenien un cartesià en una de les seves declaracions selectes i que no ho sabíem.
Robin Bloor: Wow.
Bert Scalzo: Però algú em va dir una vegada: "Bé, com podrien tenir una unió cartesiana i no la sàpiga?" I això sonarà realment horrible; de vegades un programador que no està molt a gust amb SQL farà alguna cosa com fer-me una unió cartesiana, però només em retornarà el primer disc, així que sé que tinc alguna cosa i només necessito el primer. Així doncs, no s’adonen que només han recuperat mil milions de registres o que examinen mil milions de registres, perquè van obtenir el que els interessava.
Robin Bloor: Vaja, ja ho sé, és el que es diu … bé, això és el que estava passant Dez, en termes de gent no tan experta com potser haurien de ser, ja ho sabeu. Si sou un programador, heu de saber quines són les implicacions de l’emissió de qualsevol ordre. És a dir, realment, no hi ha excusa d’aquest nivell d’estupidesa. També presumeixo que, d’una manera o altra, només sou agnòstics del llenguatge en aquest aspecte, perquè tot això se centra en el costat de la base de dades. Tinc raó en això? És el mateix que utilitzeu per a la codificació?
Bert Scalzo: Absolutament, podeu fer-ho a Fortran o C o C ++. De fet, en alguns Unixes, fins i tot es pot fer pels seus llenguatges de script; en realitat ofereixen les mateixes eines. I aleshores vull tornar un segon pel que heu dit sense excusa. Vaig a fer una pausa als programadors, perquè no m’agrada llençar programadors a l’autobús. Però el problema és realment l’entorn acadèmic perquè quan aneu a aprendre a ser programador, se us ensenya un pensament de registre. No se li ensenya el pensament de conjunts, i això és el que el llenguatge de consulta estructurat o SQL funciona amb conjunts; per això tenim la unió, la intersecció i l'operador menys. I a vegades és molt difícil que una persona que mai hagi pensat en termes de conjunts, deixar de fumar, deixar anar el processament de registre a la vegada i treballar amb conjunts.
Robin Bloor: Sí, estic amb vosaltres. Vull dir, arribo ara, això és un problema d’educació; Crec que es tracta completament d’un problema d’educació, crec que és natural que els programadors pensin procedimentalment. I SQL no és procedimental, és declaratiu. En realitat estàs dient: "Això és el que vull i no m'importa com ho fas", saps? Si bé amb els llenguatges de programació, sovint tens les mànigues enrotllades i et permeten fins i tot gestionar els comptes mentre fas un bucle. Passaré a …
Bert Scalzo: No. D'acord, continua.
Sí, anava a dir que heu presentat un altre exemple que un perfilador seria capaç de capturar el tipus, continua amb aquest processament de registre a la vegada. De vegades, un programador que és bo amb una lògica de registre a la vegada, no pot esbrinar com fer un programa SQL. Doncs diguem que fa dos bucles FOR i bàsicament s’uneix, però ho fa per part del client. Així, està fent el mateix que una unió, però ho fa ell mateix, i un perfil ho atrauria, perquè probablement acabaríeu passant més temps fent la unió manualment que deixar que el servidor de bases de dades ho fes per vosaltres.
Robin Bloor: Sí, això seria un desastre. Vull dir, simplement estaries donant voltes. El guió sempre és dolent.
De totes maneres, passaré a Dez; Estic segur que té algunes preguntes interessants.
Dez Blanchfield: Gràcies, sí. Vaig a unir-vos als programadors que no llancin l'autobús. Vull dir, he passat massa anys a la meva vida fent de codificador jo, a tots els nivells, ja ho sabeu, ja sigui com heu dit, assegut a la línia de comandament de la màquina Unix i, en alguns casos, fins i tot vaig estar involucrat en un parell de ports diferents d’Unix d’una plataforma de maquinari a una altra. I us podeu imaginar els reptes que vam tenir allà. Però la realitat és aquí la targeta de sortida sense presó de tots els codificadors i guionistes del món. És una ciència de coets, literalment, escriure realment estreta cada vegada que és sempre una ciència de coets. I històries famoses de gent com Dennis Ritchie i Brian Kernahan que treballen en algun tros de codi de manera independent i es dirigeixen a un xat de revisió de codis sobre un cafè i esbrinant que havien escrit exactament el mateix codi, al mateix programa, de la mateixa manera. I ho van fer a C. Però aquest nivell de programació purista existeix molt poques vegades.
El fet és que diàriament només hi ha 24 hores al dia, set dies a la setmana, i només hem de fer les coses. I és així, quan es tracta no només de programadors tradicionals, dels DBA, i dels codificadors, i dels scripts, i dels sysadmin, i dels administradors de xarxa i del personal de seguretat, i tot el que passem per la data de la ciutadania; escoltem, tothom està intentant fer la seva feina. I, per tant, crec que el fantàstic per emportar-se de tot això és que em va encantar la vostra demostració i em va encantar el menjar per emportar-la amb què ens vas deixar allà, ara fa un moment, parlant amb Robin sobre el fet que això en tingui un tema particular, potser no tant. un nínxol: però un ampli espai al qual s'aplica, quant a la correcció de codi i SQL i bases de dades. Però em feia molta il·lusió sentir-vos dir que podríeu escoltar-lo en un script de shell i trobar alguns problemes, ja que ja sabeu, en l’actualitat i en l’actualitat sempre estem treballant amb el menor cost de tot.
La raó per la qual es pot comprar una samarreta de 6 dòlars en algun lloc és perquè algú va construir un sistema prou barat per fabricar i enviar i logísticament lliurar i vendre i vendre al detall i fer pagaments en línia per aconseguir aquesta camisa de 6 dòlars. I això no succeeix si teniu 400.000 dòlars a l’any per escriure codi de la manera perfecta; és només un desenvolupament complet. Aleshores, aquest punt, suposo que una de les preguntes que m’agradaria que només ens donéssin una mica més de coneixement, és quina és l’amplitud i l’abast del tipus de persones que veieu actualment que implementen aquest tipus d’eines per perfilar-les. un codi i busqueu problemes de rendiment? Inicialment, històricament, d’on provenen? Han estat les grans cases d’enginyeria? I aleshores, endavant, és el cas, tinc raó en pensar que cada cop són més les empreses que implementen aquesta eina o aquestes eines, per intentar ajudar als codificadors, que saben que estan acabant les coses per acabar la feina. i treure-la per la porta? I a vegades necessitem una targeta de sortida de presó? Tinc raó en pensar que històricament teníem un enfocament i un desenvolupament més en enginyeria? Això, ara, estem aconseguint un enfocament acadèmic menor, com va dir Robin, i ara és un codi autodidacta o de codi retallat o simplement construït? Apareix això amb el tipus de gent que està agafant el producte ara?
Bert Scalzo: Sí, exactament. I et donaré un exemple molt concret, només volem acabar la feina, perquè els empresaris no volen la perfecció. És com una partida d’escacs informatitzada: el joc d’escacs no busca la resposta perfecta; busca una resposta que sigui prou bona en un termini raonable de temps, així és com programem. Però el que estic trobant ara és que la majoria de la gent en lloc de dir que vol un perfilador com a part de les proves de la seva unitat, que és com ho faria jo, perquè no ho veig com una pèrdua de temps, el que està passant és ara que això es fa més tard, de vegades, durant proves d’integració o proves d’estrès, si tenim sort. Però la majoria de vegades forma part d’una escalada, en què alguna cosa ha entrat en producció, va funcionar una estona, potser fins i tot va funcionar durant molts anys, i ara no funciona bé, i ara la perfilarem. I ara és l'escenari més habitual ara.
Dez Blanchfield: Sí, i crec que el terme "deute tècnic" és probablement aquell que coneixeu; Conec a Robin i certament ho són. Crec que avui en dia, sobretot en enfocaments àgils de desenvolupament i construcció de sistemes, el concepte de deute tècnic ara és una cosa real, i en tenim en compte els projectes. Ja sé, vull dir, tenim nostres propis projectes com Media Lens i altres, on cada dia tenim la codificació i diverses coses del grup Bloor. I sempre que estiguem construint alguna cosa, mirem, ho miro i sempre mirem des del punt de vista de què em costarà arreglar això ara mateix, si no ho puc aconseguir puc aconseguir-ho i, a continuació, veure i veure si aquesta cosa es trencarà. I hereteu aquest deute tècnic que sé que hauré de cercar més endavant i arreglar-ho.
I vull dir, ho he fet en els darrers set dies: he escrit un parell d’eines i guions, he escrit un parell de peces de llenguatge Python i l’he desplegat a Mongo com a final, fent segur que és agradable i net i segur, però només arriba la consulta que necessito, sabent que necessito aquesta funció per funcionar, per arribar al trencaclosques més gran; és allà on és el meu veritable dolor. Així que incorreu en aquest deute tècnic i crec que ara no és només una cosa puntual, crec que això forma part del DNA que es desenvolupa ara. La gent només –no és de debò– només accepta que el deute tècnic és un tipus d’emissió normal de modus operandi, i només ha d’afrontar-lo. És on incorreu el deute tècnic. I crec que el més important del que ens vau mostrar a la demostració va ser que, literalment, podeu perfilar i veure el temps que es necessita. I probablement és una de les meves coses preferides. Vull dir, en realitat he creat eines de perfilació: solíem crear eines a Sed i Lex i Orc per executar el nostre codi i veure on estaven els bucles, abans que estiguessin disponibles eines com aquestes i quan heu creat codi per anar i revisa el teu propi codi, et convé molt no haver de revisar el teu propi codi. Però ara no és així. Tenint això en compte, hi ha un segment de mercat concret que suposa més d'una altra forma que cap altre? Veure com una massa …
Bert Scalzo: Oh, sí, tinc … Vaig a fer una analogia per a tu, i et mostraré que els no programadors ho fan tot el temps. Perquè si estic ensenyant alguna vegada a una classe o sessió de depurador i pregunteu, preguntaré a la gent: "D'acord, quantes persones aquí entren a Microsoft Word i no utilitzen mai el corrector ortogràfic?" I ningú no posa la mà, perquè per escriure documents, tots sabem que podem equivocar-nos en anglès i, per tant, tothom utilitza el corrector ortogràfic. I vaig dir: “Bé, com és que quan escriviu text al vostre IDE com Visual Basic, no feu servir el depurador? És el mateix, és com un corrector ortogràfic. "
Dez Blanchfield: Sí, en realitat, aquesta és una gran analogia. No m’ho havia pensat realment, he de reconèixer que realment faig alguna cosa similar amb un parell d’eines que utilitzo. De fet, un, ODF, el meu favorit amb Eclipse és simplement tallar i enganxar codi allà i anar a buscar coses que simplement ressaltin immediatament i adonar-me que vaig fer una tipografia en alguna trucada de classe. I, ara, és interessant ara amb una eina com aquesta, ho podeu fer a temps real que no pas a tornar-hi i mirar-lo més endavant, cosa que és agradable per agafar-lo per endavant. Però sí, aquesta és una gran analogia de simplement posar text en un processador de textos, perquè és una interessant trucada que, simplement, adoneu-vos que heu fet algun error o fins i tot un error gramatical, oi?
Bert Scalzo: Exactament.
Dez Blanchfield: Aleshores, ja veieu un aspecte més alt, a partir de la meva última pregunta, abans de llançar-nos a la nostra pregunta i pregunta potser per als nostres assistents. Si plantejaríeu algun tipus de recomanació sobre l’enfocament per fer-ho, suposo que això és retòric, és el cas que us arribeu ben d’hora i que impliqueu aquesta implementació a mesura que esteu desenvolupant, abans de desenvolupar-vos? O és que el cas principalment es construeix, es mou, construeix alguna cosa, entra i el perfil més endavant? Sospito que es tracta del primer moment i assegureu-vos que el vostre codi estigui net per avall. O és que han de tenir en compte aquesta part del seu post-desplegament?
Bert Scalzo: L'ideal seria que ho fessin a la perfecció, però com que tothom es troba en el món bullici on només han de fer les coses, no solen fer-ho fins que no tinguin un problema de rendiment que no poden resoldre. afegint més CPU i memòria a una màquina virtual.
Dez Blanchfield: Sí. Aleshores, en realitat heu mencionat alguna cosa interessant, si puc fer-ho ràpidament? Heu comentat abans que es pot executar des de qualsevol lloc i es pot parlar amb la base de dades al final. Així doncs, això és còmode amb el tipus de concepte bimodal de què parlem ara, de núvol on-premise / off-premise, també per l’aspecte de les coses, al final del dia, si es pot parlar de fons i veure. el codi, realment no importa, no?
Bert Scalzo: Exactament, sí, podeu executar-ho al núvol.
Dez Blanchfield: Excel·lent, perquè crec que és allà cap al nostre nou món valent. Així doncs, Eric. Ara em tornaré a veure i veiem que tenim algunes preguntes aquí i vull que els nostres assistents es quedin amb nosaltres tot i que hem passat la hora.
Eric Kavanagh: Sí, hi ha algunes persones per aquí, només faré un comentari ràpid: Bert, crec que aquesta metàfora, l'analogia que feu amb l'ús de la correcció ortogràfica és francament brillant. Això val la pena un bloc o dos, francament, perquè és una bona manera d’enquadrar el context del que estàs fent, i del valor que és, i de quina forma hauria de ser una bona pràctica utilitzar un depurador. de manera regular, oi? Aposto que aconseguireu que uns caps assentin quan el feu fora, no?
Bert Scalzo: Absolutament, perquè el que els dic és: "Per què faig una revisió ortogràfica als meus documents? No vull avergonyir-me d’estupideses faltes d’ortografia. ”Doncs no volen avergonyir-se d’estúpids errors de codificació!
Eric Kavanagh: És cert. Sí, efectivament. Bé, gent, hem cremat una hora i cinc minuts aquí, tan gran gràcies a tots els que heu estat pel vostre temps i atenció. Arxivem tots aquests xats web; no dubteu en tornar en qualsevol moment i els feu una ullada. El millor lloc per trobar aquests enllaços és probablement techopedia.com, així que afegiríem a aquesta llista aquí.
I amb això, us acomiadarem, amics. Una vegada més, una gran feina, Bert, gràcies als nostres amics d’IDERA. En parlem la propera vegada, en parlem la setmana que ve, de fet. Cuida't! Adeu.