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.

🕑 9 daqiqa o‘qish 📄 976 so‘z 👁 1 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. MongoDB nima?
  2. MongoDB ni kim yaratgan?
  3. Qachon MongoDB, qachon SQL
  4. Birinchi buyruq
  5. Xulosa

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:

Natija
{
  _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 bazaMongoDB
Jadval (table)To'plam (collection)
Qator (row)Hujjat (document)
Ustun (column)Maydon (field)
JOIN$lookup yoki ichiga joylash
Sxema majburiySxema ixtiyoriy

MongoDB ni kim yaratgan? #

10gen

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.

Dastlab bu baza emas, butun platforma edi

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.

Nomi qayerdan kelgan

Nom "humongous" so'zidan olingan - ingliz tilida "ulkan, bahaybat" degani.

So'zMa'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".

DoubleClick dan MongoDB 8 gacha Keng tarqalgan davr (2009-yildan) 2007 10gen kompaniya 2009 MongoDB 1.0 ochiq kod 2015 WiredTiger yangi saqlash 2018 4.0 tranzaksiyalar 2019 4.2 taqsimlangan 8 shu darslik joriy versiya Eng katta burilish - 2018-yil 4.0 versiyasida ko'p hujjatli tranzaksiyalar qo'shildi Shundan keyin MongoDB jiddiy moliyaviy tizimlarda ham ishlatila boshladi
Dastlabki versiyalarda tranzaksiya yo'q edi - bu uzoq vaqt asosiy tanqid sababi bo'lgan
MongoDB "ochiq kod" emas - "manbasi ochiq"

2018-yilgacha MongoDB AGPL litsenziyasi ostida edi - bu haqiqiy ochiq kod litsenziyasi.

O'sha yildan boshlab u SSPL ga o'tdi. Farqi muhim:

AGPLSSPL
Kodni ko'rishHaHa
O'zgartirishHaHa
O'z loyihangizda ishlatishHaHa
Xizmat sifatida sotishHaButun 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:

VaziyatMos keladi
Har yozuvda har xil maydonlarMongoDB
Tayyor, o'zgarmas tuzilmaSQL
Bitta o'qishda butun obyekt kerakMongoDB
Murakkab ko'p jadvalli hisobotlarSQL
Hodisalar, loglar, sensor ma'lumotiMongoDB
Pul o'tkazmalari, buxgalteriyaSQL
Tez o'zgaruvchi talablarMongoDB
Tanlovni talab belgilaydi, moda emas

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:

JavaScript
"Salom, MongoDB!"
Natija
Salom, MongoDB!

mongosh - bu to'liq JavaScript muhiti, shuning uchun hisob-kitob ham shu yerda bajariladi:

JavaScript
2 + 2
10 / 4
Math.max(85000, 95000, 64000)
Natija
4
2.5
95000

10 / 4 natijasiga e'tibor bering: 2.5 chiqdi, 2 emas.

SQL dan kelganlar uchun birinchi farq

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:

Natija
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.

Amaliy topshiriq
  1. Hujjat va jadval qatori orasidagi farqni o'z so'zingiz bilan yozing.
  2. MongoDB atamalarini SQL atamalariga moslang.
  3. Kompaniyani kim va qaysi yilda tuzganini yozing.
  4. Dastlabki mahsulot nima bo'lganini eslang.
  5. "Mongo" nomi qaysi so'zdan olinganini yozing.
  6. AGPL va SSPL farqini bir jumlada tushuntiring.
  7. MongoDB ni "ochiq kod" deyish nega noto'g'ri ekanini yozing.
  8. MongoDB mos keladigan uchta vaziyat toping.
  9. SQL mos keladigan uchta vaziyat toping.
  10. mongosh da 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 uchun 10 / 4 natijasi 2.5.

Keyingi bo'limda mongosh bilan tanishamiz: ulanish, baza tanlash va birinchi to'plamni yaratish.

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.