CodeGym/Java kurs/All lectures for NO purposes/Avansert kunnskap om databaser

Avansert kunnskap om databaser

Tilgjengelig

1.1 Prinsipp for oppbygging av forelesninger

Du og jeg startet vårt bekjentskap med databaser nedenfra . Dette er et trekk ved min personlige tilnærming til å undervise mennesker. Når jeg snakker om nye emner, forteller jeg deg alltid først hvordan du bruker visse verktøy i praksis. Og allerede når jeg vet at en person vet hvordan de skal brukes, begynner jeg å fortelle hvordan alt fungerer.

Det er flere grunner til denne tilnærmingen, men den viktigste er at den mest verdifulle og mest manglende ressursen i læringsprosessen er studentmotivasjon .

Denne tilnærmingen er litt forskjellig fra den vi er vant til, som brukes på skoler og universiteter. Men alt er klart: når du studerer på skolen eller universitetet, har du de riktige prioriteringene: å studere er det viktigste i livet i dette øyeblikk.

Hvis du er engasjert i selvutdanning i voksen alder, må du ofte allerede kombinere studiene med arbeid, husarbeid, omsorg for barn eller eldre foreldre. Og her vil ofte ikke studier være førsteprioritet.

Alt handler om prioriteringer. Det finnes til og med et slikt konsept i oppstartsverdenen - Fail Fast, fail as fort mulig . Det høres rart ut, men faktisk gir det mye mening: oppgaven til en oppstart er å raskt sjekke om hypotesen hans er riktig. Og hvis det ikke er sant, trenger du ikke å bruke år av livet ditt på det, det er bedre å forstå så tidlig som mulig at det ikke er noen etterspørsel etter en bestemt tjeneste eller produkt.

Når jeg underviser i Java og SQL, bruker jeg samme tilnærming: Jeg gir deg muligheten til å forstå så tidlig som mulig om du haster med programmering eller ikke . Hvis du liker programmering, og du selv var i stand til å finne ut hvordan du kan jobbe med looper og arrays, så har du ved hjelp av mentorer og et godt utformet program alle muligheter til å fullføre studiene og finne en jobb.

Men et annet faktum er ikke mindre viktig: i løpet av et par fridager kan du forstå at programmering ikke er noe for deg. Du er kanskje bare ikke interessert i det, og det er greit . Så du trenger ikke å bruke måneder av livet ditt på det.

Bare 40 % av nyutdannede jobber i spesialiteten de fikk ved universitetet. Tenk på det, folk studerte i 5-6 år, og 60% av dem bestemte seg for ikke å jobbe i spesialiteten sin. Ja, noe av kunnskapen som er oppnådd brukes fortsatt, men omtrent halvparten av den er det ikke.

Dette er verdien av Fail Fast-konseptet - å forstå så tidlig som mulig at et bestemt yrke, en bestemt person eller en viss hobby ikke passer for deg. Og ikke kast bort tid og energi på dem. I det lange løp er dette en veldig god strategi.

1.2 SQL og alt, alt, alt

Vi er ferdige med den filosofiske introduksjonen, la oss gå tilbake til å lære SQL.

SQL-språk og DBMS er litt forskjellige ting. Selve SQL-språket er en slags standard som beskriver hva som kan skrives i SQL-spørringer til databasen. DBMS er allerede implementeringer av denne standarden. Noen DBMS implementerer noen funksjoner i standarden, den andre - andre, og så videre.

Jo dyrere DBMS er, jo flere funksjoner i standarden implementerer det. Dessuten implementerer mange DBMS-er ofte sine egne unike funksjoner utenfor SQL-standardene. Noen ganger fører dette til portabilitetsproblemer: SQL-spørringer skrevet for en DBMS fungerer kanskje ikke bra for en annen.

Java har også en lignende situasjon. Hvis et Java-program er skrevet under Windows, vil det ikke fungere normalt på Linux. For å løse dette problemet introduserer Java spesialklasser som har forskjellige implementeringer for forskjellige operativsystemer. Eksempel: Path-klasse som har implementeringer av WindowsPath, LinuxPath, etc.

