Ma'lumotlar bazalarining mohiyati va tuzilishi. Relyatsion ma'lumotlar bazalari

Ma'lumotlar modeli bu ma'lumotlar tuzilmalari va ularni qayta ishlash operatsiyalari to'plamidir. Ma'lumotlar modeli yordamida siz ob'ektlarning tuzilishini va ular o'rtasida o'rnatilgan munosabatlarni tasavvur qilishingiz mumkin. Ma'lumotlar modellarining terminologiyasi "ma'lumotlar elementi" va "majburiy qoidalar" tushunchalari bilan tavsiflanadi. Ma'lumotlar elementi har qanday ma'lumotlar to'plamini tavsiflaydi va majburiy qoidalar ma'lumotlar elementlarining o'zaro bog'liqligi algoritmlarini belgilaydi. Bugungi kunga qadar ko'plab turli xil ma'lumotlar modellari ishlab chiqilgan, ammo amalda uchta asosiy modeldan foydalanilgan. Ma'lumotlarning ierarxik, tarmoq va relyatsion modellari farqlanadi. Shunga ko'ra, ular ierarxik, tarmoq va relyatsion DBMS haqida gapirishadi.

O ma'lumotlarning ierarxik modeli. Ierarxik ravishda tashkil etilgan ma'lumotlar kundalik hayotda juda keng tarqalgan. Masalan, oliy ta'lim muassasasining tuzilishi ko'p darajali ierarxik tuzilishdir. Ierarxik (daraxtga o'xshash) ma'lumotlar bazasi tartiblangan elementlar to'plamidan iborat. Ushbu modelda asl elementlar boshqa elementlarni hosil qiladi va bu elementlar o'z navbatida quyidagi elementlarni hosil qiladi. Har bir bolaning faqat bitta ota-onasi bor.

Tashkiliy jadvallar, materiallar ro'yxati, kitoblardagi tarkib, loyiha rejalari va boshqa ko'plab ma'lumotlar to'plamlari ierarxik tarzda taqdim etilishi mumkin. Ajdodlar va avlodlar o'rtasidagi aloqalarning yaxlitligi avtomatik ravishda saqlanib qoladi. Umumiy qoida bo'yicha, hech bir avlod ota-onasiz mavjud bo'lolmaydi.

Ushbu modelning asosiy kamchiliklari - bu loyihalash paytida ma'lumotlar bazasi asosida yotgan ierarxiyadan foydalanish zaruriyati. Ma'lumotlarni doimiy ravishda qayta tashkil etish zarurati (va ko'pincha bu qayta tashkil etishning iloji yo'qligi) yanada umumiy model - tarmoq yaratilishiga olib keldi.

Tarmoq ma'lumotlari modeli haqida. Ma'lumotlarni tartibga solishning tarmoq yondoshuvi bu ierarxik yondashuvning kengaytmasi. Ushbu model ieraxikadan farq qiladi, chunki har bir yaratilgan element bir nechta asosiy elementga ega bo'lishi mumkin. ■

Tarmoq ma'lumotlar bazasi to'g'ridan-to'g'ri tegishli tashkilot ma'lumotlariga xos bo'lgan barcha turdagi aloqalarni aks ettirishi mumkinligi sababli, ushbu ma'lumotlar navigatsiya qilinishi, o'rganilishi va so'ralishi mumkin, ya'ni tarmoq modeli faqat bitta ierarxiya bilan bog'lanmagan. Biroq, tarmoq ma'lumotlar bazasiga so'rov yozish uchun uning tarkibiga chuqur kirib borish (ushbu ma'lumotlar bazasining sxemasi bo'lishi kerak) va ma'lumotlar bazasini boshqarish mexanizmini ishlab chiqish kerak, bu esa ushbu ma'lumotlar bazasining muhim kamchiligidir. model.

Ma'lumotlarning relyatsion modeli haqida. Ma'lumotlarning relyatsion modeli asosidagi asosiy g'oya har qanday ma'lumotlar bazasini ikki o'lchovli jadval sifatida ko'rsatishdir. Oddiy holatda, relyatsion model bitta ikki o'lchovli jadvalni tavsiflaydi, lekin ko'pincha ushbu model bir nechta turli jadvallar orasidagi tuzilma va munosabatlarni tavsiflaydi.

Ma'lumotlarning relyatsion modeli

Demak, axborot tizimining maqsadi qayta ishlashdir ma'lumotlarhaqida ob'ektlarberilgan haqiqiy dunyo ulanishlarob'ektlar o'rtasida. JB nazariyasida ma'lumotlar tez-tez chaqiriladi atributlari vaob'ektlar - sub'ektlar.Ob'ekt, atribut va aloqa I.S.ning asosiy tushunchalari.

Ob'ekt(yoki mavjudot) mavjud bo'lgan narsadir va tushunarli,ya'ni ob'ektni shu "narsa" deb atash mumkin, buning uchun ism va o'xshash bir ob'ektni boshqasidan farqlash usuli mavjud. Masalan, har bir maktab ob'ektdir. Ob'ektlar shuningdek, bu shaxs, maktabdagi sinf, firma, qotishma, kimyoviy birikma va boshqalar. Ob'ektlar nafaqat moddiy narsalar, balki haqiqiy dunyoni aks ettiruvchi yanada mavhum tushunchalar ham bo'lishi mumkin. Masalan, tadbirlar, mintaqalar, san'at asarlari; kitoblar (bosma mahsulotlar sifatida emas, balki asarlar sifatida), teatrlashtirilgan tomoshalar, filmlar; huquqiy normalar, falsafiy nazariyalar va boshqalar.

Xususiyat(yoki berilgan)- bu ob'ektni tavsiflovchi va ob'ektning ma'lum bir nusxasi uchun ma'lum bir raqamli, matnli yoki boshqa qiymatga ega bo'lgan ba'zi bir ko'rsatkich. Axborot tizimi o'ziga xos xususiyatlardan foydalanib, ma'lum bir mavzu sohasiga nisbatan ishlab chiqilgan ob'ektlar to'plami bilan ishlaydi atribut qiymatlari(ma'lumotlar) ba'zi ob'ektlar. Masalan, maktabdagi darslarni ob'ektlar to'plami sifatida ko'rib chiqamiz. Sinfdagi o'quvchilar soni berilgan qiymat bo'lib, u raqamli qiymatni oladi (bir sinfda 28, boshqasida 32 ta). Sinf nomi - bu matnli ma'noga ega bo'lgan (bitta 10A, ikkinchisida 9B va boshqalar mavjud).

Relyatsion ma'lumotlar bazalarini ishlab chiqish 1960 yillarning oxirlarida, muhokama qilingan birinchi hujjatlar paydo bo'lganda boshlandi; ma'lumotlar bazalarini loyihalashda ma'lumotlarni taqdim etishning tanish va tabiiy usullaridan foydalanish imkoniyati - jadvalli deb nomlangan jadvalli modellar.

Relyatsion ma'lumotlar bazalari nazariyasining asoschisi IBM xodimi, doktor E. Kodd hisoblanadi, u 6-iyun kuni (1970 yil iyun) maqolasini chop etdi. Katta ma'lumot almashadigan banklar uchun ma'lumotlarning relyatsion modeli(Katta jamoaviy ma'lumotlar banklari uchun ma'lumotlarning relyatsion modeli). Ushbu maqola birinchi navbatda "ma'lumotlarning relyatsion modeli" atamasidan foydalangan. 70-yillarda AQShda doktor E. Codd tomonidan ishlab chiqilgan relyatsion ma'lumotlar bazalari nazariyasi kuchli matematik asosga ega bo'lib, ma'lumotlarni samarali tashkil etish qoidalarini tavsiflaydi. E.Kodd tomonidan ishlab chiqilgan nazariy asos ma'lumotlar bazasini loyihalash nazariyasini rivojlantirish uchun asos bo'ldi.

E.Kodd, ma'lumoti bo'yicha matematik bo'lib, ma'lumotlarni qayta ishlash uchun to'plamlar nazariyasi apparati (birlashma, kesishma, farq, dekart mahsuloti) dan foydalanishni taklif qildi. U har qanday ma'lumotlarning to'plamini matematikada "munosabatlar" deb nomlanuvchi maxsus turdagi ikki o'lchovli jadvallar shaklida ifodalash mumkinligini isbotladi.

Aloqaviyma'lumotlar bazasi ko'rib chiqiladi, unda barcha ma'lumotlar foydalanuvchi uchun ma'lumotlar qiymatlarining to'rtburchaklar jadvallari ko'rinishida taqdim etiladi va ma'lumotlar bazasidagi barcha operatsiyalar jadvallarni manipulyatsiya qilishgacha qisqartiriladi.

Jadval quyidagilardan iborat ustunlar (maydonlar)va chiziqlar (yozuvlar);ma'lumotlar bazasida noyob bo'lgan nomga ega. Jadvalaks ettiradi ob'ekt turihaqiqiy dunyo (mohiyat),va uning har biri string ma'lum bir ob'ekt.Jadvaldagi har bir ustun ob'ektning ma'lum bir atributi uchun qiymatlar to'plamidir. Qadriyatlar deyiladi ob'ekt atributining barcha mumkin bo'lgan qiymatlari to'plamidan tanlanadi domen.

Uning umumiy ko'rinishida domen elementlari tegishli bo'lgan ba'zi bir asosiy ma'lumotlar turini va ma'lumotlar elementlariga qo'llaniladigan o'zboshimchalik bilan mantiqiy ifodani belgilash orqali aniqlanadi. Agar ma'lumotlar elementidagi mantiqiy holatni baholashda natija "to'g'ri" bo'lsa, unda ushbu element domenga tegishli. Oddiy holatda, domen bir xil turdagi qiymatlarning amaldagi potentsial to'plami sifatida aniqlanadi. Masalan, barcha xodimlarning tug'ilgan kunlari to'plami "tug'ilgan kunning domeni" ni, barcha xodimlarning ismlari esa "xodimlar nomi domenini" tashkil qiladi. Tug'ilgan domen sana vaqt bo'yicha ma'lumotni saqlash uchun ma'lumot turiga ega va xodim nomi domeni belgilar turi bo'lishi kerak.

Agar ikkita qiymat bitta domendan kelib chiqsa, unda siz ikkita qiymatni taqqoslashingiz mumkin. Masalan, agar ikkita qiymat tug'ilgan kunga tegishli bo'lsa, siz qaysi xodimning yoshi kattaligini aniqlash uchun ularni taqqoslashingiz mumkin. Agar qiymatlar turli xil domenlardan olingan bo'lsa, ularni taqqoslashga yo'l qo'yilmaydi, chunki, ehtimol, bu mantiqiy emas. Masalan, xodimning ismi va tug'ilgan kunini taqqoslashdan aniq bir narsa chiqmaydi.

Har bir ustunning (maydonning) nomi bor, u odatda jadvalning yuqori qismida yoziladi. Muayyan DBMS tarkibidagi jadvallarni loyihalashda uning har bir sohasi uchun tanlash mumkin turi,ya'ni uni namoyish qilish uchun bir qator qoidalarni belgilash, shuningdek ushbu sohada saqlanadigan ma'lumotlarda bajarilishi mumkin bo'lgan operatsiyalarni aniqlash. Turli xil ma'lumotlar bazalari uchun turkumlar turlicha bo'lishi mumkin.

Maydon nomi jadvalda yagona bo'lishi kerak, ammo har xil jadvallarda bir xil nomdagi maydonlar bo'lishi mumkin. Har qanday jadvalda kamida bitta maydon bo'lishi kerak; maydonlar jadvalda ularni yaratilish paytidagi nomlariga muvofiq joylashtirilgan. Maydonlardan farqli o'laroq, satrlarning nomlari yo'q; ularning jadvaldagi tartibi aniqlanmagan va ularning soni mantiqan cheklanmagan.

