1.1 Lektsiyalarni tuzish prinsipi
Biz sen bilan ma'lumotlar bazalari bilan tanishishni pastdan boshladik. Bu mening o'quvchilarni o'qitishdagi shaxsiy yondashuvimning o'ziga xosligi. Yangi mavzular haqida gapirganda, men har doim avval amalda qanday qilib foydalanish kerakligini tushuntiraman. Va men bilganimda, odam ularni ishlata olishini bilaman, qanday qilib bepul ishlashini tushuntirishni boshlayman.
Bu yondashuvning bir nechta sabablari bor, lekin asosiy narsa shundaki, o'qish jarayonida eng qimmatli va eng kam resurs talabasi motivatsiyasidir.
Bu yondashuv maktab va oliy o'quv yurtlarida urf bo'lganimizdan biroz farq qiladi. Lekin u erda hamma narsa tushunarli: agar siz maktab yoki oliy o'quv yurtida tahsil olsangiz, sizning ustuvorliklaringiz to'g'ri: o'qish - bu bemalol eng muhim narsa.
Agar siz kattalar yoshida avto-o'qish bilan shug'ullanayotgan bo'lsangiz, ko'pincha o'qishni ish, uy ishlari, bolalarni yoki keksa ota-onalarni parvarishlash bilan birlashtirishga to'g'ri keladi. Va bu erda tez-tez o'qish birinchi ustuvor bo'lmasligi mumkin.
Bir narsa ustuvorliklarda. Startaperlar olamida hatto "Fail Fast, iloji boricha tezroq muvaffaqiyatsizlikka uchrash" degan bir tushuncha ham mavjud. Bu g'alati tuyuladi, lekin aslida bu juda ko'p ma'noga ega: startaperni vazifasi - o'z gipotezasini tezda tekshirish. Agar u noto'g'ri bo'lsa, unga yillar sarflashning hojati yo'q, yaxshisi imkon qadar tezroq tushunish kerak, qaysi xizmat yoki mahsulotga talab yo'q.
Java va SQL o'qitishda men xuddi shunday yondashuvdan foydalanaman: men imkon qadar tezroq tushunish imkoniyatini beraman, programmalashdan zavqlanasizmi yoki yo'qmi. Agar siz zavqlansangiz va sizga programmalash yoqsa, va o'zingiz tsikllar va massivlar bilan ishlashni tushuna oldingiz, mentorlar va to'g'ri tuzilgan dastur yordamida sizda o'qishni tugatish va ish topish imkoniyati mavjud.
Lekin, boshqa bir fakt ham muhim: bir necha dam olish kunida siz programmalash sizniki emasligini tushunishingiz mumkin. Bu sizni qiziqtirolmasligi mumkin, va bu normal holatda. Demak, unga hayotingizning bir necha oyini sarflashning hojati yo'q.
Faqatgina 40% bitiruvchilar o'zlarining oliy ma'lumotlari bo'yicha ishlamoqda. Fikirlab ko'ring, odamlar 5-6 yil tahsil oldilar va ularning 60%i o'zlari tanlagan soha bo'yicha ishlamaslikni qaror qildilar. Ha, qisman olingan bilimlar hali ham foydalanilmoqda, lekin taxminan yarmi yo'q.
Bu esa Fail Fast kontseptsiyasining qadrli - qachon o'zingizga yetishmovchi bir kasbning, bir kishining yoki bir hobbining sizniki emasligini imkon qadar tezroq tushunish va ularga vaqtingiz bilan kuchingizni sarflashmaslikdir. Uzoq muddatda bu juda yaxshi strategiya.
1.2 SQL va hamma, hamma, hamma narsalar
Falsafiy kirishga tugatdik, SQL o'rganishga qaytamiz.
SQL va DBMS bir-biriga o'xshash narsa emas. O'zi SQL tili - bu qanday qilib SQL so'rovlarini ma'lumotlar bazalari bilan yozish mumkinligini tasvirlab beradigan bir standartdir. DBMS esa shu standartning amalga oshirishlari. Ba'zi bir DBMS bitta standartning imkoniyatlarini amalga oshiradi, boshqa biri esa boshqa imkoniyatlarni va hokazo.
Qancha qimmatroq DBMS bo'lsa, u hamma standartlarning imkoniyatlarini amalga oshiradi. Ko'p ham DBMSlar o'zlarining o'ziga xos imkoniyatlarini SQL standartlaridan tashqarida amalga oshiradilar. Ba'zan bu transport imkoniyatlari bilan muammolarga olib keladi: bir DBMS uchun yozilgan SQL so'rovlar boshqa DBMSda yomon ishlashi mumkin.
Java ham shunga o'xshash vaziyatga ega. Agar bir Java dasturi Windowsda yozilgan bo'lsa, u Linuxda yaxshi ishlamasligi mumkin. Bu muammoni hal qilish uchun Java turli operatsion tizimlar uchun turlicha amalga oshirilgan maxsus sinflar kiritadi. Misol: Path sinfi, u WindowsPath, LinuxPath va hokazolarni amalga oshiradi.
Ikkinchi qism muammosini esa versiyalash bilan hal qilishadi. Har xil tillar yoki DBMSlardan muvaffaqiyatli yangiliklar yangi JDK yoki SQL standartiga qo'shiladi. Sen allaqachon, JDKning turli versiyalari borligini bilasan va qanchalik yangi bo'lsa, unda ko'proq imkoniyatlar mavjud. SQL bilan ham xuddi shu narsa.
SQL tilida uning standarti bir nechta versiyalari mavjud, ular yillarga qarab ataladi:
- SQL:1999
- SQL:2003
- SQL:2006
- SQL:2011
- SQL:2016
- SQL:2019
Yaxshi yangilik: bu standartlarni o'rganmaymiz. Birinchidan, bularning hammasini o'rganish va egallash uchun yillar kerak bo'ladi. Ikkinchidan, bu standartlar Android versiyalariga o'xshaydi: faqat chiqarilganidan 5-10 yil o'tgach, standarti keng tarqalgan bo'ladi.
Ma'lumotlar bazalarida katta hajmdagi ma'lumotlar bilan ishlashda odamlar ishonchlilik va barqarorlikni istaydilar. "Ishlaydi - tegmang" — bu ma'lumotlar bazalari bilan ishlovchilar uchun shior. Ma'lumotlar bazalari yangi versiyasiga o'tish har 5 yilda amalga oshiriladi, bunday qarorning afzalliklari allaqachon aniq bo'lganda.
1.3 Tashqarida qoldirildi
Yuqorida aytib o'tganimdek, ma'lumotlar bazalari sohasida mutaxassis bo'lish uchun yillar kerak bo'ladi. Mutaxassis ko'p narsalarni biladi, biz bu ma'lumotlarni o'rganmaymiz. Ammo ma'lumotlar bazalarida yana nimalar borligi haqida men biroz aytib o'taman.
Deyarli barcha zamonaviy ma'lumotlar bazalari quyidagi narsalarni qo'llab-quvvatlaydi:
1 Procedural Language (PL)
DBMS SQL-serverda bajariladigan va so'rovlar vaqtida ma'lumotlar bilan ko'p narsalarni amalga oshiradigan protsedura va funktsiyalar yozish imkoniyatini qo'llab-quvvatlaydi. Masalan, men bir vaqtlar Oracle serveriga PL SQLda so'rovlar yozardim, u esa so'rovga javoban HTML sahifasini ma'lumotlar bilan yaratardi. Ha, shunday ham qilish mumkin.
2 Tadbirlar (Triggers)
Hozirgi zamonaviy DBMS tadbirlar mexanizmini qo'llab-quvvatlaydi, ular SQL tilida triggerlar deb ataladi. Trigger biror harakatga javoban paydo bo'ladi. Masalan, ma'lumotlar bazasiga yozib olishga bo'lgan barcha urinishlarni tutish va ularni o'zgartirishning aniq vaqtini yangi qatorlarga qo'shish mumkin.
3 Jurnalizatsiya (log)
Zamonaviy ma'lumotlar bazalari juda tez ishlashga harakat qiladi, shuning uchun ko'pincha barcha o'zgarishlar (yangi qatorlar, o'chirilgan, o'zgartirilgan) dastlab maxsus faylga, jurnalga yozib boriladi. Va SQL-server faqat bir muncha vaqt o'tgach, bu yozuvlarni asosiy ma'lumotlar bazasi bilan birlashtiradi.
Bu Java'dagi Garbage Collector xatti-harakatiga o'xshash: u ham dastlab ob'ektlarni o'chirilgan sifatida belgilaydi, va tanaffuslar davrida tozalash va xotirani optimallashtirish ishlari amalga oshiriladi.
4 Kengaytmalar (Plugins)
DBMSda, boshqa ko'plab dasturlar kabi, o'z plaginlaringizni yozishingiz mumkin. Bunday plaginlar maxsus ma'lumotlar turlari qo'shish, ular bilan ishlash uchun funktsiyalar qo'shish yoki DBMSning standart xatti-harakatlarini o'zgartirish imkonini beradi. Bu ochiq manba kodi bo'lgan DBMSda ba'zi xatolar mavjud bo'lsa, ayniqsa foydali bo'lishi mumkin.
5 Ta'sirli ishlash (klyasterlar)
Hozirgi zamonaviy SQL-serverining odatiy ishlash senariysi bir nechta serverlardan iborat klyasterdir. Eng oddiy variant - ma'lumotlar bitta serverga yoziladi, va serverlar guruhidan o'qiladi. Shu bilan birga, SQL-serverlar o'rtasida ma'lumotlar bazalarini sinxronizatsiya qilishning turli senariylarini sozlash mumkin.
6 Sharding
Ma'lumot juda ko'p bo'lsa, ularni turli ma'lumotlar bazalariga bo'lishni boshlaydilar. Bir jadval hatto turli ma'lumotlar bazalarida qismga bo'linishi mumkin.
Sharding vertikal va gorizontal bo'lishi mumkin. Vertikal sharding jadvalni go'yo vertikal chiziqlarga bo'lishni, gorizontal esa gorizontaliga bo'lishni anglatadi.
Masalan, biz jadvaldagi barcha ma'lumotlarni yillarga bo'lishga qaror qildik: 2019 yil ma'lumotlari uchun bir jadval, 2020 yil ma'lumotlari uchun ikkinchi va hokazo. Bu gorizontal sharding bo'ladi.
7 Qo'shilmaydi, lekin qo'shildi
Ma'lumotlar bazalarining ma'lum bir rivojlanish bosqichida ularga tobora ko'proq biznes mantiq qo'shilishni boshladi. Hammasi protsedura, funktsiyalar, serverlar tomonidan veb-sahifalarni yaratish bilan boshlangan va DBMSga deyarli barcha mashhur tillar: Python, JavaScript, hatto Java va C++ qo'shilishi bilan tugadi.
Bu ma'lumotlar juda salqin, tafsilotlarni o'rganishni boshlamaguningizcha: siz haqiqatan ham veb-ilovangizning biznes mantiqini JDK bo'lmagan, java-kutubxonalar, frameworklar, kam xotirali va ko'plab cheklovlar mavjud bo'lgan SQL-server ichida Java'da yozishni xohlaysizmi?
GO TO FULL VERSION