MongoDB / MongoDB гэж юу вэ?

MongoDB гэж юу вэ?

MongoDB бол document-based NoSQL database — баримт бичигт суурилсан өгөгдлийн сан юм. MySQL зэрэг SQL database-тай харьцуулбал хүснэгт ба мөрийн оронд JSON-тай төстэй document-уудыг хадгалдаг.

NoSQL гэж юу вэ?

SQL database нь өгөгдлийг хатуу бүтэцтэй хүснэгтэд хадгалдаг. NoSQL database нь илүү уян хатан бүтэц ашигладаг.

SQL (MySQL, PostgreSQL):

код
users хүснэгт:
| id | name  | email            |
|----|-------|------------------|
| 1  | Болд  | bold@example.com |
| 2  | Дорж  | dorj@example.com |

MongoDB:

json
{
  "_id": "64abc123",
  "name": "Болд",
  "email": "bold@example.com",
  "address": {
    "city": "Улаанбаатар",
    "district": "Баянзүрх"
  },
  "hobbies": ["кодинг", "уншлага"]
}

MongoDB-д document бүр өөр өөр талбартай байж болно. Нэг document-д nested object ба array хадгалж болно.

MongoDB-ийн гол ойлголтууд

SQL database-тай харьцуулбал:

| SQL | MongoDB | |---|---| | Database | Database | | Table | Collection | | Row | Document | | Column | Field |

Database — Collection-уудын цуглуулга.

Collection — Document-уудын цуглуулга. SQL-ийн table-тай төстэй боловч тогтмол бүтэц байхгүй.

Document — MongoDB-д хадгалагдах нэг бичлэг. JSON форматтай маш төстэй BSON форматаар хадгалагдана.

BSON — Binary JSON. JSON-ийн өргөтгөл бөгөөд MongoDB дотооддоо ашигладаг. Бид ихэвчлэн JSON-оор бодно — MongoDB өөрөө хөрвүүлдэг.

MongoDB яагаад хэрэглэдэг вэ?

Уян хатан бүтэц шаардлагатай үед Бүтэц байнга өөрчлөгдөж байдаг аппликейшнд SQL-ийн хатуу schema нь саад болно. MongoDB schema-гүй тул өөрчлөлт хурдан.

Нарийн холбоосгүй мэдээлэл Нийгмийн сүлжээний пост, блог нийтлэл, бүтээгдэхүүний тайлбар зэрэг нарийн холбоосгүй мэдээлэлд MongoDB тохиромжтой.

Хэвтээ масштаблах (horizontal scaling) MongoDB олон сервер дээр өгөгдлийг тарааж хадгалах (sharding) боломжтой тул маш том хэмжээний мэдээлэл боловсруулахад хэрэглэнэ.

Node.js-тэй хослол MongoDB document нь JavaScript object-тай маш төстэй тул Node.js-тэй маш сайн нийцдэг. MEAN (MongoDB, Express, Angular, Node) ба MERN (MongoDB, Express, React, Node) stack-ууд алдартай.

MongoDB ашиглах хэлбэрүүд

MongoDB Atlas — Mongodb-ийн cloud үйлчилгээ. Суулгах шаардлагагүй, интернетэд холбогдоод шууд ашиглана. Эхлэгчид ашиглахад хамгийн хялбар.

MongoDB Community Server — Компьютерт суулгах хувилбар. Үнэгүй.

MongoDB Compass — MongoDB-г GUI (график интерфэйс)-ээр удирдах хэрэгсэл.

mongosh — MongoDB Shell — командын мөрөөс MongoDB-тэй харилцах хэрэгсэл.

Анхны document жишээ

Хэрэглэгчийн мэдээлэл MongoDB-д ингэж харагдана:

javascript
{
  "_id": ObjectId("64abc1234567"),
  "username": "bold_bataa",
  "email": "bold@example.com",
  "age": 25,
  "createdAt": ISODate("2025-01-15"),
  "profile": {
    "city": "Улаанбаатар",
    "bio": "Программист"
  },
  "skills": ["JavaScript", "Python", "MongoDB"]
}

_id талбарыг MongoDB автоматаар нэмдэг — энэ нь тухайн document-ийн өвөрмөц танигч (unique identifier).

MongoDB vs MySQL — хэзээ алийг нь ашиглах вэ?

MongoDB ашиглах нь дээр:

  • Бүтэц байнга өөрчлөгддөг
  • Nested, нарийн бүтэцтэй мэдээлэл
  • Document-г бүхэлд нь унших ба бичих
  • Хурдан прототипийн хөгжүүлэлт

MySQL ашиглах нь дээр:

  • Харилцааны (relational) мэдээлэл (хэрэглэгч, захиалга, бараа)
  • Нарийн JOIN query-нүүд шаардлагатай
  • Transaction (банкны гүйлгээ гэх мэт) чухал
  • Тогтвортой, өөрчлөгдөхгүй бүтэц

Дараагийн хичээлд:

MongoDB Atlas дээр account үүсгэж, эхний database болон collection-оо үүсгэж, mongosh ашиглан холбогдоно.