Jadvaldagi qatorlar buyurtma qilinmaganligi sababli, uning pozitsiyasi bo'yicha qatorni tanlash mumkin emas - ular orasida "birinchi", "ikkinchi", "oxirgi" yo'q. Har qanday jadvalda bitta yoki bir nechta ustunlar mavjud bo'lib, ularning qiymatlari uning har bir satrini o'ziga xos tarzda aniqlaydi. Bunday ustun (yoki ustunlar birikmasi) deyiladi asosiy kalit... Sun'iy maydon ko'pincha jadvaldagi yozuvlar bilan tanishtiriladi. Bunday maydon, masalan, jadvaldagi har bir yozuvning o'ziga xosligini ta'minlashi mumkin bo'lgan tartibli bo'lishi mumkin. Kalit quyidagi xususiyatlarga ega bo'lishi kerak.

O'ziga xoslik.Vaqtning istalgan lahzasida, aloqaning ikkita har xil naychalari kalitga kiritilgan atributlarning kombinatsiyasi uchun bir xil qiymatga ega emas. Ya'ni, jadvalda identifikatsiya raqami yoki pasport raqami bir xil bo'lgan ikkita satr bo'lishi mumkin emas.

Minimallik.Kalitga kiritilgan atributlarning hech biri o'ziga xoslikni buzmasdan kalitdan chiqarib tashlanishi mumkin emas. Bu shuni anglatadiki, pasport raqamini ham, identifikatsiya raqamini ham o'z ichiga olgan kalitni yaratish kerak emas. Koreysni noyob tarzda aniqlash uchun ushbu atributlardan birini ishlatish kifoya. Shuningdek, siz kalitga noyob bo'lmagan atributni kiritmasligingiz kerak, ya'ni kalit sifatida identifikatsiya raqami va xodim ismining kombinatsiyasidan foydalanish taqiqlanadi. Xodimning ismini kalitdan chiqarib, siz hali ham har bir qatorni noyob tarzda aniqlashingiz mumkin.

Har bir munosabat kamida bitta mumkin bo'lgan kalitga ega, chunki uning barcha xususiyatlarining umumiyligi o'ziga xoslik shartini qondiradi - bu munosabat ta'rifidan kelib chiqadi.

Mumkin bo'lgan kalitlardan biri tasodifiy tanlangan asosiy kalit sifatida.Agar mavjud bo'lsa, boshqa mumkin bo'lgan kalitlar sifatida qabul qilinadi muqobil kalitlar.Masalan, identifikatsiya raqamini asosiy kalit sifatida tanlasangiz, u holda pasport raqami muqobil kalit bo'ladi.

Jadvallarning o'zaro bog'liqligi ma'lumotlarning relyatsion modelining muhim elementidir. U qo'llab-quvvatlanadi chet el kalitlari.

Ma'lumotlar bazasi modelini tavsiflashda tavsiflash darajasi (nazariya yoki amaliyot) va tizimga (Access, SQL Server, dBase) qarab, bir xil tushuncha uchun ko'pincha turli xil atamalardan foydalaniladi. Jadval 2.3 ishlatilgan atamalarni umumlashtiradi.

2.3-jadval.Ma'lumotlar bazasi terminologiyasi

Ma'lumotlar bazasi nazariyasi ____________ Relatsion ma'lumotlar bazalari _________ SQL Server __________

Aloqalar jadvali jadvali

Tuple yozuvlar qatori

Xususiyat (maydon) _______________ Ustun yoki ustun

Relyatsion ma'lumotlar bazalari

Relyatsion ma'lumotlar bazasima'lumotlar bazasida saqlanishi kerak bo'lgan barcha ma'lumotlarni o'z ichiga olgan munosabatlar to'plamidir. Ya'ni ma'lumotlar bazasi barcha ma'lumotlarni saqlash uchun zarur bo'lgan jadvallar to'plamini aks ettiradi. Ma'lumotlar bazasining relyatsion jadvallari mantiqan bog'liqdir. Relyatsion ma'lumotlar bazasini loyihalashga qo'yiladigan talablar bir nechta qoidalarda umumlashtirilishi mumkin.

O Har bir jadval ma'lumotlar bazasida o'ziga xos nomga ega va bir xil turdagi qatorlardan iborat.

O har bir jadval belgilangan sonli ustunlar va qiymatlardan iborat. Bir nechta qiymatlarni satrning bitta ustunida saqlash mumkin emas. Masalan, muallif, nashr etilgan sana, tiraji va boshqalar to'g'risidagi ma'lumotlar mavjud jadval mavjud bo'lsa, unda muallifning ismi ko'rsatilgan ustun bir nechta familiyani o'z ichiga olmaydi. Agar kitob ikki yoki undan ortiq muallif tomonidan yozilgan bo'lsa, qo'shimcha jadvallardan foydalanishingiz kerak bo'ladi.

O Vaqtning hech bir qismida jadvalda bir-birini takrorlaydigan ikkita qator bo'lmaydi. Jadvaldagi istalgan qatorni noyob tarzda aniqlash uchun qatorlar kamida bitta qiymat bilan farq qilishi kerak.

O har bir ustunga jadval ichida noyob nom beriladi; u uchun bir xil qiymatlar (sana, familiya, telefon raqamlari, pul summasi va boshqalar) joylashtirilishi uchun ma'lum bir ma'lumot turi o'rnatiladi.

O ma'lumotlar bazasining to'liq axborot tarkibi ma'lumotlarning aniq qiymatlari ko'rinishida taqdim etiladi va ushbu taqdim etish usuli yagona hisoblanadi. Masalan, jadvallar o'rtasidagi munosabatlar sun'iy ravishda munosabatlarni aniqlaydigan har qanday ko'rsatgichlar asosida emas, balki tegishli ustunlarda saqlangan ma'lumotlarga asoslanadi.

O Ma'lumotlarni qayta ishlashda siz jadvalning istalgan qatoriga yoki ustunlariga bemalol murojaat qilishingiz mumkin. Jadvalda saqlangan qiymatlar ma'lumotlarga kirish tartibida hech qanday cheklovlar qo'ymaydi. Ustun tavsifi,

MUNOSABATLAR BILAN BAZASI VA UNING XUSUSIYATLARI. MUNOSABATLI JADVALLAR O'rtasidagi aloqalarning turlari

Relyatsion ma'lumotlar bazasi o'zaro bog'liq jadvallar to'plamidir, ularning har biri ma'lum bir turdagi ob'ektlar to'g'risidagi ma'lumotlarni o'z ichiga oladi. Jadval qatorida bitta ob'ekt (masalan, mahsulot, xaridor) to'g'risidagi ma'lumotlar mavjud bo'lib, jadval ustunlari ushbu ob'ektlarning turli xil xususiyatlarini - atributlarini (masalan, ism, mahsulot kodi, mijoz ma'lumotlari) tavsiflaydi. Yozuvlar, ya'ni jadval satrlari bir xil tuzilishga ega - ular ob'ekt atributlarini saqlaydigan maydonlardan iborat. Har bir maydon, ya'ni ustun, ob'ektning faqat bitta xususiyatini tavsiflaydi va qat'iy belgilangan ma'lumotlar turiga ega. Barcha yozuvlar bir xil maydonlarga ega, faqat ular ob'ektning turli xil ma'lumot xususiyatlarini aks ettiradi.

Relyatsion ma'lumotlar bazasida har bir jadvalda asosiy kalit bo'lishi kerak - jadvaldagi har bir satrni noyob tarzda aniqlaydigan maydon yoki maydonlarning kombinatsiyasi. Agar kalit bir nechta maydonlardan iborat bo'lsa, u kompozit kalit deb ataladi. Kalit noyob bo'lishi kerak va yozuvni noyob tarzda aniqlaydi. Bitta yozuvni topish uchun asosiy qiymatdan foydalanish mumkin. Ma'lumotlar bazasidagi ma'lumotlarni tartibga solish uchun kalitlardan ham foydalaniladi.

Ma'lumotlar bazasi jadvallari aloqalarni normallashtirish talablariga javob berishi kerak. O'zaro munosabatlarni normallashtirish - bu jadvallarni shakllantirish bo'yicha rasmiy cheklashlar apparati, bu takrorlanishni yo'q qiladi, ma'lumotlar bazasida saqlanadiganlarning izchilligini ta'minlaydi va ma'lumotlar bazasini saqlash uchun mehnat xarajatlarini kamaytiradi.

Quyidagi maydonlarni o'z ichiga olgan talaba jadvali tuzilsin: guruh raqami, familiyasi, talaba raqami, tug'ilgan sanasi, ixtisoslashuvi, fakultet nomi. Axborotni saqlashning bunday tashkil etilishi bir qator kamchiliklarga ega bo'ladi:

  • ma'lumotlarning takrorlanishi (mutaxassislik va fakultet nomi har bir talaba uchun takrorlanadi), shuning uchun ma'lumotlar bazasi hajmi oshadi;
  • jadvaldagi ma'lumotlarni yangilash tartibi har birini tahrirlash zarurati tufayli qiyinjadval yozuvlari.

Jadvalni normallashtirish ushbu kamchiliklarni bartaraf etish uchun mo'ljallangan. U yerda munosabatlarning uchta normal shakli.

Birinchi normal shakl. Relyatsion jadval birinchi normal shaklga tushiriladi, agar uning satrlari hech birida uning biron bir maydonida bir nechta qiymat mavjud bo'lmasa va uning asosiy maydonlarining hech biri bo'sh bo'lmasa. Shunday qilib, agar talabalar jadvalidan talabaning ismi bo'yicha ma'lumot olish zarur bo'lsa, unda to'liq ism maydonini familiya, ism, otaning ismi qismlariga bo'lish kerak.

Ikkinchi normal shakl... Relyatsion jadval birinchi normal shakl talablariga javob beradigan bo'lsa va uning asosiy kalitiga kiritilmagan barcha maydonlari birlamchi kalitga to'liq bog'liq bo'lsa, ikkinchi normal shaklda ko'rsatiladi. Jadvalni ikkinchi normal shaklga keltirish uchun maydonlarning funktsional bog'liqligini aniqlash kerak. Maydonlarning funktsional bog'liqligi bu bog'liqlikdir, chunki axborot ob'ekti misolida tavsiflovchi atributning faqat bitta qiymati kalit atributining ma'lum bir qiymatiga to'g'ri keladi.

Uchinchi normal shakl. Jadval uchinchi normal shaklda, agar u ikkinchi normal shakl talablariga javob bersa, uning biron bir asosiy bo'lmagan maydonlari funktsional jihatdan boshqa biron bir asosiy bo'lmagan maydonga bog'liq emas. Masalan, Talabalar jadvalida (guruh raqami, to'liq ismi, sinf kitobi raqami, tug'ilgan sanasi, starosta) uchta maydon - sinf daftarchasi raqami, guruh raqami, starosta o'tish davri munosabatlarida. Guruh raqami baho kitobi raqamiga, Sardor esa guruh raqamiga bog'liq. Tranzitiv qaramlikni bartaraf etish uchun talabalar jadvali maydonlarining bir qismini boshqa jadvallar guruhiga o'tkazish kerak. Jadvallar quyidagi shaklda bo'ladi: talaba (guruh raqami, ism-sharifi, sinf kitobi raqami, tug'ilgan sanasi), guruh (guruh raqami, sardor).

