1-bo‘lim
MongoDB nima va uni kim yaratgan?
MongoDB nima, uni kim va nima uchun yaratgan, nomi qayerdan kelgan, jadval va hujjat farqi hamda birinchi buyruq.
Ushbu bo‘lim mundarijasi
Relyatsion bazada ma'lumot jadvalga joylashadi: qat'iy ustunlar, har qatorda bir xil maydonlar. MongoDB boshqacha ishlaydi - u hujjat saqlaydi, va har bir hujjatning o'z tuzilishi bo'lishi mumkin.
MongoDB nima? #
MongoDB - hujjatli (document) ma'lumotlar bazasi. Undagi asosiy birlik - jadval qatori emas, balki JSON ga o'xshash hujjat:
{
_id: 1,
nom: "Otkan kunlar",
muallif: { ism: "Abdulla Qodiriy", yil: 1894 },
teglar: [ "roman", "tarixiy" ],
narx: 85000
}
E'tibor bering: muallif - ichma-ich hujjat, teglar -
massiv. Relyatsion bazada bu ikkalasi uchun alohida
jadval kerak bo'lar edi.
Atamalar ham boshqacha nomlanadi:
| Relyatsion baza | MongoDB |
|---|---|
| Jadval (table) | To'plam (collection) |
| Qator (row) | Hujjat (document) |
| Ustun (column) | Maydon (field) |
JOIN | $lookup yoki ichiga joylash |
| Sxema majburiy | Sxema ixtiyoriy |
MongoDB ni kim yaratgan? #
Eliot Xorovits (2007-2020: MongoDB bosh muhandisi)
MongoDB kodining asosiy muallifi. 2007-yilda ikki hamkori bilan 10gen kompaniyasini tuzdi va bazaning dastlabki kodini o'zi yozdi. 2020-yilgacha kompaniyaning bosh texnologiya direktori bo'lib ishladi.
Undan oldin u DoubleClick reklama kompaniyasida ishlagan edi. O'sha yerdagi tajriba MongoDB ning tug'ilishiga sabab bo'ldi.
Kompaniyani uch kishi tuzdi: Duayt Merriman, Eliot Xorovits va Kevin Rayan. Uchalasi ham DoubleClick da birga ishlagan edi.
Muammo shu yerda tug'ilgan: DoubleClick sekundiga yuz minglab reklama so'rovini xizmat qilardi va o'sha paytdagi relyatsion bazalar bunday yukni ko'tara olmasdi. Muhandislar har safar bazani qo'lda bo'laklashga va maxsus saqlash qatlamlarini yozishga majbur bo'lishardi.
10gen ning birinchi rejasi ma'lumotlar bazasi sotish emas edi. Ular Google App Engine ga o'xshash to'liq platforma qurmoqchi bo'lishdi: dastur serveri, joylashtirish tizimi va uning ichida saqlash qatlami.
Platformaga qiziqish bo'lmadi. Lekin uning ichidagi saqlash qismi foydalanuvchilarga yoqdi.
2009-yilda ular qolgan hamma narsani tashlab, faqat shu qismni ochiq kod qilib chiqarishdi. Bugungi MongoDB - o'sha tashlab yuborilgan platformaning bir bo'lagi.
Nom "humongous" so'zidan olingan - ingliz tilida "ulkan, bahaybat" degani.
| So'z | Ma'nosi |
|---|---|
| humongous | "juda katta" |
| MongoDB | "katta hajmli ma'lumotlar bazasi" |
Ya'ni nom boshidanoq maqsadni bildirgan: katta hajmni ko'taradigan baza.
Bu so'zning boshqa ma'nolari bilan hech qanday aloqasi yo'q - manba faqat "humongous".
2018-yilgacha MongoDB AGPL litsenziyasi ostida edi - bu haqiqiy ochiq kod litsenziyasi.
O'sha yildan boshlab u SSPL ga o'tdi. Farqi muhim:
| AGPL | SSPL | |
|---|---|---|
| Kodni ko'rish | Ha | Ha |
| O'zgartirish | Ha | Ha |
| O'z loyihangizda ishlatish | Ha | Ha |
| Xizmat sifatida sotish | Ha | Butun tizim kodini ochish sharti bilan |
SSPL ni Open Source Initiative tashkiloti ochiq kod litsenziyasi deb tan olmaydi. Shuning uchun MongoDB ni to'g'ri atash: manbasi ochiq (source-available).
Amalda oddiy foydalanuvchi uchun hech narsa o'zgarmaydi - uni bepul yuklab olib, o'z loyihangizda cheklovsiz ishlatishingiz mumkin. Cheklov faqat MongoDB ni bulutli xizmat qilib sotmoqchi bo'lganlarga tegishli.
Qachon MongoDB, qachon SQL #
Bu eng ko'p beriladigan savol, va javob "qaysi biri yaxshiroq" degan ko'rinishda emas:
| Vaziyat | Mos keladi |
|---|---|
| Har yozuvda har xil maydonlar | MongoDB |
| Tayyor, o'zgarmas tuzilma | SQL |
| Bitta o'qishda butun obyekt kerak | MongoDB |
| Murakkab ko'p jadvalli hisobotlar | SQL |
| Hodisalar, loglar, sensor ma'lumoti | MongoDB |
| Pul o'tkazmalari, buxgalteriya | SQL |
| Tez o'zgaruvchi talablar | MongoDB |
MongoDB ni "SQL eskirgan" degan sabab bilan tanlash - eng ko'p uchraydigan xato.
To'g'ri savol bitta: ma'lumotni qanday o'qiysiz?
Agar dastur doim "bitta buyurtmani hamma tafsiloti bilan ber" desa - hujjatli baza tabiiy. Bir o'qishda hammasi keladi.
Agar dastur "o'tgan yilgi sotuvni mintaqa, mahsulot va kanal kesimida solishtir" desa - relyatsion baza tabiiy.
Ko'p loyihalarda ikkalasi ham ishlatiladi va bu normal.
Birinchi buyruq #
MongoDB bilan ishlashning to'g'ridan-to'g'ri yo'li - mongosh dasturi. U buyruq qatorida ishlaydi va JavaScript tilini tushunadi.
Eng sodda buyruq to'plamsiz ham ishlaydi:
"Salom, MongoDB!"
Salom, MongoDB!
mongosh - bu to'liq JavaScript muhiti, shuning uchun hisob-kitob ham shu yerda bajariladi:
2 + 2
10 / 4
Math.max(85000, 95000, 64000)
4
2.5
95000
10 / 4 natijasiga e'tibor bering: 2.5 chiqdi, 2 emas.
PostgreSQL da 10 / 4 ifodasi 2 beradi, chunki u ikkita
butun sonni butun son sifatida bo'ladi.
mongosh esa JavaScript ustida ishlaydi va JavaScript da
oddiy number turi bitta - u har doim kasr saqlay oladi.
Bu qulaylik, lekin uning narxi ham bor: JavaScript soni
katta butun sonlarni aniq saqlay olmaydi. Shuning uchun
MongoDB ning o'z turlari bor - Int32, Long, Decimal128.
Ular bilan 3-bobda tanishamiz.
Bazadagi versiyani so'rash:
db.version()
8.3.11
Bu darslikdagi barcha misollar shu versiyada ishga tushirilib tekshirilgan. Sizda boshqa raqam chiqsa xavotir olmang - 8.x qatoridagi har qanday versiya mos keladi.
- Hujjat va jadval qatori orasidagi farqni o'z so'zingiz bilan yozing.
- MongoDB atamalarini SQL atamalariga moslang.
- Kompaniyani kim va qaysi yilda tuzganini yozing.
- Dastlabki mahsulot nima bo'lganini eslang.
- "Mongo" nomi qaysi so'zdan olinganini yozing.
- AGPL va SSPL farqini bir jumlada tushuntiring.
- MongoDB ni "ochiq kod" deyish nega noto'g'ri ekanini yozing.
- MongoDB mos keladigan uchta vaziyat toping.
- SQL mos keladigan uchta vaziyat toping.
mongoshda oddiy hisob-kitob bajaring.
Xulosa #
- MongoDB - hujjatli baza: u jadval qatori emas, JSON ga o'xshash hujjat saqlaydi.
- Jadval o'rniga to'plam, qator o'rniga hujjat, ustun o'rniga maydon.
- Hujjat ichida massiv va ichma-ich hujjat bo'lishi mumkin - alohida jadval kerak emas.
- Kompaniyani 2007-yilda Merriman, Xorovits va Rayan tuzgan.
- Dastlab ular butun platforma qurmoqchi edi - baza uning bir bo'lagi edi.
- Nom "humongous" ("ulkan") so'zidan olingan.
- 2018-yildagi 4.0 versiyasi ko'p hujjatli tranzaksiyalarni qo'shdi.
- MongoDB ochiq kod emas, balki manbasi ochiq (SSPL) - lekin bepul ishlatiladi.
- Tanlovni ma'lumotni qanday o'qishingiz belgilaydi, moda emas.
mongosh- to'liq JavaScript muhiti, shuning uchun10 / 4natijasi2.5.
Keyingi bo'limda mongosh bilan tanishamiz: ulanish, baza
tanlash va birinchi to'plamni yaratish.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.