1.1 Лекциялардың құрылу принципі
Біз сенімен дерекқорлармен төменнен бастап таныстық. Бұл менің адамдарды оқытудағы жеке әдісімнің ерекшелігі. Жаңа тақырыптар туралы айтқанда, әрдайым алдымен құралдарды практикада қалай пайдалануға болатынын айтып беремін. Және мен адамның оларды қолдана білетінін білген кезде, бәрінің қалай жұмыс істейтінін түсіндіре бастаймын.
Бұл әдістің бірнеше себебі бар, бірақ негізгісі - оқу үдерісіндегі ең құнды және ең жетіспейтін ресурс - студенттің мотивациясы.
Бұл әдіс мектептер мен жоғары оқу орындарында қолданылатын әдеттегі әдістен сәл өзгеше. Бірақ ол жақта бәрі түсінікті: мектепте немесе жоғары оқу орнында білім алып жүргенде, басымдықтар дұрыс қойылған: оқу - өмірдегі ең маңызды нәрсе сол кезде.
Егер сен ересек жаста өз бетіңмен білім алсаң, онда көбіне оқуды жұмыс, үй шаруалары, балаларға немесе егде жастағы ата-аналарға қамқорлықпен үйлестіруге тура келеді. Ал бұл жағдайда оқу бірінші басымдық болмауы мүмкін.
Мәселе дәл басымдықтарда. Стартап әлемінде осындай концепция бар - Fail Fast, мүмкіндігінше тез сәтсіздікке ұшырау. Қызық естіледі, бірақ шындығында оның көптеген мағынасы бар: стартапердің міндеті - гипотезасын тез тексеру. Егер ол дұрыс болмаса, онда оған өмірінің жылдарын жұмсамауы керек, оның орнына белгілі бір қызметке немесе өнімге сұраныс жоқ екенін мүмкіндігінше ерте түсіну керек.
Java және SQL оқу кезінде мен сол әдісті қолданамын: сенің бағдарламалаудан ләззат алып немесе алмайтыныңды мүмкіндігінше ертерек түсінуге мүмкіндік беремін. Егер ләззат алсаң, саған бағдарламалау ұнап, циклдармен және массивтермен жұмыс істеуді өз бетіңше шешкен болсаң, онда менторлардың көмегімен және жақсы ұйымдастырылған бағдарламамен оқуды аяқтап, жұмыс табуға барлық мүмкіндігің бар.
Бірақ басқа да маңызды факт - бірнеше демалыс күндерінің ішінде бағдарламалау саған ұнамайтынын түсінуің мүмкін. Ол сен үшін қызықсыз болуы мүмкін, және бұл қалыпты жағдай. Яғни, оған өміріңнің айларын жұмсаудың қажеті жоқ.
Жоғары білім алған түлектердің тек 40%-ы мамандығы бойынша жұмыс істейді. Ойланшы, адамдар 5-6 жыл оқыды, ал олардың 60%-ы сол мамандық бойынша жұмыс істемеуге шешім қабылдады. Иә, алынған білімнің бір бөлігі бәрібір қолданылады, бірақ жартысына жуығы қолданылмайды.
Fail Fast концепциясының құндылығы дәл осы - белгілі бір мамандықтың, адамның немесе хоббидің саған сай келмейтінін мүмкіндігінше ерте түсіну. Уақыт пен күшін оларға жұмсамау. Ұзақ мерзімді перспективада бұл өте жақсы стратегия.
1.2 SQL және тағы да басқалары
Философиялық кіріспе аяқталды, SQL оқуға ораламыз.
SQL тілі мен СУБД - бұл сәл өзгеше нәрселер. Өзі SQL тілі - бұл белгілі бір стандарт, ол дерекқорға SQL-сұрауларында не жазуға болатынын сипаттайды. СУБД - бұл осы стандарттың жүзеге асырылуы. Бір СУБД стандарттың бір функцияларын жүзеге асырады, екіншісі - басқаларын және т.б.
СУБД неғұрлым қымбатырақ болса, ол стандарттың мүмкіндіктерін соғұрлым көп жүзеге асырады. Солай-ақ көптеген СУБД жиі стандарттан тыс өздерінің бірегей мүмкіндіктерін жүзеге асырады. Кейде бұл тасымалдау мәселелеріне әкеледі: бір СУБД-ға арналған SQL сұраулары басқа СУБД-да нашар жұмыс істейді.
Java-да да осындай жағдай бар. Егер Java бағдарламасы Windows үшін жазылса, онда ол Linux-та қалыпты жұмыс істемейді. Бұл мәселені шешу үшін, Java-да әр түрлі операциялық жүйелерге арналған әртүрлі іске асырылулары бар арнайы кластар енгізіледі. Мысалы: Path класы, ол WindowsPath, LinuxPath және т.б. іске асырылулары бар.
Мәселенің екінші бөлігі нұсқалаумен шешіледі. Әртүрлі тілдер немесе СУБД-дан алынған сәтті жаңалықтар жаңа JDK немесе SQL стандартына қосылады. Сенде білесің, JDK-ның әртүрлі нұсқалары бар, және нұсқа жаңарақ болса, онда көбірек функциялар бар. SQL тілімен де солай.
SQL тілінің оның стандарттарының бірнеше нұсқалары бар, олар жылдар бойынша аталады:
- SQL:1999
- SQL:2003
- SQL:2006
- SQL:2011
- SQL:2016
- SQL:2019
Жақсы жаңалық: біз бұл стандарттарды оқымаймыз. Біріншіден, мұның бәрін оқып, меңгеруге жылдар қажет болады. Екіншіден, бұл стандарттар - Android нұсқалары сияқты: шыққаннан кейінгі 5-10 жыл өткен соң ғана стандарт жаппай таралған болады.
Дерекқорларда үлкен деректер көлемдері бар кезде адамдарға сенімділік пен тұрақтылық қажет. "Жұмыс істейді - тиме" - бұл дерекқорлармен жұмыс істейтіндердің девизі. Жаңа дерекқорлар нұсқасына көшу 5 жылда бір рет, мұндай шешімнің барлық артықшылықтары қазірдің өзінде айқын болғанда ғана жүзеге асырылады.
1.3 Скобкалардың артында
Мен жоғарыда айтқанымдай, дерекқорлар саласында кәсіби болу үшін жылдар қажет. Мамандар біз оқымайтын көптеген нәрселерді біледі. Бірақ дерекқорларда тағы не бар екенін сәл айтып беремін.
Қазіргі заманғы барлық дерекқорлар қолдайды:
1 Procedural Language (PL)
СУБД-де SQL-серверде орындалатын және сұраулар кезінде деректермен көп нәрсе жасай алатын процедуралар мен функцияларды жазу мүмкіндігі бар. Мысалы, мен бір кездері Oracle серверіне PL SQL сұраныстарын жазып, сұрауға жауап ретінде мәліметтері бар HTML-бетті генерировал... Иә, солай да болады.
2 Оқиғалар (Triggers)
Барлық заманауи СУБД-лер SQL тілінде триггерлер деп аталатын оқиғалар механизмін қолдайды. Триггер қандай да бір әрекетке жауап ретінде пайда болады. Мысалы, дерекқорға жазу әрекеттерінің барлығын ұстап, жаңа жолдарға олардың өзгеру уақытын нақты уақытпен қосуға болады.
3 Журналирлеу (log)
Қазіргі дерекқорлар өте жылдам жұмыс істеуге тырысуда, сондықтан да барлық өзгертулер (жаңа жолдар, жойылған, өзгертілген) алдымен арнайы файлға, журналға жазылады. Және белгілі бір уақыт өткеннен кейін ғана SQL-сервер осы жазбаларды негізгі дерекқормен біріктіреді.
Бұл бір жағынан Java-дағы Garbage Collector-дың мінезіне ұқсайды: ол алдымен объектілерді жойылған деп белгілейді, және бос уақытында жадыны тазарту және оңтайландыру жүргізеді.
4 Кеңейтімдер (Plugins)
Көптеген бағдарламалар сияқты СУБД-лерге де өз плагиндерін жазуға болады. Мұндай плагиндер уникалды деректер түрлерін, олармен жұмыс жасау үшін функцияларды қосуға, немесе СУБД-нің стандартты мінезін өзгертуге мүмкіндік береді. Бұл әсіресе ашық кодты СУБД-лермен жұмыс істегенде пайдалы болады, егер де сол жерде қандай да бір ақаулар болса.
5 Таралған жұмыс (кластерлер)
Қазіргі заманғы SQL-сервердің типтік жұмыс сценарийі - бұл бірнеше серверлерден тұратын кластер. Ең қарапайым нұсқа - деректер бір серверге жазылады, ал оқу бірнеше серверлер тобынан жүргізіледі. Сонымен қатар SQL-серверлер арасындағы дерекқорларды синхрондаудың түрлі сценарийлерін реттеуге болады.
6 Шардирование
Деректер өте көп болғанда, олар әртүрлі дерекқорларға бөлінеді. Тіпті бір кесте әртүрлі дерекқорларда бөліктерде сақталуы мүмкін.
Шардирование вертикалды және горизонталды болады. Вертикалды шардирование кестені вертикал сызықтармен кескендей болады, ал горизонталды - горизонтал сызықтармен.
Мысалы, біз кестедегі барлық деректерді жылдарға бөлуге шешім қабылдадық: 2019 жылға бір кесте, 2020 жылға арналған екінші кесте және т.с.с. Бұл горизонталды шардирование болады.
7 Невпихуемое впиху
Дерекқорлардың даму кезеңінде оларға көбірек бизнес логикасын қосуға басталды. Барлығы процедуралардан, функциялардан, серверлер арқылы web-беттер жасауынан басталды, соңы СУБД-ға Python, JavaScript, Java және тіпті C++ сияқты барлық танымал тілдердің қолдауы қосылуымен аяқталды.
Бұл керемет естіледі, бірақ детальдарды үйрене бастағанда: сен шынымен өз веб-қосымшаңның бизнес логикасын SQL-сервер ішінде орындау үшін жазғың келе ме, онда JDK, java-библиотекалар, фреймворктар жоқ, аз жады бар және тағы басқа көптеген шектеулер бар ма?
GO TO FULL VERSION