Relyatsion jadvallarda quyidagi operatsiyalarni bajarish mumkin:

  • Xuddi shu tuzilishga ega jadvallarni birlashtirish. Natijada umumiy jadval paydo bo'ladi: birinchi navbatda birinchi, so'ngra ikkinchisi (birikma).
  • Xuddi shu tuzilishga ega jadvallarning kesishishi. Natija - ikkala jadvalda joylashgan yozuvlar tanlanadi.
  • Xuddi shu tuzilishga ega jadvallarni olib tashlash. Natija - olib tashlanmagan yozuvlar tanlanadi.
  • Namuna (gorizontal ichki qism). Natija - ma'lum shartlarga javob beradigan yozuvlar tanlanadi.
  • Proektsiya (vertikal to'plam). Natijada, dastlabki jadvallardan ba'zi maydonlarni o'z ichiga olgan munosabatlar paydo bo'ladi.
  • Ikki jadvalning dekartiyaviy mahsuloti Natijada jadvalning yozuvlari birinchi jadvalning har bir yozuvini va boshqa jadvalning har bir yozuvini birlashtirish orqali olinadi.

Relyatsion jadvallar bir-biri bilan bog'liq bo'lishi mumkin, shuning uchun ma'lumotlarni bir vaqtning o'zida bir nechta jadvallardan olish mumkin. Oxir oqibat ma'lumotlar bazasi hajmini kamaytirish uchun jadvallar bir-biriga bog'langan. Har bir juft jadvalning o'zaro bog'liqligi, agar ular bir xil ustunlarga ega bo'lsa.

Axborot havolalarining quyidagi turlari mavjud:

  • birdan bittaga;
  • birdan ko'p;
  • ko'p-ko'p.

Yakkama-yakka muloqot birinchi jadvalning bitta atributi ikkinchi jadvalning faqat bitta atributiga mos keladi va aksincha.

Birdan ko'pga munosabatlarbirinchi jadvalning bitta atributi ikkinchi jadvalning bir nechta atributlariga mos kelishini taxmin qiladi.

Ko'pdan ko'plarga munosabatlar birinchi jadvalning bitta atributi ikkinchi jadvalning bir nechta atributlariga mos keladi va aksincha.

  • Transfer
Tarjimonning eslatmasi: maqola ancha eski bo'lsa-da (2 yil oldin nashr etilgan) va baland ovoz bilan sarlavhaga ega bo'lsa ham, ma'lumotlar bazalari va NoSQL ma'lumotlar bazalari o'rtasidagi farqlar, ularning afzalliklari va kamchiliklari to'g'risida yaxshi fikr beradi, shuningdek qisqacha ma'lumot beradi. aloqasiz saqlash.

So'nggi paytlarda juda ko'p aloqasiz ma'lumotlar bazalari paydo bo'ldi. Bu shuni ko'rsatadiki, agar siz talabga binoan deyarli cheksiz o'lchovni xohlasangiz, sizga aloqasiz ma'lumotlar bazasi kerak.

Agar bu haqiqat bo'lsa, demak, bu qudratli ma'lumotlar bazalari zaifligini anglatadimi? Bu shuni anglatadiki, relyatsion ma'lumotlar bazalari kunlari tugadi va tez orada tugaydi? Ushbu maqolada, biz turli xil vaziyatlarga bog'liq bo'lmagan ma'lumotlar bazalarining ommabop tendentsiyasini ko'rib chiqamiz va bu relyatsion ma'lumotlar bazalarining kelajagiga ta'sir qiladimi.

Relyatsion ma'lumotlar bazalari taxminan 30 yil davomida mavjud. Shu vaqt ichida relyatsion saqlashni tugatishi kerak bo'lgan bir nechta inqiloblar yuz berdi. Albatta, bu inqiloblarning hech biri sodir bo'lmadi va ulardan biri hech bo'lmaganda relyatsion ma'lumotlar bazalari pozitsiyasini silkitmadi.

Keling, asoslarini boshlaymiz

Relyatsion ma'lumotlar bazasi - jadvallar to'plami (ob'ektlar). Jadvallar ustunlar va satrlardan (karterlardan) iborat. Cheklovlarni jadvallar ichida aniqlash mumkin, jadvallar o'rtasida munosabatlar mavjud. Bir yoki bir nechta jadvallardan ma'lumotlar to'plamlarini qaytaradigan so'rovlarni bajarish uchun SQL dan foydalanishingiz mumkin. Bitta so'rov davomida ma'lumotlar bir nechta jadvallardan birlashish yo'li bilan olinadi (JOIN), ko'pincha jadvallar orasidagi munosabatlarni belgilaydigan bir xil ustunlar ishlatiladi. Normallashtirish - bu ma'lumotlar modelini tuzilish jarayoni, bu ma'lumotlarning izchilligini va ortiqcha emasligini ta'minlaydi.


Relyatsion ma'lumotlar bazalariga relyatsion ma'lumotlar bazasini boshqarish tizimlari (RDBMS) orqali kirish mumkin. Biz foydalanadigan deyarli barcha ma'lumotlar bazalari Oracle, SQL Server, MySQL, Sybase, DB2, TeraData va boshqalar kabi relyatsion.

Ushbu ustunlikning sabablari aniq emas. Relyatsion ma'lumotlar bazalari tarixi davomida ular doimiy ravishda ma'lumotlarni boshqarishda soddalik, mustahkamlik, egiluvchanlik, ishlash, ko'lamlilik va o'zaro bog'liqlikning eng yaxshi aralashmasini taklif qilishgan.

Biroq, ushbu xususiyatlarning barchasini ta'minlash uchun relyatsion saqlash ichki darajada nihoyatda murakkab. Masalan, oddiy SELECT so'rovi optimallashtiruvchi to'g'ridan-to'g'ri ish vaqtida baholaydigan yuzlab potentsial ijro yo'llariga ega bo'lishi mumkin. Bularning barchasi foydalanuvchilarga yashiringan, ammo RDBMS ichida xarajatlarni baholash algoritmlari kabi narsalarga asoslangan va so'rovga eng mos keladigan ijro rejasini tuzadi.

Ma'lumotlar bazasi bilan bog'liq muammolar

Relyatsion saqlash soddaligi, mustahkamligi, egiluvchanligi, ishlashi, ko'lamliligi va birgalikda ishlashning eng yaxshi aralashmasini ta'minlasa-da, ularning har biri bo'yicha aniq bir xususiyatga e'tibor qaratadigan o'xshash tizimlardan yaxshiroq ishlashi shart emas. Bu juda katta muammo emas edi, chunki munosabatlarga asoslangan MBBlarning ustunligi har qanday kamchiliklardan ustun edi. Ammo, agar an'anaviy RDBlar ehtiyojlarni qondirmasa, har doim alternativalar mavjud edi.

Bugun vaziyat biroz boshqacha. Ilovalarning xilma-xilligi o'sib boradi va shu bilan birga ro'yxatdagi xususiyatlarning ahamiyati ortadi. Ma'lumotlar bazalari ko'payib borishi bilan bir xususiyat boshqalarga soya sola boshlaydi. Bu o'lchov. Ko'proq dasturlar, masalan, veb-xizmatlar kabi yuqori yuk sharoitida ishlaydi, ularning miqyosliligi talablari juda tez o'zgarishi va keskin o'sishi mumkin. O'zingizning serveringizda joylashgan ma'lumotlar bazasiga ega bo'lsangiz, birinchi muammoni hal qilish juda qiyin bo'lishi mumkin. Bir kecha-kunduzda server yuki uch baravar ko'paygan deylik. Apparatni qanchalik tez yangilashingiz mumkin? Ikkinchi muammoning echimi relyatsion ma'lumotlar bazalarini ishlatishda ham qiyinchiliklarni keltirib chiqaradi.

Relyatsion ma'lumotlar bazalari faqat bitta serverda joylashgan bo'lsa yaxshi miqyosga ega. Ushbu serverning resurslari tugaganda, siz ko'proq mashinalarni qo'shishingiz va ular orasidagi yukni taqsimlashingiz kerak bo'ladi. Bu erda relyatsion ma'lumotlar bazalarining murakkabligi miqyoslanishga qarshi o'ynay boshlaydi. Agar siz serverlar sonini bir necha emas, balki yuz yoki mingtaga ko'paytirmoqchi bo'lsangiz, murakkablik kattalik tartibiga ko'payadi va ma'lumotlar bazalarini shu qadar jozibali qiladigan xususiyatlar tezda ulardan foydalanish imkoniyatlarini nolga kamaytiradi. katta tarqatilgan tizimlar uchun platforma sifatida.

Raqobatbardoshlikni saqlab qolish uchun bulut sotuvchilari ushbu cheklov bilan qandaydir yo'l bilan shug'ullanishlari kerak, chunki bu qanday bulutli platforma bo'lib, u ma'lumotni miqyosli saqlash imkoniyatisiz. Shuning uchun, sotuvchilar foydalanuvchilarga kengaytirilgan saqlash maydonini taqdim etishni istasalar, bitta variantga ega. Relyatsion ma'lumotlar bazalarida mavjud bo'lgan boshqa imkoniyatlar hisobiga bo'lsa ham, ko'lami kattaroq bo'lgan boshqa ma'lumotlar bazalaridan foydalanish zarur.

Ushbu afzalliklar, shuningdek ularga bo'lgan mavjud talab ma'lumotlar bazasini boshqarish tizimlarining yangi to'lqinini keltirib chiqardi.

Yangi to'lqin

Ushbu turdagi ma'lumotlar bazasi odatda kalit-qiymat do'koni deb nomlanadi. Darhaqiqat, rasmiy ism yo'q, shuning uchun uni hujjat yo'naltirilgan, atributga yo'naltirilgan, tarqatilgan ma'lumotlar bazalari (ular ham aloqador bo'lishi mumkin), parchalangan tartiblangan massivlar, tarqatilgan xash jadvallar va saqlash kalitlari . Ushbu nomlarning har biri tizimning o'ziga xos xususiyatlarini ko'rsatsa-da, ularning barchasi biz kalit-qiymatni saqlash deb ataydigan mavzudagi farqlardir.

Ammo, nima deysiz, ma'lumotlar bazasining bu "yangi" turi unchalik yangi emas va har doim asosan ma'lumotlar bazalari relyatsion ma'lumotlar bazalari mos bo'lmagan ilovalar uchun ishlatilgan. Biroq, veb va bulutni miqyoslash imkoniyatiga ega bo'lmasdan, ushbu tizimlarga talab katta emas edi. Endi muammo, qaysi tizimning ma'lum bir tizim uchun ko'proq mos kelishini aniqlashdan iborat.
O'zaro aloqador ma'lumotlar bazalari va asosiy qiymatlarni saqlash bir-biridan tubdan farq qiladi va har xil muammolarni hal qilishga mo'ljallangan. Xarakteristikalarni taqqoslash faqat ularning orasidagi farqni tushunishga imkon beradi, ammo keling, bundan:

Saqlash xususiyatlari

Relyatsion ma'lumotlar bazasi Asosiy qiymatlarni saqlash
Ma'lumotlar bazasi jadvallardan, jadvallar ustunlar va satrlardan, qatorlar ustun qiymatlaridan iborat. Bitta jadvalning barcha satrlari bir xil tuzilishga ega.
Domenlar uchun jadvallar bilan o'xshashlik yaratishingiz mumkin, ammo domenlar jadvallaridan farqli o'laroq ma'lumotlar tuzilishi aniqlanmagan. Domen - bu siz xohlagan narsani qo'yishingiz mumkin bo'lgan quti. Bitta domen doirasidagi yozuvlar har xil tuzilishga ega bo'lishi mumkin.
Ma'lumotlar modeli 1 oldindan belgilangan. U qattiq terilgan va ma'lumotlar yaxlitligini ta'minlash uchun cheklovlar va munosabatlarni o'z ichiga oladi.
Yozuvlar kalit bilan aniqlanadi, har bir yozuvda u bilan bog'liq bo'lgan atributlarning dinamik to'plami mavjud.
Ma'lumotlar modeli dasturning funktsional imkoniyatlariga emas, balki tarkibidagi ma'lumotlarning tabiiy ko'rinishiga asoslanadi.
Ba'zi dasturlarda atributlar faqat satr bo'lishi mumkin. Boshqa dasturlarda atributlar dasturlashda ishlatiladigan turlarni aks ettiradigan oddiy ma'lumotlar turlariga ega: tamsayılar, qatorlar qatorlari va ro'yxatlar.
Ikki nusxadagi ma'lumotlarning oldini olish uchun ma'lumotlar modeli normallashtirilgan. Normallashtirish jadvallar orasidagi munosabatlarni hosil qiladi. Aloqalar ma'lumotlarni turli jadvallardan bog'laydi.
Domenlar o'rtasida, shuningdek bitta domen ichida munosabatlar aniq belgilanmagan.

Birlashtirilmaydi

Asosiy qiymatli do'konlar yozuvga yo'naltirilgan. Bu shuni anglatadiki, berilgan yozuv bilan bog'liq barcha ma'lumotlar u bilan birga saqlanadi. Domen (uni jadval sifatida tasavvur qilishingiz mumkin) son-sanoqsiz turli xil yozuvlarni o'z ichiga olishi mumkin. Masalan, domen mijozlar va buyurtmalar haqidagi ma'lumotlarni o'z ichiga olishi mumkin. Bu shuni anglatadiki, ma'lumotlar odatda turli xil domenlar o'rtasida takrorlanadi. Bu maqbul yondashuv, chunki disk maydoni arzon. Eng asosiysi, bu barcha tegishli ma'lumotlarni bir joyda saqlashga imkon beradi, bu esa o'lchamlarni yaxshilaydi, chunki har xil jadvallardan ma'lumotlarni birlashtirishning hojati yo'q. Relyatsion ma'lumotlar bazasidan foydalanganda, kerakli ma'lumotlarni bir joyda to'plash uchun birlashmalardan foydalanishingiz kerak bo'ladi.


Garchi kalit-qiymat juftligini saqlash uchun munosabatlarga bo'lgan ehtiyoj keskin tushib ketsa-da, munosabatlar hali ham zarur. Bunday munosabatlar odatda asosiy sub'ektlar o'rtasida mavjud. Masalan, buyurtma tizimida mijozlar, mahsulotlar va buyurtmalar to'g'risidagi ma'lumotlarni o'z ichiga olgan yozuvlar mavjud edi. Ushbu ma'lumotlar bitta domendagi yoki bir nechta domendagi bo'lishi muhim emas. Xulosa shuki, mijoz buyurtma berganida, ehtimol siz mijozni saqlashni va buyurtma ma'lumotlarini bitta yozuvda saqlamoqchi emassiz.
Buning o'rniga, buyurtma yozuvida tegishli mijoz va mahsulot yozuvlarini ko'rsatadigan kalitlar bo'lishi kerak. Yozuvlar har qanday ma'lumotni saqlashi mumkinligi va ma'lumotlar modelining o'zida munosabatlar aniqlanmaganligi sababli ma'lumotlar bazasini boshqarish tizimi aloqalarning yaxlitligini nazorat qila olmaydi. Bu shuni anglatadiki, mijozlar va ular buyurtma qilgan mahsulotlarni o'chirib tashlashingiz mumkin. Ma'lumotlarning yaxlitligini ta'minlash to'liq dasturga to'g'ri keladi.

Ma'lumotlarga kirish

Relyatsion ma'lumotlar bazasi Asosiy qiymatlarni saqlash
Ma'lumotlar Structured Query Language (SQL) yordamida yaratiladi, yangilanadi, o'chiriladi va so'raladi.
Ma'lumotlar API usulidagi qo'ng'iroqlar yordamida yaratiladi, yangilanadi, o'chiriladi va so'raladi.
SQL so'rovlari ma'lumotlarni bitta jadvaldan va bir nechta jadvallardan qo'shilish yordamida olishlari mumkin.
Ba'zi dasturlar filtr sharoitlarini aniqlash uchun SQL-ga o'xshash sintaksisni taqdim etadi.
SQL so'rovlari birlashmalar va murakkab filtrlarni o'z ichiga olishi mumkin.
Ko'pincha, faqat asosiy taqqoslash operatorlari (\u003d ,! \u003d,<, >, <= и =>).
Relyatsion ma'lumotlar bazasida odatda triggerlar, saqlangan protseduralar va funktsiyalar kabi ichki mantiq mavjud.
Barcha biznes va ma'lumotlar yaxlitligi mantig'i dastur kodida joylashgan.

Ilovalar bilan o'zaro hamkorlik

Asosiy qiymatli do'konlar: imtiyozlar

Bunday tizimlarning relyatsion saqlashga nisbatan ikkita alohida afzalligi mavjud.
Bulutli xizmatlar uchun javob beradi
Kalit qiymatli do'konlarning birinchi afzalligi shundaki, ular relyatsion ma'lumotlar bazalariga qaraganda sodda va shuning uchun ko'lami kattaroqdir. Agar siz o'zingizning tizimingizni birgalikda joylashtirsangiz va ma'lumotlar omboringiz ortib borayotgan yukni engib o'tishingiz kerak bo'lgan o'nlab yoki yuzta serverlarni joylashtirishni rejalashtirmoqchi bo'lsangiz, u holda siz kalit-qiymatli do'konlarni tanlashingiz kerak.

Ular osongina va dinamik ravishda kengaytirilishi sababli, ular ko'p xonadonli veb-saqlash platformasini taqdim etadigan sotuvchilar uchun ham foydalidir. Bunday ma'lumotlar bazasi ölçeklenebilirlik uchun katta imkoniyatlarga ega bo'lgan nisbatan arzon saqlash vositasini anglatadi. Foydalanuvchilar odatda faqat foydalangan narsalari uchun haq to'laydilar, ammo ularning ehtiyojlari o'sishi mumkin. Sotuvchi yukga qarab, platformaning hajmini dinamik va amaliy ravishda cheklovlarsiz oshirishi mumkin.

Ko'proq tabiiy kod integratsiyasi
Ma'lumotlarning relyatsion modeli va kod ob'ekti modeli odatda boshqacha tarzda quriladi va bu ba'zi bir mos kelmaslikka olib keladi. Ishlab chiquvchilar ushbu muammoni relyatsion modelni ob'ekt modeli bilan taqqoslaydigan kod yozish orqali hal qilishadi. Ushbu jarayon aniq va tez erishib bo'lmaydigan qiymatga ega emas va dasturni ishlab chiqishga sarflanishi mumkin bo'lgan juda ko'p vaqtni talab qilishi mumkin. Qolaversa, ko'pgina muhim do'konlarda ma'lumotlar ob'ektlarga tabiiy ravishda mos keladigan tuzilishda saqlanadi. Bu rivojlanish vaqtini sezilarli darajada qisqartirishi mumkin.

"Aloqador ma'lumotlar bazalari noqulay bo'lishi mumkin" kabi asosiy qiymatli do'konlardan foydalanish uchun boshqa dalillar (aytmoqchi, bu nimani anglatishini bilmayman) unchalik jiddiy emas. Ammo bunday omborlar tarafdori bo'lishdan oldin, keyingi qismni tekshiring.

Asosiy qiymatli do'konlar: kamchiliklar

Relyatsion ma'lumotlar bazalaridagi cheklovlar ma'lumotlarning yaxlitligini eng past darajada ta'minlaydi. Jismoniy jihatdan cheklovlarga javob bermaydigan ma'lumotlar ma'lumotlar bazasiga kira olmaydi. Asosiy qiymatlarni saqlashda bunday cheklovlar mavjud emas, shuning uchun ma'lumotlar yaxlitligini boshqarish to'liq dasturlarga bog'liq. Biroq, har qanday kodda xatoliklar mavjud. Yaxshi ishlab chiqilgan relyatsion ma'lumotlar bazasidagi xatolar odatda ma'lumotlar yaxlitligi bilan bog'liq muammolarni keltirib chiqarmaydi, asosiy qiymatlar do'konidagi xatolar odatda bunday muammolarga olib keladi.

Relyatsion ma'lumotlar bazalarining yana bir afzalligi shundaki, ular ma'lumotlar modelini yaratish jarayonida sizni majbur qiladi. Agar siz modelni yaxshi loyihalashtirsangiz, ma'lumotlar bazasida saqlanadigan ma'lumotlar tuzilishini to'liq aks ettiradigan, ammo dastur tuzilishiga zid bo'lgan mantiqiy tuzilma bo'ladi. Shunday qilib, ma'lumotlar dasturdan mustaqil bo'ladi. Bu shuni anglatadiki, boshqa dastur bir xil ma'lumotdan foydalanishi mumkin va dastur modelidagi mantiqni asosiy modelga o'zgartirish kiritmasdan o'zgartirish mumkin. Kalit qiymatlarni saqlash bilan bir xil narsani amalga oshirish uchun, relyatsion modelni loyihalash jarayonini sinfning dizayni bilan almashtirishni o'ylab ko'ring, bu tabiiy ma'lumotlar tuzilishiga asoslangan umumiy sinflarni yaratadi.

Va moslik haqida unutmang. Relyatsion ma'lumotlar bazalaridan farqli o'laroq, bulutga asoslangan saqlash kamroq umumiy standartlarga ega. Kontseptual jihatdan ular bir-biridan farq qilmasa ham, ularning barchasi har xil API, so'rov interfeyslari va o'ziga xos xususiyatlariga ega. Shu sababli, sotuvchingizga ishonganingiz ma'qul, chunki agar biror narsa yuz bersa, siz boshqa xizmat ko'rsatuvchi provayderga osonlikcha o'ta olmaysiz. Va deyarli barcha zamonaviy kalit-do'konlarning Beta 2-da joylashganligini hisobga olsak, ishonch ma'lumotlar bilan bog'liq ma'lumotlar bazalariga qaraganda ancha xavfli bo'ladi.

Cheklangan ma'lumotlar tahlili
Odatda, barcha bulutli omborlar ko'p lizing turiga asoslangan bo'lib, demak ko'p sonli foydalanuvchilar va dasturlar bir xil tizimdan foydalanadilar. Umumiy tizimni "o'g'irlash" ga yo'l qo'ymaslik uchun, sotuvchilar odatda so'rovlarning bajarilishini biron bir tarzda cheklashadi. Masalan, SimpleDB-da so'rov 5 soniyadan ko'proq vaqtni olishi mumkin emas. Google AppEngine Datastore har bir so'rov uchun 1000 dan ortiq yozuvlarni ololmaydi 3.

Ushbu cheklovlar oddiy mantiq uchun qo'rqinchli emas (kichik miqdordagi yozuvlarni yaratish, yangilash, o'chirish va olish). Agar sizning ilovangiz mashhur bo'lib qolsa-chi? Sizda ko'plab yangi foydalanuvchilar va ko'plab yangi ma'lumotlar mavjud, endi siz foydalanuvchilar uchun yangi tajribalar yaratmoqchisiz yoki ma'lumotlardan qandaydir tarzda foyda ko'rishni xohlaysiz. Bu erda siz ma'lumotlarni tahlil qilish uchun oddiy so'rovlar bilan pichan o'tqazishingiz mumkin. Ilovalardan foydalanish uslublarini kuzatish yoki foydalanuvchi tarixiga asoslangan tavsiyalar tizimi kabi xususiyatlar eng yaxshi darajada qiyin bo'lishi mumkin. Va eng yomoni, ular imkonsizdir.

Bunday holda, analitiklar sizning kalit-qiymat omboringiz ma'lumotlari bilan to'ldiriladigan alohida ma'lumotlar bazasini yaratishi yaxshiroqdir. Buni qanday qilish mumkinligini oldindan o'ylab ko'ring. Siz serverni bulutda yoki o'zingiz joylashtirasizmi? Siz va provayderingiz o'rtasida uzilish kechikishi sababli muammolar paydo bo'ladimi? Ushbu ma'lumotlar uzatilishini sizning xotirangiz qo'llab-quvvatlaydimi? Agar sizda 100 million yozuv mavjud bo'lsa va siz bir vaqtning o'zida 1000 ta yozuvni olishingiz mumkin bo'lsa, barcha ma'lumotlarni uzatish uchun qancha vaqt kerak bo'ladi?

Biroq, o'lchovni birinchi o'ringa qo'ymang. Agar sizning foydalanuvchilaringiz boshqa xizmatdan foydalanishga qaror qilsalar, bu foydasiz bo'ladi, chunki u qo'shimcha imkoniyatlar va sozlamalarni taqdim etadi.

Bulutli saqlash

Ko'pgina veb-xizmat ko'rsatuvchi provayderlar ko'p xonadonli kalit-do'konlarni taklif qilishadi. Ularning aksariyati yuqorida sanab o'tilgan mezonlarga javob beradi, ammo ularning har biri o'ziga xos xususiyatlarga ega va yuqorida tavsiflangan standartlardan farq qiladi. SimpleDB, Google AppEngine Datastore va SQL Data Services kabi maxsus omborlarni ko'rib chiqamiz.
Amazon: SimpleDB
SimpleDB - bu Amazon WebServices tarkibiga kiruvchi, atributga yo'naltirilgan kalit qiymatli do'kon. SimpleDB beta-versiyada; foydalanuvchilar undan bepul foydalanishlari mumkin - ularning ehtiyojlari ma'lum chegaradan oshmaguncha.

SimpleDB bir nechta cheklovlarga ega. Birinchidan, so'rovni bajarish vaqti 5 soniya bilan cheklangan. Ikkinchidan, satrlardan tashqari ma'lumotlar turlari mavjud emas. Hammasi saqlanadi, olinadi va qator sifatida taqqoslanadi, shuning uchun sanalarni taqqoslash uchun ularni ISO8601 formatiga o'tkazishingiz kerak bo'ladi. Uchinchidan, har qanday satrning maksimal hajmi 1024 baytni tashkil etadi, bu atribut sifatida saqlashingiz mumkin bo'lgan matn hajmini (masalan, mahsulot tavsifi) cheklaydi. Biroq, ma'lumotlar tuzilishi moslashuvchan bo'lganligi sababli, ushbu cheklovni "Mahsulot tavsifi1", "mahsulot tavsifi2" va hokazo atributlarini qo'shib ishlashingiz mumkin. Ammo atributlar soni ham cheklangan - maksimal 256 atribut. SimpleDB beta-versiyada bo'lsa, domen hajmi 10 gigabayt bilan cheklangan va butun ma'lumotlar bazasi 1 terabaytdan katta bo'lishi mumkin emas.

SimpleDB-ning asosiy xususiyatlaridan biri bu oxir-oqibat mustahkamlik modelidan foydalanishdir. Ushbu model ko'p yo'nalishli ish uchun javob beradi, ammo shuni yodda tutish kerakki, yozuvdagi atribut qiymatini o'zgartirgandan so'ng, keyingi o'qish operatsiyalari bu o'zgarishlarni ko'rmasligi mumkin. Voqealarning bunday rivojlanish ehtimoli juda past, ammo esda tutish kerak. Sotish paytida ma'lumotlaringiz bir-biriga mos kelmagani uchun oxirgi chipta sotishni beshta mijozga sotishni xohlamaysiz.

Google AppEngine ma'lumotlar do'koni
Google-ning AppEngine Datastore Google-ning ichki tuzilgan ma'lumotlarni saqlash tizimi bo'lgan BigTable-ning ustiga o'rnatilgan. AppEngine Datastore BigTable-ga to'g'ridan-to'g'ri kirishni ta'minlamaydi, ammo BigTable-bilan o'zaro aloqada bo'lish uchun soddalashtirilgan interfeys sifatida qaralishi mumkin.

AppEngine Datastore SimpleDB-ga qaraganda bitta yozuv ichida ko'proq ma'lumot turlarini qo'llab-quvvatlaydi. Masalan, yozuvlar ichida to'plamlar bo'lishi mumkin bo'lgan ro'yxatlar.

Ushbu App Store-dan Google AppEngine bilan ishlash jarayonida foydalanishingiz mumkin. Biroq, SimpleDB-dan farqli o'laroq, siz AppEngine Datastore-dan (yoki BigTable) Google veb-xizmatlaridan tashqarida foydalana olmaysiz.

Microsoft: SQL ma'lumotlar xizmatlari

SQL Data Services Microsoft Azure platformasining bir qismidir. SQL Data Services bepul, beta-versiyada va ma'lumotlar bazasi hajmi chegaralariga ega. SQL Data Services - bu alohida dastur - ma'lumotlarni saqlaydigan ko'plab SQL-serverlar uchun qo'shimcha. Ushbu do'konlar aloqador bo'lishi mumkin, ammo siz uchun SDS - bu yuqorida tavsiflangan mahsulotlar kabi muhim ahamiyatga ega do'kon.

Bulutsiz saqlash

Bulutdan tashqarida o'zingiz o'rnatishingiz mumkin bo'lgan bir qator omborlar mavjud. Ushbu loyihalarning deyarli barchasi yosh, alfa yoki beta-versiyada va ochiq manbali. Ochiq manbali ma'lumotlarda siz mulkiy mahsulotlarga qaraganda ko'proq mumkin bo'lgan muammolar va cheklovlar haqida ko'proq bilishingiz mumkin.
CouchDB
CouchDB - erkin va ochiq manbali hujjatlarga asoslangan ma'lumotlar bazasi. Ma'lumotlarni saqlash formati sifatida JSON ishlatiladi. CouchDB hujjatlarga asoslangan va relyatsion ma'lumotlar bazalari orasidagi bo'shliqni "ko'rinish" yordamida to'ldirishga qaratilgan. Bunday ko'rinishlar jadvaldagi ma'lumotlarga o'xshash shakldagi hujjatlardagi ma'lumotlarni o'z ichiga oladi va indekslarni yaratishga va so'rovlarni bajarishga imkon beradi.

CouchDB hozirda chindan ham tarqatilgan ma'lumotlar bazasi emas. Ma'lumotlar serverlar o'rtasida sinxronlashtirilishi uchun replikatsiya xususiyatlariga ega, ammo bu juda miqyosli muhit yaratish uchun zarur bo'lgan tarqatish turi emas. Biroq, CouchDB ishlab chiquvchilari buning ustida ishlamoqda.
Voldemort loyihasi
Voldemort loyihasi - bu juda ko'p sonli serverlar bo'ylab tarqatish uchun mo'ljallangan kalitlarga asoslangan taqsimlangan ma'lumotlar bazasi. U LinkedInni ishlab chiqish paytida tug'ilgan va miqyosi yuqori talablarga ega bo'lgan bir nechta tizimlar uchun ishlatilgan. Voldemort loyihasida yakuniy qat'iylik modeli ham qo'llaniladi.
Mongo

Mongo - bu 10gen da Geir Magnusson va Duayt Merriman (siz DoubleClick-dan bilishingiz mumkin) tomonidan ishlab chiqilgan ma'lumotlar bazasi. CouchDB singari, Mongo hujjatlarni yo'naltirilgan ma'lumotlar bazasi bo'lib, ma'lumotlarni JSON formatida saqlaydi. Biroq, Mongo sof kalit-qiymat do'konidan ko'ra ko'proq ob'ekt bazasidir.
Yomg'ir

Drizzle qimmatbaho do'konlari hal qilish uchun mo'ljallangan muammolarni hal qilishda juda boshqacha yondashuvni taqdim etadi. Drizzle MySQL 6.0 ning filiali sifatida ish boshladi. Keyinchalik, dasturchilar sodda va tezkor DBMS yaratish uchun bir qator funktsiyalarni (shu jumladan ko'rinishlar, triggerlar, kompilyatsiya qilingan iboralar, saqlangan protseduralar, so'rovlar keshi, ACL va ma'lumotlar turlarining bir qismini) olib tashlashdi. Biroq, Drizzle aloqador ma'lumotlarni saqlash uchun ishlatilishi mumkin. Ishlab chiquvchilarning maqsadi 16 va undan ortiq yadroli tizimlarda ishlaydigan veb va bulutli dasturlar uchun mo'ljallangan yarim relyatsion platformani yaratishdir.

Qaror

Oxir oqibat, sizning arizangiz uchun aloqador bo'lmagan kalit qiymatini saqlashni tanlashingizning to'rtta sababi bor:
  1. Ma'lumotlaringiz yuqori darajada hujjatlarga yo'naltirilgan va ma'lumotlarning relyatsion modelidan ko'ra muhim qiymat modeliga ko'proq mos keladi.
  2. Sizning domen modelingiz yuqori darajada ob'ektga yo'naltirilgan, shuning uchun asosiy qiymatlarni saqlash vositasidan foydalanish ma'lumotni o'zgartirish uchun qo'shimcha kod miqdorini kamaytiradi.
  3. Ma'lumotlar ombori arzon va sotuvchingizning veb-xizmatlari bilan birlashtirilishi oson.
  4. Sizning asosiy tashvishingiz - bu talabga binoan yuqori miqyoslash.
Biroq, qaror qabul qilayotganda, ma'lum ma'lumotlar bazalarining cheklanganligi va agar siz aloqasiz ma'lumotlar bazalaridan foydalanishni tanlasangiz, yuzaga keladigan xatarlar haqida xabardor bo'ling.

Qolgan barcha talablar uchun avvalgi yaxshi munosabatli DBMS-ni tanlash yaxshidir. Xo'sh, ular halok bo'ldimi? Albatta yo'q. Hech bo'lmaganda hozircha.

1 - mening fikrimcha, "ma'lumotlar tarkibi" atamasi bu erda ko'proq mos keladi, ammo asl ma'lumot modelini qoldirdi.
2 - ehtimol, muallif o'z imkoniyatlari jihatidan aloqador bo'lmagan ma'lumotlar bazalari relyatsion ma'lumotlardan kamligini yodda tutgan.
3 - ma'lumotlar eskirgan bo'lishi mumkin, maqola 2009 yil fevralda yozilgan.

  • voldemort
  • yog‘ingarchilik
  • Teglar qo'shing

    Va shuningdek, SET NAMES buyrug'i va my.ini konfiguratsiya fayli yordamida tekshirildi. Bugun savolga bag'ishlangan qisqa va agar shunday desam nazariy maqola bo'ladi - ma'lumotlar bazalari nima va u erda qanday ma'lumotlar bazalari mavjud.

    Ushbu maqolada men xulosa qilishga harakat qilaman ma'lumotlar bazalarining qanday turlari va turlari va men ulardan ba'zilari haqida batafsilroq to'xtalaman. Biz haqida gaplashamiz ma'lumotlar bazasining ierarxik tuzilishi, e'tibor bering tarmoq ma'lumotlar bazasi tuzilishiva to'xtab turing ma'lumotlar bazasining relyatsion tuzilishi, ko'rib chiqing relyatsion ma'lumotlar bazalarining xususiyatlari... Maqolaning oxirida esa mavzuga biroz to'xtalib o'tsak. ma'lumotlar bazasi dizayni, tabiiy ravishda relyatsion, chunki MySQL-server asosan relyatsion ma'lumotlar bazalarining matematik modeli hisoblanadi. Ma'lumotlar bazasi dizayni va MySQL-server ishlashi mumkin bo'lgan ma'lumotlar turlari kelgusi postlar uchun mavzulardir.

    Malumotlar bazasi. Matematik modellar, tuzilishi, ta'rifi.

    O'z blogimda matematik qonunlar va relyatsion ma'lumotlar bazalarini tavsiflovchi nazariyalar haqida batafsil gaplashmoqchi bo'lmasam ham, ularning joylashuvi printsipini aytib berishim kerak, agar siz ushbu mavzu bilan qiziqsangiz, siz har doim ixtisoslashgan saytga tashrif buyurishingiz mumkin matematik manba yoki tegishli adabiyotlarni o'qing, yoki siz har doim ushbu nashrga sharhlaringizda savol berishingiz mumkin va men sizga imkon qadar javob berishga harakat qilaman. Aytganimdek, ushbu maqolaning mavzusi - relyatsion ma'lumotlar bazalari... Men savolga javob berishga harakat qilaman, h relyatsion ma'lumotlar bazalari nima sodda va tushunarli til. Relyatsion ma'lumotlar bazalari, atamashunoslik, umuman ma'lumotlar bazalarining paydo bo'lish tarixi va xususan, munosabatlarga oid asosiy tushunchalarga to'xtalaman.

    Ma'lumotlar bazalarining turlari va turlari

    Men allaqachon aytganimdek, ma'lumotlar bazalarining turlari va turlari juda ko'p va men ularning barchasini ushbu nashrda tasvirlay olmayman, lekin eng keng tarqalgan axborotni saqlash turlari yoki ma'lumotlar bazalari turlarini tavsiflashga harakat qilaman. Ma'lumotlar bazasida ba'zi ob'ektlar haqidagi ma'lumotlar, masalan, Internet-do'konda mahsulot haqidagi ma'lumotlar saqlanishi aniq. Ma'lumotlar bazasidagi har qanday mahsulot ba'zi bir parametrlari va xususiyatlariga ega bo'lgan ob'ektdir. Keling, aniq misollarga o'tamiz.

    Ierarxik ma'lumotlar bazasi, iyerarxik ma'lumotlar bazalarining tuzilishi

    Ierarxik ma'lumotlar bazasi - axborotni bunday saqlashga ega bo'lgan har bir ob'ekt ma'lum bir shakl shaklida ifodalanadi, ya'ni bu mavjudot elementlari, ota-ona elementlari bo'lishi mumkin va o'sha bolalar ko'proq farzand ko'rishlari mumkin, ammo hamma narsa boshlanadigan bitta ob'ekt mavjud. Bu bir xil daraxt bo'lib chiqadi. Ierarxik ma'lumotlar bazasining misoli yoki kompyuterning fayl tizimi, men XML hujjatining tuzilishini ko'rib chiqayotganda XML-dagi eslatmalar sarlavhasi ostida bergan kompyuterimning fayl tizimiga misol bo'la olaman.

    Shuni aytish kerak ushbu turdagi ma'lumotlar bazalari ma'lumotni o'qish uchun optimallashtirilganYa'ni, ierarxik tuzilishga ega ma'lumotlar bazalari so'ralgan ma'lumotlarni juda tez tanlab, foydalanuvchilarga berishga qodir. Ammo bunday tuzilma bizni ma'lumotdan tezroq o'tishga imkon bermaydi, bu erda siz hayotdan misol keltirishingiz mumkin, kompyuter har qanday ma'lum bir fayl yoki papka bilan osongina ishlashi mumkin (aslida bu ierarxik tuzilmaning ob'ektlari), lekin kompyuterni antivirus tekshiruvi juda uzoq vaqt talab etadi. Ikkinchi misol - Windows ro'yxatga olish kitobi.

    Rasmda siz ko'rishingiz mumkin ma'lumotlar bazasining ierarxik tuzilishi, eng yuqori qismida ota yoki ildiz elementi, quyida bolalar elementlari, bir xil darajadagi elementlar birodarlar deb nomlanadi, yaxshi yoki qo'shni elementlar. Shunga ko'ra, element darajasi qanchalik past bo'lsa, bu elementning uyasi shunchalik katta bo'ladi.

    Tarmoq ma'lumotlar bazasi, tarmoq ma'lumotlar bazasi tarkibi

    Tarmoq ma'lumotlar bazalari, ierarxik ma'lumotlar bazalarini o'zgartirishning bir turi... Agar siz yuqoridagi rasmga diqqat bilan qarasangiz, ehtimol har bir pastki elementga ustki elementdan bittagina o'q borishini payqadingiz. Ya'ni, ierarxik ma'lumotlar bazalari uchun har bir bola faqat bitta bolaga ega bo'lishi mumkin. Tarmoq ma'lumotlar bazalari ierarxik ma'lumotlar bazalaridan farq qiladi, chunki bola elementi bir nechta ajdodlarga ega bo'lishi mumkin, ya'ni undan yuqori elementlar. Keyinchalik aniqlik va tushunish uchun tarmoq ma'lumotlar bazasi tuzilmalari rasmga e'tibor bering:

    Shuni ta'kidlash kerakki, tarmoq ma'lumotlar bazalari taxminan ierarxik ma'lumotlar bazalari bilan bir xil xususiyatlarga ega. Ammo, ushbu sarlavhada biz ierarxik va tarmoq ma'lumotlar bazalariga unchalik qiziqmaymiz, bu mavzu ko'proq bog'liqdir xML formativa ehtimol kengaytirilgan formatlash tili sarlavhasi ostida men ushbu mavzuni batafsil ko'rib chiqishga harakat qilaman. Va MySQL-ga bag'ishlangan bo'lim bizni qiziqtiradi relyatsion ma'lumotlar bazalari, biz bu haqda batafsilroq to'xtalamiz.

    Relyatsion ma'lumotlar bazalari, relyatsion ma'lumotlar bazalarining tuzilishi

    Relyatsion ma'lumotlar bazalari juda keng tarqalgan va ko'pchilik ushbu mavzuga bag'ishlangan ulkan maqolalar yozishga harakat qilmoqda - nima uchun relyatsion ma'lumotlar bazalari juda keng tarqalgan, mulohazali xulosalar va mulohazalar qiling. Aslida, hamma narsa juda oddiy - matematikada relyatsion ma'lumotlar bazalarini tasvirlash juda oson, ya'ni matematik ular uchun juda yaxshi yozilgan.

    Bir vaqtlar bunday matematik bor edi - Edgar Frank Kodd, 2003 yilda vafot etgan, saksoninchi yillarda batafsil bayon qilgan matematik tilda relyatsion ma'lumotlar bazalarining tuzilishi... Agar yaxshi yozilgan matematika mavjud bo'lsa, unda shunga muvofiq dasturiy ta'minot mavjud. E.F.ning biografiyasida to'xtating. Men kodlamayman, buning uchun turli xil ensiklopediyalar mavjud. Aynan Codd tufayli relyatsion ma'lumotlar bazalari rivojlana boshladi. Shuning uchun, ma'lumotlar bazalari deganda, ko'pincha biz aniq aytamiz relyatsion ma'lumotlar bazalari.

    Relyatsion ma'lumotlar bazalarining xususiyatlari

    Asosiy relyatsion ma'lumotlar bazalarining xususiyati bu shunday ma'lumotlar bazalari ichidagi ob'ektlarning shaklda saqlanishidir ikki o'lchovli jadvallar to'plami... Ya'ni, jadval ustunlar to'plamidan iborat bo'lib, unda quyidagilar bo'lishi mumkin: ism, ma'lumotlar turi (sana, raqam, satr, matn va boshqalar). Yana bir muhim narsa relyatsion ma'lumotlar bazalarining xususiyati ustunlar soni aniqlanganligi, ya'ni ma'lumotlar bazasi tuzilishi oldindan ma'lum, ammo relyatsion ma'lumotlar bazalaridagi qatorlar yoki qatorlar soni hech narsa bilan chegaralanmaydi, taxminan aytganda, relyatsion ma'lumotlar bazalaridagi satrlar ob'ektlardirma'lumotlar bazasida saqlanadigan.

    Aslida, ma'lumotlar bazasi Bu mavhum tushuncha, jadval bu ma'lumotni saqlashning bir usuli, jadvallar to'plami mantiqan bog'lanishi mumkin va bu to'plam ma'lumotlar bazasi deb ataladi. Shuning uchun MySQL ma'lumotlar bazasi, ma'lumotlar bazasi saqlanadigan ma'lumotlar deb aytish noto'g'ri. Ammo bunday tushuncha Ma'lumotlar bazasini boshqarish tizimi - ma'lumotlar bazasini boshqarish tizimi, Bu nima MySQL-server, biz uning yordamida saqlangan ma'lumotlarni boshqaramiz. Yoki boshqacha matematik g'oyalar.

    Qachon eng qiyin vazifa relyatsion ma'lumotlar bazalari bilan ishlash, bu ma'lumotlar bazasi dizayni... Ma'lumotlar bazasi tuzilishini loyihalash nafaqat jadval yaratish va ma'lumotlar turi va ustun nomlarini belgilash bilan bog'liq. Aslida, dizayn ma'lumotlar bazalari bilan ishlashning eng qiyin bosqichi... Chunki sizning kompyuterlaringizning kuchi cheklangan. Ushbu jadvallarda ma'lumotlar oz, jadvallar va satrlar oz bo'lsa, mashina ularni juda tez ishlaydi. Vaqt o'tishi bilan ma'lumot miqdori ko'payadi va biz sekinlashib boramiz, bu esa ko'payadi, chunki mashinaga ma'lum so'rovlarni qayta ishlash uchun vaqt kerak (axborotni qayta ishlash). Oxirgi maqolada men allaqachon yozgan edim relyatsion ma'lumotlar bazalari asosan modifikatsiyaga (OLTP) yo'naltirilgan, ya'ni jadvalga yangi yozuv qo'shish bu juda oddiy operatsiya relyatsion DBMS, ammo ma'lumotlarni tanlash allaqachon mashaqqatli ish. Ma'lumotlarda ham o'zgarish mavjud, bu o'qish va qo'shish o'rtasidagi oraliq aloqaga o'xshaydi. Garchi.

    Ma'lumotlar bazasini loyihalash

    Xo'sh, biz biroz gaplashdik relyatsion ma'lumotlar bazalarining afzalliklari va kamchiliklari... Va endi, qisqacha qilib aytganda, men savolga to'xtalaman ma'lumotlar bazasi dizayni... Dizayn deganda men quyidagilarni nazarda tutayapman: odam stolda o'tiradi, qog'oz va qalam oladi va oldidagi vazifaga asoslanib, shuningdek, ma'lum bir tizimning afzalliklari va kamchiliklariga asoslanib, bizning holatlarimizda MySQL ma'lumotlar bazalari kelajakdagi ma'lumotlar bazasi tuzilishini boshlaydi. Loyihalangan ma'lumotlar bazasiga talab odatda quyidagicha o'rnatiladi:

    1. Ma'lumotlar bazasi iloji boricha ixcham bo'lishi kerak, ya'ni ortiqcha bo'lmaydi.
    2. Ma'lumotlar bazasini qayta ishlash oddiy bo'lishi kerak.

    Va ehtimol siz tushunganingizdek, bu talablar bir-biriga ziddir. Dizayn ma'lumotlar bazalari bilan ishlashda eng muhim jihatdir. Odatda, dizayner tajribali ma'lumotlar bazasi server ma'muri yoki katta tajribaga ega ma'lumotlar bazasi arxitektoridir. Jiddiy loyihalarda bir nechta o'nlab, hatto yuzlab jadvallar bo'lishi mumkin, ular eng murakkab aloqa usullarida bir-biriga bog'langan. Albatta, men chuqur o'rganmoqchi emasman ma'lumotlar bazasi dizayni, va men buni qila olmayman, lekin ba'zilari ma'lumotlar bazasini loyihalash asoslari O'zimning blog sahifalarimda ta'kidlab o'tishga harakat qilaman. Ma'lumotlar bazasini loyihalashni boshlashdan oldin, siz umuman nimani ishlab chiqmoqchi ekanligimizni tushunishingiz kerak. Ya'ni, biz chiqishda nimani olishimiz kerakligini tushunishimiz kerak.

    Va chiqishda biz deb nomlangan narsani olishimiz kerak diagramma yoki u ham deyiladi sxema... Diagramma - bu ta'rif: qanday ma'lumotlar saqlanadi, qaysi jadvalda saqlanadi, qaysi ustunning qaysi ustunida, jadvalning nomi nima, jadvaldagi nechta ustun va ularning turi, jadvallar qanday bog'liq. Ha, ustunlardagi ma'lumotlar turlari har xil bo'lishi mumkin, masalan, telefon raqami yoki indeks belgilar bilan ham, raqamli ma'lumotlar turidan foydalanib ham yozilishi mumkin. Ammo savol paydo bo'ladi: telefon raqami yoki pochta indeksini saqlash uchun qaysi turdagi ma'lumotlar yaxshiroq? Intuitiv ravishda, bu savolga ko'pincha to'g'ri javob beriladi - ma'lumotlar bazasidagi telefon raqami belgi turiga ega bo'lishi kerak, ammo bir nechta belgi nima uchun ekanligini tushuntirib bera olmaydi. Tushuntirish juda sodda, masalan, bizga 637 dan boshlanadigan barcha pochta kodlari yoki 952 dan boshlangan telefon raqamlari kerak edi, shuning uchun raqamli turdagi ma'lumotlardan bunday tanlov qilish juda muammoli vazifa va xuddi shu tanlovni belgi turi juda oson.

    Relyatsion ma'lumotlar bazasi - asosiy tushunchalar

    Ko'pincha, ma'lumotlar bazasi haqida gapirganda, ular faqat avtomatlashtirilgan ma'lumotlar omborini anglatadi. Ushbu ko'rinish butunlay to'g'ri emas. Nima uchun bunday bo'lganligi quyida ko'rsatiladi.

    Darhaqiqat, so'zning tor ma'nosida ma'lumotlar bazasi bu ish uchun zarur bo'lgan ma'lum ma'lumotlar to'plamidir (haqiqiy ma'lumotlar). Biroq, ma'lumotlar mavhumlikdir; hech kim hech qachon "faqat ma'lumot" ni ko'rmagan; ular o'zlari paydo bo'lmaydi va mavjud emas. Ma'lumotlar - bu ob'ektlarning haqiqiy dunyodagi aksi. Masalan, siz omborga kelib tushgan qismlar haqidagi ma'lumotlarni saqlamoqchisiz. Ma'lumotlar bazasida haqiqiy dunyo ob'ekti - qismi qanday ko'rsatiladi? Ushbu savolga javob berish uchun siz qismning qaysi alomatlari yoki tomonlari tegishli bo'lishi, ishlash uchun zarurligini bilishingiz kerak. Ular orasida qismning nomi, uning og'irligi, o'lchamlari, rangi, ishlab chiqarilgan sanasi, ishlab chiqarilgan materiali va boshqalar bo'lishi mumkin. An'anaviy terminologiyada ma'lumotlar bazasida saqlanadigan haqiqiy dunyo ob'ektlari mavjudotlar deb nomlanadi (hatto bu so'z o'quvchini qo'rqitmasa ham, bu umumiy qabul qilingan atama) va ularning haqiqiy belgilari atributlar deb nomlanadi.

    Muayyan ob'ektning har bir xususiyati atributning qiymati. Masalan, dvigatel qismining og'irligi atribut qiymati 50 ga teng, bu ushbu dvigatelning vazni 50 kilogramm bo'lganligini aks ettiradi.

    Ma'lumotlar bazasida faqat jismoniy ob'ektlar aks etadi deb o'ylash xato bo'lar edi. U abstraktlar, jarayonlar, hodisalar - ya'ni inson o'z faoliyatida duch keladigan hamma narsalar haqida ma'lumotni o'zlashtira oladi. Masalan, ma'lumotlar bazasida ehtiyot qismlarni omborga etkazib berish buyurtmalari to'g'risidagi ma'lumotlar saqlanishi mumkin (garchi bu jismoniy ob'ekt emas, balki jarayon bo'lsa). "Buyurtma" sub'ektining atributlari etkazib beriladigan qismning nomi, qismlar soni, etkazib beruvchining nomi, etkazib berish muddati va boshqalar bo'ladi.

    Haqiqiy dunyoning ob'ektlari bir-biri bilan ko'plab murakkab bog'liqliklar bilan bog'langan bo'lib, ular axborot faoliyatida hisobga olinishi kerak. Masalan, ehtiyot qismlar ularni ishlab chiqaruvchilari tomonidan omborga etkazib beriladi. Shuning uchun "ishlab chiqaruvchi nomi" atributi qism atributlariga kiritilishi kerak. Biroq, bu etarli emas, chunki sizga ma'lum bir qismni ishlab chiqaruvchisi - uning manzili, telefon raqami va boshqalar haqida qo'shimcha ma'lumot kerak bo'lishi mumkin. Bu shuni anglatadiki, ma'lumotlar bazasida nafaqat qismlar va sotib olish buyurtmalari, balki ularni ishlab chiqaruvchilar haqida ham ma'lumotlar bo'lishi kerak. Bundan tashqari, ma'lumotlar bazasida ehtiyot qismlar va ishlab chiqaruvchilar o'rtasidagi munosabatlar (har bir qism ma'lum bir ishlab chiqaruvchi tomonidan ishlab chiqarilgan) va buyurtmalar va ehtiyot qismlar o'rtasidagi munosabatlar (har bir buyurtma ma'lum bir qism uchun beriladi) aks ettirilishi kerak. Ma'lumotlar bazasida faqat tegishli, mazmunli havolalarni saqlash kerakligini unutmang.

    Shunday qilib, so'zning keng ma'nosida ma'lumotlar bazasi - bu ma'lum bir amaliy maydon uchun dolzarb bo'lgan real hayotdagi ob'ektlar va ular orasidagi bog'lanishlarning tavsiflari to'plamidir. Keyinchalik, biz ushbu ta'rifga asoslanib, uni taqdimot jarayonida yanada aniqroq qilamiz.

    Ma'lumotlarning relyatsion modeli

    Shunday qilib, biz ma'lumotlar bazasida saqlanadigan narsalar haqida tasavvurga ega bo'ldik. Endi ma'lumotlar tuzilmalari uchun ob'ektlar, atributlar va munosabatlar qanday taqqoslanganligini tushunishingiz kerak. Bu ma'lumotlar modeli bilan belgilanadi.

    An'anaga ko'ra, barcha DBMSlar ularning asosida yotadigan ma'lumotlar modeli bo'yicha tasniflanadi. Ma'lumotlarning ierarxik, tarmoq va relyatsion modellarini ajratish odatiy holdir. Ba'zan ularga teskari ro'yxatlarga asoslangan ma'lumotlar modeli qo'shiladi. Shunga ko'ra, kimdir teskari ro'yxatlar asosida ierarxik, tarmoq, relyatsion DBMS yoki DBMS haqida gapiradi.

    Tarqalishi va mashhurligi nuqtai nazaridan bugungi kunda relyatsion DBMSlar raqobatdan tashqarida. Ular amalda sanoat standartiga aylandilar va shu sababli mahalliy foydalanuvchi o'z amaliyotida relyatsion DBMS bilan duch kelishi kerak. Ma'lumotlarning relyatsion modelini uning tafsilotlariga kirmasdan tezda ko'rib chiqamiz.

    Kodd 1969-70 yillarda matematik munosabatlar nazariyasi asosida ishlab chiqqan va eng muhimi jadval, munosabat, satr, ustun, birlamchi kalit, tashqi kalit kabi tushunchalar tizimiga asoslangan.

    Relyatsion ma'lumotlar bazasi - bu barcha ma'lumotlar foydalanuvchiga ma'lumotlar qiymatlarining to'rtburchaklar jadvallari ko'rinishida taqdim etiladi va ma'lumotlar bazasidagi barcha operatsiyalar jadvallarni manipulyatsiya qilishgacha qisqartiriladi. Jadval qator va ustunlardan iborat bo'lib, ma'lumotlar bazasi ichida noyob nomga ega. Jadvalda haqiqiy olamdagi ob'ekt (ob'ekt) turi aks ettirilgan va uning har bir qatori ma'lum bir ob'ektdir. Masalan, Qismlar jadvali omborda saqlanadigan barcha qismlar haqidagi ma'lumotlarni o'z ichiga oladi va uning satrlari ma'lum qismlar uchun atribut qiymatlari to'plamidir. Jadvaldagi har bir ustun ob'ektning o'ziga xos atributi uchun qiymatlar to'plamidir. Masalan, Materiallar ustuni "Chelik", "Qalay", "Rux", "Nikel" va boshqalar uchun qiymatlar to'plamidir. Miqdor ustuni manfiy bo'lmagan butun sonlarni o'z ichiga oladi. Og'irlik ustunidagi qiymatlar kilogrammdagi qismning og'irligiga teng bo'lgan haqiqiy sonlardir.

    Ushbu qiymatlar havodan ko'rinmaydi. Ular domen deb ataladigan ob'ektning atributi uchun barcha mumkin bo'lgan qiymatlar to'plamidan tanlanadi. Shunday qilib, materiallar ustunidagi qiymatlar barcha mumkin bo'lgan materiallar - plastmassa, yog'och, metallar va boshqalar nomlari to'plamidan tanlanadi. Shuning uchun, Material ustunida, masalan, "suv" yoki "qum" da mos keladigan sohada mavjud bo'lmagan qiymat paydo bo'lishi mumkin emas.

    Har bir ustunning nomi bor, u odatda jadvalning yuqori qismida yoziladi ( Shakl: bitta). Bu jadvalda noyob bo'lishi kerak, ammo har xil jadvallarda bir xil nomdagi ustunlar bo'lishi mumkin. Har qanday jadvalda kamida bitta ustun bo'lishi kerak; ustunlar jadvalda ularni tuzilish paytidagi nomlariga qarab joylashtirilgan. Ustunlardan farqli o'laroq, satrlarda nomlar yo'q; ularning jadvaldagi tartibi aniqlanmagan va ularning soni mantiqan cheklanmagan.

    Shakl 1. Ma'lumotlar bazasining asosiy tushunchalari.

    Jadvaldagi qatorlar buyurtma qilinmaganligi sababli, uning pozitsiyasi bo'yicha qatorni tanlash mumkin emas - ular orasida "birinchi", "ikkinchi", "oxirgi" yo'q. Har qanday jadvalda bitta yoki bir nechta ustunlar mavjud bo'lib, ularning qiymatlari uning har bir satrini o'ziga xos tarzda aniqlaydi. Bunday ustun (yoki ustunlar birikmasi) birlamchi kalit deb ataladi. Qismlar jadvalida asosiy kalit "Qism raqami" ustunidir. Bizning misolimizda omborning har bir qismi bitta raqamga ega bo'lib, uning yordamida qismlar jadvalidan kerakli ma'lumotlar olinadi. Shuning uchun, ushbu jadvalda asosiy kalit qism raqami ustunidir. Ushbu ustundagi qiymatlarni takrorlash mumkin emas - Qismlar jadvalida Qism soni ustunida bir xil qiymatga ega qatorlar bo'lmasligi kerak. Agar jadval ushbu talabni qondirsa, u munosabat deyiladi.

    Jadvallarning o'zaro aloqasi ma'lumotlarning relyatsion modelining muhim elementidir. U tashqi kalit bilan qo'llab-quvvatlanadi. Ma'lumotlar bazasida ba'zi bir tashkilotlarda oddiy xodimlar (xodimlar jadvali) va menejerlar (menejerlar jadvali) haqidagi ma'lumotlar saqlanadigan misolni ko'rib chiqing ( Shakl: 2018-04-02 121 2). Supervisor jadvalining asosiy kaliti Raqam ustunidir (masalan, xodimlar soni). Familiya ustuni asosiy kalit vazifasini bajara olmaydi, chunki bir xil familiyaga ega bo'lgan ikkita menejer bitta tashkilotda ishlashi mumkin. Har qanday xodim bitta rahbarga bo'ysunadi, bu ma'lumotlar bazasida aks ettirilishi kerak. Xodimlar jadvali menejer raqami ustunini o'z ichiga oladi va ushbu ustundagi qiymatlar menejer jadvalining son ustunidan tanlanadi (qarang Shakl: 2018-04-02 121 2). Supervisor number (ustun) bu "Employee" jadvalidagi chet el kalitidir.

    Shakl 2. Ma'lumotlar bazalari jadvallari o'rtasidagi munosabatlar.

    Agar ma'lumotlar bazasida "ma'lumotlar to'g'risida ma'lumotlar" bo'lmasa, jadvallarni saqlash va qayta ishlash mumkin emas, masalan jadvallar, ustunlar va boshqalar uchun tavsiflovchilar. Ular odatda metadata deb nomlanadi. Meta-ma'lumotlar jadval shaklida ham taqdim etiladi va ma'lumotlar lug'atida saqlanadi.

    Jadvallardan tashqari ma'lumotlar bazasi displeylar, hisobotlar, ko'rinishlar va hattoki ma'lumotlar bazasi bilan ishlaydigan dasturlar kabi boshqa ob'ektlarni ham saqlashi mumkin.

    Axborot tizimining foydalanuvchilari uchun ma'lumotlar bazasi oddiy dunyo ob'ektlarini aks ettirishi etarli emas. Bunday aks ettirishning aniq va izchil bo'lishi muhimdir. Bunday holda, ma'lumotlar bazasi yaxlitlik shartini qondiradi deyiladi.

    Ma'lumotlarning to'g'riligi va o'zaro muvofiqligini kafolatlash uchun ma'lumotlar bazasiga ma'lum cheklovlar qo'yiladi, ular ma'lumotlar yaxlitligi cheklovlari deb ataladi.

    Butunlikni cheklashning bir nechta turlari mavjud. Masalan, jadval ustunidagi qiymatlar faqat tegishli domendan tanlanishi talab qilinadi. Amalda yaxlitlikning murakkabroq cheklovlari ham hisobga olinadi, masalan, referentsial yaxlitlik. Uning mohiyati shundaki, tashqi kalit jadvaldagi mavjud bo'lmagan qatorga ishora qila olmaydi. To'liqlik cheklovlari muhokama qilinadigan maxsus vositalar yordamida amalga oshiriladi Sek.Ma'lumotlar bazasi serveri .

    SQL tili

    O'z-o'zidan, kompyuter shaklidagi ma'lumotlar foydalanuvchini qiziqtirmaydi, agar unga kirish imkoniyati bo'lmasa. Ma'lumotlarga kirish standart so'rovlar tilida tuzilgan ma'lumotlar bazasi so'rovlari shaklida amalga oshiriladi. Hozirgi kunda ko'pgina DBMSlar uchun ushbu til SQL hisoblanadi.

    Ushbu tilning ma'lumotlar bazasiga kirishni tavsiflovchi vosita sifatida paydo bo'lishi va rivojlanishi relyatsion ma'lumotlar bazalari nazariyasini yaratish bilan bog'liq. SQL 1970 yilda IBMdagi Santa Tereza laboratoriyasida System / R tadqiqot loyihasi doirasida paydo bo'lgan. SQL endi relyatsion ma'lumotlar bazasini boshqarish tizimlari bilan interfeys uchun standart hisoblanadi. Uning mashhurligi shunchalik katta ediki, aloqador bo'lmagan ma'lumotlar bazalarini ishlab chiquvchilari (masalan, Adabas) o'z tizimlarini SQL-interfeys bilan ta'minlaydilar.

    SQL tili rasmiy standartga ega - ANSI / ISO. Ko'pgina DBMS dasturchilari ushbu standartga rioya qilishadi, lekin ko'pincha ma'lumotlarni qayta ishlashning yangi imkoniyatlarini amalga oshirish uchun uni kengaytiradilar. Ta'riflanishi kerak bo'lgan yangi ma'lumotlar boshqarish mexanizmlari Sek.Ma'lumotlar bazasi serveri , faqat til standartiga umuman kiritilmagan maxsus SQL operatorlari orqali foydalanish mumkin.

    SQL an'anaviy dasturlash tili emas. Unda dasturlar emas, balki ma'lumotlar bazasiga so'rovlar yozilgan. Shuning uchun SQL deklarativ tildir. Bu shuni anglatadiki, undan nimani olish kerakligini shakllantirish uchun foydalanish mumkin, ammo u buni qanday qilish kerakligini ko'rsatolmaydi. Xususan, protsessual dasturlash tillaridan (C, Pascal, Ada) farqli o'laroq, SQL tilida bunday operatorlar etishmayapti if-then-else, for, while va hk.

    Tilning sintaksisiga batafsil to'xtalmaymiz. Keling, shunchaki oddiy misollarni tushunish uchun kerakli darajada tegizamiz. Ularning yordami bilan ma'lumotlarni qayta ishlashning eng qiziqarli mexanizmlari tasvirlangan bo'ladi.

    SQL so'rovi vergul bilan ajratilgan birin-ketin bir yoki bir nechta bayonotlardan iborat. Quyidagi 1-jadvalda ANSI / ISO SQL standartiga kiritilgan eng muhim operatorlar keltirilgan.

    Jadval 1. SQL tilining asosiy operatorlari.

    SQL so'rovlarida ma'lumotlar bazasi ob'ektlarini noyob ravishda aniqlaydigan nomlar ishlatiladi. Xususan, bu jadval nomi (Tafsilot), ustun nomi (Ism), shuningdek ma'lumotlar bazasidagi qo'shimcha turlarga murojaat qiladigan boshqa ob'ektlarning nomlari (masalan, protsedura va qoidalar nomlari). , bu muhokama qilinadi Sek.Ma'lumotlar bazasi serveri ... Oddiy ismlardan tashqari murakkab nomlar ham ishlatiladi - masalan, malakali ustun nomi ustun nomini va unga tegishli jadval nomini belgilaydi (Og'irlik qism). Oddiylik uchun, misollarda ismlar rus tilida yoziladi, ammo amalda bu tavsiya etilmaydi.

    Har qanday jadvaldagi har bir ustun ma'lum turdagi ma'lumotlarni saqlaydi. Ma'lumotlarning asosiy turlari - sobit uzunlikdagi belgilar qatorlari, butun sonlar va haqiqiy sonlar va qo'shimcha ma'lumotlar turlari - o'zgaruvchan uzunlikdagi belgilar qatorlari, valyuta birliklari, sana va vaqt, mantiqiy ma'lumotlar (ikkita qiymat - "Haqiqat" va " FALSE "). SQL-da siz raqamli, satrli, belgi va sana va vaqt doimiylaridan foydalanishingiz mumkin.

    Keling, bir nechta misollarni ko'rib chiqaylik.

    "Barcha turdagi qismlar uchun zaxiradagi qismlar sonini aniqlang" so'rovi quyidagicha amalga oshiriladi:

    Nomini, miqdorini tanlang

    Qismdan;

    So'rov natijalari dastlabki ustunlar jadvalidan olingan ikkita ustunli - Nomi va miqdori bo'lgan jadval bo'ladi. Asosan, ushbu so'rov sizga asl jadvalning vertikal proektsiyasini olish imkonini beradi (aniqrog'i, jadval qatorlari to'plamining vertikal pastki qismi). Part jadvalining barcha qatorlaridan ikkita ustun - Ism va Miqdordan olingan qiymatlarni o'z ichiga olgan qatorlar hosil bo'ladi.

    SQLda tuzilgan "qanday po'lat qismlar mavjud?" So'rovi quyidagicha:

    Qismdan

    Qaerda Material \u003d "Chelik";

    Ushbu so'rov natijasi sifatida faqat Materiallar ustunida "Chelik" qiymatiga ega bo'lgan manba jadvalining faqat qatorlarini o'z ichiga olgan jadval bo'ladi. Ushbu so'rov Qismlar jadvalining gorizontal proyeksiyasini olishga imkon beradi (SELECT bayonotidagi yulduzcha jadvaldagi barcha ustunlarni tanlaganingizni anglatadi).

    "Omborda plastikdan tayyorlangan va og'irligi besh kilogrammdan kam bo'lgan qismlarning nomi va miqdorini aniqlash to'g'risida" so'rov quyidagi tarzda yoziladi:

    Nomini, miqdorini tanlang

    Qismdan

    Qaerda Material \u003d "Plastik"

    VA Og'irligi< 5;

    So'rov natijasi - ikkita ustunli jadval - Ism, Miqdor, unda plastikdan yasalgan va 5 kg dan kam og'irlikdagi qismlarning nomi va soni ko'rsatilgan. Darhaqiqat, tanlov operatsiyasi bu avval gorizontal proektsiyani shakllantirish (qismlar jadvalining barcha qatorlarini toping, buning uchun Material \u003d "Plastik" va Og'irligi)< 5), а затем вертикальной проекции (извлечь Название и Количество из выбранных ранее строк).

    Indekslar jadvallarga tezkor kirishni ta'minlovchi vositalardan biridir. Indeks - bu jadvalning ma'lum bir qatoriga ko'rsatgich bo'lgan ma'lumotlar bazasi tuzilishi. Ma'lumotlar bazasi indeksidan kitoblar indekslari kabi foydalaniladi. Unda ma'lum bir jadval satrining bir yoki bir nechta ustunlaridan olingan qiymatlar va shu qatorga havola mavjud. Indeksdagi qiymatlar tartiblangan bo'lib, bu JBKga jadvalda tezkor qidiruvlarni amalga oshirishga imkon beradi.

    Keling, Warehouse ma'lumotlar bazasiga so'rov tuzilgan deb taxmin qilaylik:

    Ism miqdori, materialini tanlang

    Qismdan

    Qaerda Raqam \u003d "T145-A8";

    Agar ushbu jadval uchun indekslar mavjud bo'lmasa, unda ushbu so'rovni bajarish uchun MBM Jadval tafsilotlarini to'liq ko'rib chiqishi kerak, ketma-ket undan qatorlarni tanlab, ularning har biri uchun tanlov shartini tekshirishi kerak. Katta jadvallar uchun bunday so'rov juda uzoq vaqt talab etadi.

    Agar indeks ilgari Jadval raqami bo'limi ustunida yaratilgan bo'lsa, u holda jadvaldagi qidirish vaqti minimal darajaga tushiriladi. Indeksda Raqam ustunidagi qiymatlar va Qismlar jadvalidagi ushbu qiymat bilan satrga havola mavjud. So'rovni bajarishda DBMS birinchi navbatda indeksdagi "T145-A8" qiymatini topadi (va buni tezda bajaradi, chunki indeks buyurtma qilingan va uning satrlari kichik), so'ngra indeksdagi ma'lumotlarga ko'ra kerakli qatorning jismoniy joylashishini aniqlang.

    Indeks SQL CREATE INDEX operatori bilan tuziladi. Ushbu misolda operator

    NECHAQ KO'RSATIShNI YARATISH Qismlar indeksi

    ON qismi (raqam);

    qismlar jadvali raqami ustunida qismlar indeksi deb nomlangan indeks yaratadi.

    DBMS foydalanuvchisi uchun SQL-ning individual bayonotlari emas, balki ularning nuqtai nazaridan yaxlit va mazmunli shakllangan ma'lum bir ketma-ketligi qiziqish uyg'otadi. SQL bayonotlarining har bir bunday ketma-ketligi ma'lumotlar bazasida ma'lum bir harakatni amalga oshiradi. U bir necha bosqichda amalga oshiriladi, ularning har birida ma'lumotlar bazasi jadvallarida ba'zi operatsiyalar bajariladi. Demak, bank tizimida ma'lum miqdorni qisqa muddatli hisobdan uzoq muddatli hisob raqamiga o'tkazish bir nechta operatsiyalarda amalga oshiriladi. Ular orasida - qisqa muddatli hisob raqamidan mablag 'olish, uzoq muddatli hisob raqamiga kredit berish.

    Agar ushbu amalni bajarish paytida nosozlik yuzaga kelsa, masalan, birinchi operatsiya tugagandan so'ng, ikkinchisi tugamasa, u holda pul yo'qoladi. Shuning uchun ma'lumotlar bazasidagi har qanday harakatlar to'liq bajarilishi yoki umuman bajarilmasligi kerak. Ushbu harakat bitim deb ataladi.

    Tranzaksiyalarni qayta ishlash jurnalga asoslangan bo'lib, u operatsiyalarni qaytarish va ma'lumotlar bazasining holatini tiklash uchun ishlatiladi. Tranzaktsiyalar haqida batafsil ma'lumot bu erda muhokama qilinadi Sek.Bitimni qayta ishlash .

    SQL bo'yicha bahsimizni yakunlash uchun uning so'rovlar tili ekanligini yana bir bor ta'kidlaylik. Unga ma'lumotlar bazasi bilan ishlaydigan biron bir murakkab amaliy dastur yozish mumkin emas. Shu maqsadda zamonaviy DBMS-larda C, Paskal, Ada singari uchinchi avlod protsessual tillarining (3GL) asosiy imkoniyatlari va to'rtinchi avlod tili (Forth Generation Language - 4GL) ishlatiladi. Dastur matnidagi SQL bayonotlari, shuningdek foydalanuvchi interfeysi boshqaruvlari (menyular, shakllar, foydalanuvchi kiritish va hk). Bugungi kunda 4GL ma'lumotlar bazasini yaratish vositalarining amaldagi standartlaridan biridir.

    Maqola sizga yoqdimi? Do'stlar bilan bo'lishish uchun: