1.1 Princip for opbygning af forelæsninger

Du og jeg startede vores bekendtskab med databaser nedefra . Dette er et træk ved min personlige tilgang til at undervise mennesker. Når jeg taler om nye emner, fortæller jeg dig altid først, hvordan du bruger bestemte værktøjer i praksis. Og allerede når jeg ved, at en person ved, hvordan man bruger dem, begynder jeg at fortælle, hvordan alting fungerer.

Der er flere grunde til denne tilgang, men den vigtigste er, at den mest værdifulde og mest manglende ressource i læringsprocessen er elevernes motivation .

Denne tilgang er lidt anderledes end den, vi er vant til, som bruges på skoler og universiteter. Men alt er klart: Når du studerer på skolen eller universitetet, har du de rigtige prioriteter: at studere er det vigtigste i livet i dette øjeblik.

Er du engageret i selvuddannelse i voksenlivet, så skal du ofte allerede kombinere dine studier med arbejde, huslige pligter, pasning af børn eller ældre forældre. Og her vil studie ofte ikke være førsteprioritet.

Det handler om prioriteringer. Der er endda et sådant koncept i startups verden - Fail Fast, fail så hurtigt som muligt . Det lyder mærkeligt, men faktisk giver det meget mening: En startups opgave er hurtigt at tjekke, om hans hypotese er korrekt. Og hvis det ikke er sandt, behøver du ikke bruge år af dit liv på det, det er bedre at forstå så tidligt som muligt, at der ikke er nogen efterspørgsel efter en bestemt service eller et bestemt produkt.

Når jeg underviser i Java og SQL, bruger jeg samme tilgang: Jeg giver dig mulighed for så tidligt som muligt at forstå, om du skynder dig fra programmering eller ej . Hvis du kan lide programmering, og du selv kunne finde ud af at arbejde med loops og arrays, så har du med hjælp fra mentorer og et veltilrettelagt program alle muligheder for at gennemføre dit studie og finde et job.

Men en anden kendsgerning er ikke mindre vigtig: i et par fridage kan du forstå, at programmering ikke er noget for dig. Du er måske bare ikke interesseret i det, og det er okay . Så du behøver ikke bruge måneder af dit liv på det.

Kun 40 % af kandidaterne arbejder i det speciale, de modtog på universitetet. Tænk over det, folk studerede i 5-6 år, og 60% af dem besluttede ikke at arbejde i deres speciale. Ja, noget af den opnåede viden bruges stadig, men omkring halvdelen af ​​den er ikke.

Dette er værdien af ​​Fail Fast-konceptet - at forstå så tidligt som muligt, at et bestemt erhverv, en bestemt person eller en bestemt hobby ikke passer til dig. Og spild ikke din tid og energi på dem. I det lange løb er det en rigtig god strategi.

1.2 SQL og alle, alle, alle

Vi er færdige med den filosofiske introduktion, lad os vende tilbage til at lære SQL.

SQL-sprog og DBMS er lidt forskellige ting. Selve SQL-sproget er en slags standard, der beskriver, hvad der kan skrives i SQL-forespørgsler til databasen. DBMS er allerede implementeringer af denne standard. Nogle DBMS implementerer nogle funktioner i standarden, den anden - andre og så videre.

Jo dyrere DBMS er, jo flere funktioner i standarden implementerer det. Mange DBMS'er implementerer også ofte deres egne unikke funktioner uden for SQL-standarderne. Nogle gange fører dette til problemer med overførsel: SQL-forespørgsler skrevet til én DBMS fungerer muligvis ikke godt for en anden.

Java har også en lignende situation. Hvis et Java-program er skrevet under Windows, vil det ikke fungere normalt på Linux. For at løse dette problem introducerer Java specielle klasser, der har forskellige implementeringer til forskellige operativsystemer. Eksempel: Path-klasse som har implementeringer af WindowsPath, LinuxPath osv.

Den anden del af problemet løses ved hjælp af versionering. Alle vellykkede innovationer fra forskellige sprog eller DBMS føjes til den nye JDK eller SQL standard. Du ved allerede, at der er forskellige versioner af JDK, og jo nyere versionen er, jo flere funktioner har den. Det er det samme med SQL.

I SQL-sproget er der flere versioner af dets standard, som er navngivet efter år:

  • SQL:1999
  • SQL:2003
  • SQL:2006
  • SQL:2011
  • SQL:2016
  • SQL:2019

Gode ​​nyheder : vi vil ikke studere disse standarder. For det første vil det tage år at studere og mestre alt dette. Og for det andet er disse standarder som versioner af Android: kun 5-10 år efter udgivelsen bliver standarden massivt udbredt.

I databaser med store mængder data har folk brug for pålidelighed og stabilitet. "Det virker, rør det ikke" er mottoet for alle, der arbejder med databaser. Og overgangen til en ny version af databaser sker hvert 5. år, når alle fordelene ved en sådan løsning allerede er indlysende.

1.3 Ud over beslagene

Som jeg sagde ovenfor, tager det år at blive databaseprofessionel. En professionel ved en masse ting, som vi ikke vil studere. Men jeg vil tale lidt om, hvad der ellers er i databaserne.

Næsten alle moderne databaser understøtter:

1 proceduresprog (PL)

RDBMS understøtter muligheden for at skrive procedurer og funktioner, der kører på SQL Server og kan gøre en masse ting med data under forespørgsler. For eksempel, når jeg skrev PL SQL-forespørgsler til Oracle-serveren, som som svar på forespørgslen genererede ... en HTML-side med data. Ja du kan.

2 hændelser (triggere)

Alle moderne DBMS understøtter mekanismen for hændelser, som kaldes triggere i SQL-sproget. En trigger opstår som en reaktion på en handling. For eksempel kan du opsnappe alle forsøg på at skrive til databasen og tilføje det nøjagtige tidspunkt for deres ændring til nye linjer.

3 Logning

Moderne databaser forsøger at være superhurtige, så ofte bliver alle ændringer (nye rækker, slettede rækker, ændrede rækker) først skrevet til en speciel fil kaldet en log. Og først efter nogen tid vil SQL-serveren flette disse poster med hoveddatabasen.

På nogle måder ligner dette opførselen af ​​Garbage Collector i Java: den markerer også blot objekter som slettet i starten og udfører hukommelsesoprydning og -optimering under inaktive tider.

4 plugins

Til DBMS, såvel som til mange programmer, kan du skrive dine egne plugins. Sådanne plugins giver dig mulighed for at tilføje unikke datatyper, funktioner til at arbejde med dem eller ændre standardadfærden for DBMS. Dette er især nyttigt, når du arbejder med en open source-database, og der er nogle fejl.

5 Distribueret arbejde (klynger)

Et typisk scenarie for en moderne SQL-server er en klynge af flere servere. Den enkleste mulighed er, når data skrives til én server og læses fra en gruppe af servere. I dette tilfælde kan du konfigurere forskellige scenarier til databasesynkronisering mellem SQL-servere.

6 Skæring

Når der er mange data, begynder de at blive opdelt i forskellige databaser. Op til at én tabel kan lagres i dele i forskellige databaser.

Skæring kan være lodret og vandret. Lodret skæring betyder, at bordet så at sige skæres af lodrette linjer, mens vandret skæring skæres i vandrette.

For eksempel besluttede vi at opdele alle data i tabellen efter år: for 2019 - én tabel, for data fra 2020 - den anden, og så videre. Dette vil være vandret skæring.

7 skubbe den ikke-skubbe

På et vist trin i udviklingen af ​​databaser begyndte der at blive tilføjet mere og mere forretningslogik til dem. Det hele startede med procedurer, funktioner, generering af websider af servere og endte med tilføjelsen af ​​understøttelse af næsten alle populære sprog til DBMS: Python, JavaScript og endda Java og C++.

Det lyder fedt, indtil du begynder at komme ind i detaljerne: vil du virkelig skrive din webapplikations forretningslogik i Java, som vil blive udført inde i en SQL-server, hvor der ikke er JDK, java-biblioteker, frameworks, lidt hukommelse og en masse andre restriktioner?