1.1 Prinsipyo ng pagbuo ng mga lektura
Ikaw at ako ay nagsimula sa ating pagkakakilala sa mga database mula sa ibaba . Ito ay isang tampok ng aking personal na diskarte sa pagtuturo sa mga tao. Kapag pinag-uusapan ang mga bagong paksa, lagi kong sinasabi sa iyo kung paano gumamit ng ilang partikular na tool sa pagsasanay. At kapag alam kong alam ng isang tao kung paano gamitin ang mga ito, sinisimulan kong sabihin kung paano gumagana ang lahat.
Mayroong ilang mga dahilan para sa diskarteng ito, ngunit ang pangunahing isa ay ang pinakamahalaga at pinakanawawalang mapagkukunan sa proseso ng pag-aaral ay ang pagganyak ng mag-aaral .
Ang pamamaraang ito ay bahagyang naiiba sa nakasanayan natin, na ginagamit sa mga paaralan at unibersidad. Ngunit malinaw ang lahat: kapag nag-aaral ka sa paaralan o unibersidad, mayroon kang tamang mga priyoridad: ang pag-aaral ang pinakamahalagang bagay sa buhay sa sandaling ito.
Kung ikaw ay nakikibahagi sa pag-aaral sa sarili sa pagtanda, kung gayon madalas na kailangan mong pagsamahin ang iyong pag-aaral sa trabaho, mga gawaing bahay, pag-aalaga sa mga bata o matatandang magulang. At dito madalas ang pag-aaral ay hindi magiging unang priyoridad.
Lahat ito ay tungkol sa mga priyoridad. Mayroong kahit na tulad ng isang konsepto sa mundo ng mga startup - Mabigo Mabilis, mabigo sa lalong madaling panahon . Ito ay kakaiba, ngunit sa katunayan ito ay gumagawa ng maraming kahulugan: ang gawain ng isang startup ay upang mabilis na suriin kung ang kanyang hypothesis ay tama. At kung ito ay hindi totoo, kung gayon hindi mo kailangang gumastos ng mga taon ng iyong buhay dito, mas mahusay na maunawaan nang maaga hangga't maaari na walang pangangailangan para sa isang tiyak na serbisyo o produkto.
Kapag nagtuturo ng Java at SQL, ginagamit ko ang parehong diskarte: Binibigyan kita ng pagkakataong maunawaan nang maaga hangga't maaari kung nagmamadali ka mula sa programming o hindi . Kung gusto mo ang programming, at ikaw mismo ay naisip kung paano magtrabaho sa mga loop at array, pagkatapos ay sa tulong ng mga mentor at isang mahusay na dinisenyo na programa, mayroon kang bawat pagkakataon upang makumpleto ang iyong pag-aaral at makahanap ng trabaho.
Ngunit ang isa pang katotohanan ay hindi gaanong mahalaga: sa ilang araw na walang pasok, mauunawaan mo na ang programming ay hindi para sa iyo. Maaaring hindi ka lang interesado dito, at okay lang iyon . Kaya, hindi mo kailangang gugulin ang mga buwan ng iyong buhay dito.
40% lamang ng mga nagtapos ang nagtatrabaho sa espesyalidad na natanggap nila sa unibersidad. Isipin ito, ang mga tao ay nag-aral ng 5-6 na taon, at 60% sa kanila ay nagpasya na huwag magtrabaho sa kanilang espesyalidad. Oo, ang ilan sa mga kaalamang natamo ay ginagamit pa rin, ngunit halos kalahati nito ay hindi.
Ito ang halaga ng konsepto ng Fail Fast - upang maunawaan nang maaga hangga't maaari na ang isang partikular na propesyon, isang partikular na tao o isang partikular na libangan ay hindi angkop para sa iyo. At huwag sayangin ang iyong oras at lakas sa kanila. Sa katagalan, ito ay isang napakahusay na diskarte.
1.2 SQL at lahat, lahat, lahat
Tapos na tayo sa pilosopikal na pagpapakilala, bumalik tayo sa pag-aaral ng SQL.
Ang wikang SQL at DBMS ay bahagyang magkaibang mga bagay. Ang wikang SQL mismo ay isang uri ng pamantayan na naglalarawan kung ano ang maaaring isulat sa mga query sa SQL sa database. Ang DBMS ay mga pagpapatupad na ng pamantayang ito. Ang ilang DBMS ay nagpapatupad ng ilang mga function ng pamantayan, ang pangalawa - iba pa, at iba pa.
Kung mas mahal ang DBMS, mas maraming feature ng pamantayang ipinapatupad nito. Gayundin, maraming mga DBMS ang madalas na nagpapatupad ng kanilang sariling mga natatanging tampok sa labas ng mga pamantayan ng SQL. Minsan humahantong ito sa mga isyu sa portability: Ang mga query sa SQL na isinulat para sa isang DBMS ay maaaring hindi gumana nang maayos para sa isa pa.
Ang Java ay mayroon ding katulad na sitwasyon. Kung ang isang Java program ay nakasulat sa ilalim ng Windows, hindi ito gagana nang normal sa Linux. Upang malutas ang problemang ito, ipinakilala ng Java ang mga espesyal na klase na may iba't ibang mga pagpapatupad para sa iba't ibang mga operating system. Halimbawa: Path class na may mga pagpapatupad ng WindowsPath, LinuxPath, atbp.
Ang ikalawang bahagi ng problema ay nalutas sa tulong ng bersyon. Lahat ng matagumpay na inobasyon mula sa iba't ibang wika o DBMS ay idinagdag sa bagong pamantayan ng JDK o SQL. Alam mo na na may iba't ibang bersyon ng JDK, at kapag mas bago ang bersyon, mas maraming feature ang mayroon ito. Ito ay pareho sa SQL.
Sa wikang SQL, mayroong ilang mga bersyon ng pamantayan nito, na pinangalanan ayon sa taon:
- SQL:1999
- SQL:2003
- SQL:2006
- SQL:2011
- SQL:2016
- SQL:2019
Magandang balita : hindi natin pag-aaralan ang mga pamantayang ito. Una, aabutin ng maraming taon para pag-aralan at makabisado ang lahat ng ito. At pangalawa, ang mga pamantayang ito ay parang mga bersyon ng Android: 5-10 taon lamang pagkatapos ng paglabas, ang pamantayan ay nagiging malawak na kalat.
Sa mga database na may malaking halaga ng data, ang mga tao ay nangangailangan ng pagiging maaasahan at katatagan. "Ito ay gumagana, huwag hawakan ito" ay ang motto ng lahat na nagtatrabaho sa mga database. At ang paglipat sa isang bagong bersyon ng mga database ay ginagawa tuwing 5 taon, kapag ang lahat ng mga pakinabang ng naturang solusyon ay halata na.
1.3 Lampas sa mga bracket
Tulad ng sinabi ko sa itaas, tumatagal ng mga taon upang maging isang propesyonal sa database. Alam ng isang propesyonal ang maraming bagay na hindi natin pag-aaralan. Ngunit magsasalita ako ng kaunti tungkol sa kung ano pa ang nasa mga database.
Halos lahat ng modernong database ay sumusuporta sa:
1 Procedural Language (PL)
Sinusuportahan ng RDBMS ang kakayahang magsulat ng mga pamamaraan at function na tumatakbo sa SQL Server at maaaring gumawa ng maraming bagay gamit ang data sa panahon ng mga query. Halimbawa, sa sandaling nagsulat ako ng mga query sa PL SQL sa Oracle server, na bilang tugon sa query ay nabuo ... isang HTML na pahina na may data. Oo kaya mo.
2 Mga Kaganapan (Mga Trigger)
Sinusuportahan ng lahat ng modernong DBMS ang mekanismo ng mga kaganapan, na tinatawag na mga trigger sa wikang SQL. Nagaganap ang isang trigger bilang tugon sa ilang aksyon. Halimbawa, maaari mong harangin ang lahat ng mga pagtatangka na sumulat sa database at idagdag ang eksaktong oras ng kanilang pagbabago sa mga bagong linya.
3 Pag-log
Sinusubukan ng mga modernong database na maging napakabilis, kaya kadalasan ang lahat ng mga pagbabago (mga bagong row, tinanggal na mga row, binago ang mga row) ay unang isinusulat sa isang espesyal na file na tinatawag na log. At pagkatapos lamang ng ilang oras, ang SQL server ay pagsasamahin ang mga talaan na ito sa pangunahing database.
Sa ilang mga paraan, ito ay katulad ng pag-uugali ng Garbage Collector sa Java: minarkahan lang nito ang mga bagay bilang tinanggal sa una, at nagsasagawa ng paglilinis at pag-optimize ng memory sa mga oras ng idle.
4 Mga Plugin
Sa DBMS, pati na rin sa maraming mga programa, maaari kang sumulat ng iyong sariling mga plugin. Nagbibigay-daan sa iyo ang mga naturang plugin na magdagdag ng mga natatanging uri ng data, mga function para sa pagtatrabaho sa kanila, o baguhin ang karaniwang gawi ng DBMS. Ito ay lalong kapaki-pakinabang kapag nagtatrabaho ka sa isang open source database at mayroong ilang mga bug.
5 Naipamahagi na gawain (mga kumpol)
Ang isang karaniwang senaryo para sa isang modernong SQL server ay isang kumpol ng ilang mga server. Ang pinakasimpleng opsyon ay kapag ang data ay isinulat sa isang server at binasa mula sa isang pangkat ng mga server. Sa kasong ito, maaari mong i-configure ang iba't ibang mga sitwasyon para sa pag-synchronize ng database sa pagitan ng mga SQL server.
6 Sharding
Kapag mayroong maraming data, nagsisimula silang hatiin sa iba't ibang mga database. Hanggang sa katotohanan na ang isang talahanayan ay maaaring maimbak sa mga bahagi sa iba't ibang mga database.
Ang shading ay maaaring patayo at pahalang. Vertical sharding ay nangangahulugan na ang talahanayan ay, kumbaga, pinutol ng mga patayong linya, habang ang pahalang na sharding ay pinuputol sa pahalang.
Halimbawa, nagpasya kaming hatiin ang lahat ng data sa talahanayan ayon sa mga taon: para sa 2019 - isang talahanayan, para sa data ng 2020 - ang pangalawa, at iba pa. Ito ay magiging pahalang na sharding.
7 itulak ang di-tulak
Sa isang tiyak na yugto sa pagbuo ng mga database, parami nang parami ang lohika ng negosyo ay nagsimulang idagdag sa kanila. Nagsimula ang lahat sa mga pamamaraan, pag-andar, pagbuo ng mga web page ng mga server, at nagtapos sa pagdaragdag ng suporta para sa halos lahat ng tanyag na wika sa DBMS: Python, JavaScript, at maging ang Java at C ++.
Malamig ang tunog hanggang sa magsimula ka sa pagkuha sa mga detalye: gusto mo ba talagang isulat ang iyong web application business logic sa Java, na isasagawa sa loob ng isang SQL server, kung saan walang JDK, java library, frameworks, maliit na memorya at maraming iba pang mga paghihigpit?