Den andre delen av problemet løses ved hjelp av versjonering. Alle vellykkede innovasjoner fra forskjellige språk eller DBMS er lagt til den nye JDK- eller SQL-standarden. Du vet allerede at det finnes forskjellige versjoner av JDK, og jo nyere versjonen er, jo flere funksjoner har den. Det er det samme med SQL.

I SQL-språket er det flere versjoner av standarden, som er navngitt etter år:

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

Gode ​​nyheter : vi vil ikke studere disse standardene. For det første vil det ta år å studere og mestre alt dette. Og for det andre er disse standardene som versjoner av Android: bare 5-10 år etter utgivelsen blir standarden massivt utbredt.

I databaser med store datamengder trenger folk pålitelighet og stabilitet. «Det fungerer, ikke rør det» er mottoet til alle som jobber med databaser. Og overgangen til en ny versjon av databaser gjøres hvert 5. år, når alle fordelene med en slik løsning allerede er åpenbare.

1.3 Utover parentesene

Som jeg sa ovenfor, tar det år å bli en databaseprofesjonell. En profesjonell kan mange ting som vi ikke vil studere. Men jeg skal snakke litt om hva annet som finnes i databasene.

Nesten alle moderne databaser støtter:

1 prosedyrespråk (PL)

RDBMS støtter muligheten til å skrive prosedyrer og funksjoner som kjører på SQL Server og kan gjøre mange ting med data under spørringer. For eksempel, når jeg skrev PL SQL-spørringer til Oracle-serveren, som som svar på spørringen genererte ... en HTML-side med data. Ja det kan du.

2 hendelser (utløsere)

Alle moderne DBMS støtter hendelsesmekanismen, som kalles triggere i SQL-språket. En trigger oppstår som en respons på en handling. Du kan for eksempel avskjære alle forsøk på å skrive til databasen og legge til det nøyaktige tidspunktet for endringen til nye linjer.

3 Logging

Moderne databaser prøver å være superraske, så ofte blir alle endringer (nye rader, slettede rader, endrede rader) først skrevet til en spesiell fil kalt en logg. Og først etter en stund vil SQL-serveren slå sammen disse postene med hoveddatabasen.

På noen måter ligner dette på oppførselen til Garbage Collector i Java: den merker også ganske enkelt objekter som slettet først, og utfører minneopprydding og -optimalisering under inaktive tider.

4 plugins

Til DBMS, så vel som til mange programmer, kan du skrive dine egne plugins. Slike plugins lar deg legge til unike datatyper, funksjoner for å jobbe med dem eller endre standardoppførselen til DBMS. Dette er spesielt nyttig når du jobber med en åpen kildekodedatabase og det er noen feil.

5 Distribuert arbeid (klynger)

Et typisk scenario for en moderne SQL-server er en klynge av flere servere. Det enkleste alternativet er når data skrives til én server og leses fra en gruppe servere. I dette tilfellet kan du konfigurere ulike scenarier for databasesynkronisering mellom SQL-servere.

6 Sharding

Når det er mye data, begynner de å bli delt opp i forskjellige databaser. Opp til det faktum at én tabell kan lagres i deler i ulike databaser.

Sharding kan være vertikal og horisontal. Vertikal skjæring betyr at bordet så å si skjæres av vertikale linjer, mens horisontal skjæring skjæres i horisontale.

For eksempel bestemte vi oss for å dele alle dataene i tabellen etter år: for 2019 - en tabell, for dataene fra 2020 - den andre, og så videre. Dette vil være horisontal skjæring.

7 skyve den ikke-skyve

På et visst stadium i utviklingen av databaser begynte mer og mer forretningslogikk å bli lagt til dem. Det hele startet med prosedyrer, funksjoner, generering av nettsider av servere, og endte opp med tillegg av støtte for nesten alle populære språk til DBMS: Python, JavaScript og til og med Java og C++.

Høres kult ut helt til du begynner å sette deg inn i detaljene: vil du virkelig skrive webapplikasjonens forretningslogikk i Java, som vil bli utført i en SQL-server, hvor det ikke er JDK, java-biblioteker, rammeverk, lite minne og mye andre restriksjoner?

Kommentarer
  • Populær
  • Ny
  • Gammel
Du må være pålogget for å legge igjen en kommentar
Denne siden har ingen kommentarer ennå