DBMS ืžื•ื ื—ื” ืžืกืžื›ื™ื MongoDB 5.0 ื–ืžื™ืŸ

ืžื•ืฆื’ืช ื”ื”ืคืฆื” ืฉืœ DBMS ืžื•ื ื—ื” ืžืกืžื›ื™ื MongoDB 5.0, ืืฉืจ ืชื•ืคืกืช ื ื™ืฉื” ื‘ื™ืŸ ืžืขืจื›ื•ืช ืžื”ื™ืจื•ืช ื•ืžื“ืจื’ื™ื•ืช ื”ืคื•ืขืœื•ืช ื ืชื•ื ื™ื ื‘ืคื•ืจืžื˜ ืžืคืชื—/ืขืจืš, ืœื‘ื™ืŸ DBMSs ืจืœืฆื™ื•ื ืœื™ื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื ื•ืงืœื™ื ืœื™ืฆื™ืจืช ืฉืื™ืœืชื•ืช. ืงื•ื“ MongoDB ื›ืชื•ื‘ ื‘-C++ ื•ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ SSPL, ื”ืžื‘ื•ืกืก ืขืœ ืจื™ืฉื™ื•ืŸ AGPLv3, ืืš ืื™ื ื• ืคืชื•ื—, ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืžื›ื™ืœ ื“ืจื™ืฉื” ืžืคืœื” ืœืžืกื•ืจ ืชื—ืช ืจื™ืฉื™ื•ืŸ SSPL ืœื ืจืง ืืช ืงื•ื“ ื”ืืคืœื™ืงืฆื™ื” ืขืฆืžื•, ืืœื ื’ื ืืช ื”ืžืงื•ืจ ืงื•ื“ ืฉืœ ื›ืœ ื”ืจื›ื™ื‘ื™ื ื”ืžืขื•ืจื‘ื™ื ื‘ืืกืคืงืช ืฉื™ืจื•ืช ื”ืขื ืŸ.

MongoDB ืชื•ืžืš ื‘ืื—ืกื•ืŸ ืžืกืžื›ื™ื ื‘ืคื•ืจืžื˜ ื“ืžื•ื™ JSON, ื‘ืขืœ ืฉืคื” ื’ืžื™ืฉื” ืœืžื“ื™ ืœื”ืคืงืช ืฉืื™ืœืชื•ืช, ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืื™ื ื“ืงืกื™ื ืขื‘ื•ืจ ืชื›ื•ื ื•ืช ืžืื•ื—ืกื ื•ืช ืฉื•ื ื•ืช, ืžืกืคืง ื‘ื™ืขื™ืœื•ืช ืื—ืกื•ืŸ ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ื™ื ืืจื™ื™ื ื’ื“ื•ืœื™ื, ืชื•ืžืš ื‘ืจื™ืฉื•ื ืคืขื•ืœื•ืช ืœืฉื™ื ื•ื™ ื•ื”ื•ืกืคืช ื ืชื•ื ื™ื ืœืžืกื“ ื”ื ืชื•ื ื™ื, ื™ื›ื•ืœ ืขื‘ื•ื“ื” ื‘ื”ืชืื ืœืคืจื“ื™ื’ืžื” Map/Reduce, ืชื•ืžื›ืช ื‘ืฉื›ืคื•ืœ ื•ื‘ื ื™ื™ื” ืฉืœ ืชืฆื•ืจื•ืช ืกื‘ื™ืœื•ืช ืœืชืงืœื•ืช.

ืœ-MongoDB ื›ืœื™ื ืžื•ื‘ื ื™ื ืœืืกืคืงืช ืคื™ืฆื•ืœ (ื”ืคืฆืช ืกื˜ ื ืชื•ื ื™ื ื‘ื™ืŸ ืฉืจืชื™ื ืขืœ ื‘ืกื™ืก ืžืคืชื— ืกืคืฆื™ืคื™), ื‘ืฉื™ืœื•ื‘ ืขื ืฉื›ืคื•ืœ, ื”ืžืืคืฉืจื™ื ืœื‘ื ื•ืช ืืฉื›ื•ืœ ืื—ืกื•ืŸ ืฉื ื™ืชืŸ ืœื”ืจื—ื‘ื” ืื•ืคืงื™ืช ื‘ื• ืื™ืŸ ื ืงื•ื“ืช ื›ืฉืœ ืื—ืช (ื”ื›ืฉืœ ืฉืœ ืฆื•ืžืช ื›ืœืฉื”ื• ืื™ื ื• ืžืฉืคื™ืข ืขืœ ืคืขื•ืœืช ืžืกื“ ื”ื ืชื•ื ื™ื), ื”ืชืื•ืฉืฉื•ืช ืื•ื˜ื•ืžื˜ื™ืช ืœืื—ืจ ื›ืฉืœ ื•ื”ืขื‘ืจืช ืขื•ืžืก ืžืฆื•ืžืช ื›ื•ืฉืœ. ื”ืจื—ื‘ืช ืืฉื›ื•ืœ ืื• ื”ืžืจืช ืฉืจืช ืื—ื“ ืœืืฉื›ื•ืœ ืžืชื‘ืฆืขืช ืžื‘ืœื™ ืœืขืฆื•ืจ ืืช ืžืกื“ ื”ื ืชื•ื ื™ื ืคืฉื•ื˜ ืขืœ ื™ื“ื™ ื”ื•ืกืคืช ืžื›ื•ื ื•ืช ื—ื“ืฉื•ืช.

ืชื›ื•ื ื•ืช ืฉืœ ื”ืžื”ื“ื•ืจื” ื”ื—ื“ืฉื”:

  • ื ื•ืกืคื• ืื•ืกืคื™ื ืœื ืชื•ื ื™ื ื‘ืฆื•ืจื” ืฉืœ ืกื“ืจืช ื–ืžืŸ (ืื•ืกืคื™ ืกื“ืจื•ืช ื–ืžืŸ), ืื•ืคื˜ื™ืžืœื™ื•ืช ืœืื—ืกื•ืŸ ืคืจื•ืกื•ืช ืฉืœ ืขืจื›ื™ ืคืจืžื˜ืจื™ื ืฉื ืจืฉืžื• ื‘ืžืจื•ื•ื—ื™ ื–ืžืŸ ืžืกื•ื™ืžื™ื (ื–ืžืŸ ื•ืžืขืจื›ืช ืขืจื›ื™ื ื”ืชื•ืืžืช ืœื–ืžืŸ ื–ื”). ื”ืฆื•ืจืš ืœืื—ืกืŸ ื ืชื•ื ื™ื ื›ืืœื” ืžืชืขื•ืจืจ ื‘ืžืขืจื›ื•ืช ื ื™ื˜ื•ืจ, ืคืœื˜ืคื•ืจืžื•ืช ืคื™ื ื ืกื™ื•ืช ื•ืžืขืจื›ื•ืช ืœื‘ื“ื™ืงืช ืžืฆื‘ื™ ื—ื™ื™ืฉืŸ. ื”ืขื‘ื•ื“ื” ืขื ื ืชื•ื ื™ ืกื“ืจื•ืช ื–ืžืŸ ืžืชื‘ืฆืขืช ื›ืžื• ืขื ืื•ืกืคื™ ืžืกืžื›ื™ื ืจื’ื™ืœื™ื, ืืš ื”ืื™ื ื“ืงืกื™ื ื•ืฉื™ื˜ืช ื”ืื—ืกื•ืŸ ืขื‘ื•ืจื ืขื•ื‘ืจื™ื ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืชื•ืš ื”ืชื—ืฉื‘ื•ืช ื‘ื”ืชื™ื™ื—ืกื•ืช ื”ื–ืžืŸ, ืžื” ืฉื™ื›ื•ืœ ืœื”ืคื—ื™ืช ืžืฉืžืขื•ืชื™ืช ืืช ืฆืจื™ื›ืช ืฉื˜ื— ื”ื“ื™ืกืง, ืœื”ืคื—ื™ืช ืขื™ื›ื•ื‘ื™ื ื‘ื‘ื™ืฆื•ืข ืฉืื™ืœืชื•ืช ื•ืœืืคืฉืจ ื ืชื•ื ื™ื ื‘ื–ืžืŸ ืืžืช ืึธื ึธืœึดื™ื–ึธื”.

    MongoDB ืžืชื™ื™ื—ืกืช ืœืื•ืกืคื™ื ื›ืืœื” ื›ืืœ ืชืฆื•ื’ื•ืช ื ื™ืชื ื•ืช ืœื›ืชื™ื‘ื”, ืฉืื™ื ืŸ ืžืชืžืžืฉื•ืช, ื”ื‘ื ื•ื™ื•ืช ืขืœ ืื•ืกืคื™ื ืคื ื™ืžื™ื™ื, ืฉื›ืืฉืจ ื”ื ืžื•ื›ื ืกื™ื, ืžืงื‘ืฆื™ื ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื ืชื•ื ื™ ืกื“ืจื•ืช ื–ืžืŸ ืœืคื•ืจืžื˜ ืื—ืกื•ืŸ ืื•ืคื˜ื™ืžืœื™. ื‘ืžืงืจื” ื–ื”, ื›ืœ ืจืฉื•ืžื” ืžื‘ื•ืกืกืช ื–ืžืŸ ืžื˜ื•ืคืœืช ื›ืžืกืžืš ื ืคืจื“ ื›ืืฉืจ ื”ื™ื ืžืชื‘ืงืฉืช. ื”ื ืชื•ื ื™ื ืžืกื•ื“ืจื™ื ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื•ืžื•ืกื™ืคื™ื ืœืื™ื ื“ืงืก ืœืคื™ ื–ืžืŸ (ืื™ืŸ ืฆื•ืจืš ืœื™ืฆื•ืจ ืื™ื ื“ืงืกื™ ื–ืžืŸ ื‘ืžืคื•ืจืฉ).

  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืžืคืขื™ืœื™ ื—ืœื•ื ื•ืช (ืคื•ื ืงืฆื™ื•ืช ืื ืœื™ื˜ื™ื•ืช) ื”ืžืืคืฉืจื•ืช ืœื‘ืฆืข ืคืขื•ืœื•ืช ืขื ืกื˜ ืกืคืฆื™ืคื™ ืฉืœ ืžืกืžื›ื™ื ื‘ืื•ืกืฃ. ื‘ื ื™ื’ื•ื“ ืœืคื•ื ืงืฆื™ื•ืช ืžืฆื˜ื‘ืจื•ืช, ืคื•ื ืงืฆื™ื•ืช ื—ืœื•ืŸ ืื™ื ืŸ ืžื›ื•ื•ืฆื•ืช ืืช ื”ืกื˜ ื”ืžืงื•ื‘ืฅ, ืืœื ืžืฆื˜ื‘ืจื•ืช ืขืœ ืกืžืš ื”ืชื•ื›ืŸ ืฉืœ "ื—ืœื•ืŸ" ื”ื›ื•ืœืœ ืžืกืžืš ืื—ื“ ืื• ื™ื•ืชืจ ืžืงื‘ื•ืฆืช ื”ืชื•ืฆืื•ืช. ื›ื“ื™ ืœื‘ืฆืข ืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ืชืช-ืงื‘ื•ืฆื” ืฉืœ ืžืกืžื›ื™ื, ืžื•ืฆืข ืฉืœื‘ $setWindowFields ื—ื“ืฉ, ืฉื‘ืืžืฆืขื•ืชื• ื ื™ืชืŸ, ืœืžืฉืœ, ืœืงื‘ื•ืข ืืช ื”ื”ื‘ื“ืœื™ื ื‘ื™ืŸ ืฉื ื™ ืžืกืžื›ื™ื ื‘ืื•ืกืฃ, ืœื—ืฉื‘ ื“ื™ืจื•ื’ื™ ืžื›ื™ืจื•ืช ื•ืœื ืชื— ืžื™ื“ืข ื‘ืกื“ืจื•ืช ื–ืžืŸ ืžื•ืจื›ื‘ื•ืช.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ื’ื™ืจืกืื•ืช API, ื”ืžืืคืฉืจืช ืœืš ืœืื’ื“ ืืคืœื™ืงืฆื™ื” ืœืžืฆื‘ API ืกืคืฆื™ืคื™ ื•ืœื‘ื˜ืœ ืืช ื”ืกื™ื›ื•ื ื™ื ื”ืงืฉื•ืจื™ื ืœื”ืคืจื” ืืคืฉืจื™ืช ืฉืœ ืชืื™ืžื•ืช ืœืื—ื•ืจ ื‘ืขืช ื”ื’ื™ืจื” ืœืžื”ื“ื•ืจื•ืช ื—ื“ืฉื•ืช ืฉืœ DBMS. ื’ื™ืจืกืื•ืช API ืžืคืจื™ื“ื•ืช ื‘ื™ืŸ ืžื—ื–ื•ืจ ื”ื—ื™ื™ื ืฉืœ ื”ืืคืœื™ืงืฆื™ื” ืœืžื—ื–ื•ืจ ื”ื—ื™ื™ื ืฉืœ ื”-DBMS ื•ืžืืคืฉืจืช ืœืžืคืชื—ื™ื ืœื‘ืฆืข ืฉื™ื ื•ื™ื™ื ื‘ืืคืœื™ืงืฆื™ื” ื›ืืฉืจ ื™ืฉ ืฆื•ืจืš ื‘ืฉื™ืžื•ืฉ ื‘ืคื™ืฆ'ืจื™ื ื—ื“ืฉื™ื, ื•ืœื ื‘ืขืช ื”ื’ื™ืจื” ืœื’ืจืกื” ื—ื“ืฉื” ืฉืœ ื”-DBMS.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืžื ื’ื ื•ืŸ Live Resharding, ื”ืžืืคืฉืจ ืœืš ืœืฉื ื•ืช ืืช ืžืงืฉื™ ื”-Shard ื”ืžืฉืžืฉื™ื ืœืคื™ืœื•ื— ืชื•ืš ื›ื“ื™ ืชื ื•ืขื” ืžื‘ืœื™ ืœืขืฆื•ืจ ืืช ื”-DBMS.
  • ื”ื•ืจื—ื‘ื• ื”ืืคืฉืจื•ื™ื•ืช ืœื”ืฆืคื ืช ืฉื“ื•ืช ื‘ืฆื“ ื”ืœืงื•ื— (Client-Side Field Level Encryption). ื›ืขืช ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืžื—ื“ืฉ ืืช ืžืกื ื ื™ ื”ื‘ื™ืงื•ืจืช ื•ืœืกื•ื‘ื‘ ืื™ืฉื•ืจื™ x509 ืžื‘ืœื™ ืœืขืฆื•ืจ ืืช ื”-DBMS. ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ื”ื’ื“ืจืช ื—ื‘ื™ืœืช ื”ืฆืคื ื” ืขื‘ื•ืจ TLS 1.3.
  • ืžื•ืฆืขืช ืžืขื˜ืคืช ืฉื•ืจืช ืคืงื•ื“ื” ื—ื“ืฉื”, MongoDB Shell (mongosh), ืืฉืจ ืžืคื•ืชื—ืช ื›ืคืจื•ื™ืงื˜ ื ืคืจื“, ืฉื ื›ืชื‘ืช ื‘-JavaScript ื‘ืืžืฆืขื•ืช ืคืœื˜ืคื•ืจืžืช Node.js ื•ืžื•ืคืฆืช ืชื—ืช ืจื™ืฉื™ื•ืŸ Apache 2.0. MongoDB Shell ืžืืคืฉืจ ืœื”ืชื—ื‘ืจ ืœ-DBMS, ืœืฉื ื•ืช ื”ื’ื“ืจื•ืช ื•ืœืฉืœื•ื— ืฉืื™ืœืชื•ืช. ืชื•ืžืš ื‘ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ื—ื›ืžื” ืœื”ื–ื ืช ืฉื™ื˜ื•ืช, ืคืงื•ื“ื•ืช ื•ื‘ื™ื˜ื•ื™ื™ MQL, ื”ื“ื’ืฉืช ืชื—ื‘ื™ืจ, ืขื–ืจื” ื”ืงืฉืจื™ืช, ื ื™ืชื•ื— ื”ื•ื“ืขื•ืช ืฉื’ื™ืื” ื•ื™ื›ื•ืœืช ืœื”ืจื—ื™ื‘ ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื‘ืืžืฆืขื•ืช ืชื•ืกืคื•ืช. ืžืขื˜ืคืช ื”-CLI ื”ื™ืฉื ื” ืฉืœ "mongo" ื”ื•ืฆืื” ืžืฉื™ืžื•ืฉ ื•ื”ื™ื ืชื•ืกืจ ื‘ืžื”ื“ื•ืจื” ืขืชื™ื“ื™ืช.
    DBMS ืžื•ื ื—ื” ืžืกืžื›ื™ื MongoDB 5.0 ื–ืžื™ืŸ
  • ืื•ืคืจื˜ื•ืจื™ื ื—ื“ืฉื™ื ื ื•ืกืคื•: $count, $dateAdd, $dateDiff, $dateSubtract, $sampleRate ื•-$rand.
  • ืžื‘ื˜ื™ื— ืฉืžืฉืชืžืฉื™ื ื‘ืื™ื ื“ืงืกื™ื ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืื•ืคืจื˜ื•ืจื™ื $eq, $lt, $lte, $gt ื•-$gte ื‘ืชื•ืš ื”ื‘ื™ื˜ื•ื™ $expr.
  • ื”ืคืงื•ื“ื•ืช ืœืฆื‘ื•ืจ, ืœืžืฆื•ื, findAndModify, ืœืขื“ื›ืŸ, ืœืžื—ื•ืง ื•ื”ืฉื™ื˜ื•ืช db.collection.aggregate(), db.collection.findAndModify(), db.collection.update() ื•-db.collection.remove() ืชื•ืžื›ื•ืช ื›ืขืช ื‘"ืชืŸ โ€ ืืคืฉืจื•ืช ืœื”ื’ื“ื™ืจ ืจืฉื™ืžื” ืฉืœ ืžืฉืชื ื™ื ืฉื”ื•ืคื›ื™ื ืคืงื•ื“ื•ืช ืœืงืจื™ืื•ืช ื™ื•ืชืจ ืขืœ ื™ื“ื™ ื”ืคืจื“ืช ืžืฉืชื ื™ื ืžื’ื•ืฃ ื”ื‘ืงืฉื”.
  • ืคืขื•ืœื•ืช ื—ื™ืคื•ืฉ, ืกืคื™ืจื”, ื”ื‘ื—ื ื”, ืฆื‘ื™ืจื”, mapReduce, listCollections ื•-listIndexs ืื™ื ืŸ ื—ื•ืกืžื•ืช ืขื•ื“ ืื ืคืขื•ืœื” ืฉืœื•ืงื—ืช ื ืขื™ืœื” ื‘ืœืขื“ื™ืช ืขืœ ืื•ืกืฃ ืžืกืžื›ื™ื ืคื•ืขืœืช ื‘ืžืงื‘ื™ืœ.
  • ื›ื—ืœืง ืžื™ื•ื–ืžื” ืœื”ืกืจืช ืžื•ื ื—ื™ื ืœื ืชืงื™ื ื™ื ืคื•ืœื™ื˜ื™ืช, ืฉืžื•ืช ื”ืคืงื•ื“ื” isMaster ื•ืฉื™ื˜ืช db.isMaster() ืฉื•ื ื• ืœ-hello ื•-db.hello().
  • ืกื›ื™ืžืช ืžืกืคื•ืจ ื”ืฉื—ืจื•ืจ ืฉื•ื ืชื” ื•ื ืขืฉื” ืžืขื‘ืจ ืœืœื•ื— ื–ืžื ื™ื ืœืฉื—ืจื•ืจ ืฆืคื•ื™. ืื—ืช ืœืฉื ื” ืชื”ื™ื” ืžื”ื“ื•ืจื” ืžืฉืžืขื•ืชื™ืช (5.0, 6.0, 7.0), ื›ืœ ืฉืœื•ืฉื” ื—ื•ื“ืฉื™ื ืžื”ื“ื•ืจื•ืช ื‘ื™ื ื™ื™ื ืขื ืคื™ืฆ'ืจื™ื ื—ื“ืฉื™ื (5.1, 5.2, 5.3) ื•ื‘ืžื™ื“ืช ื”ืฆื•ืจืš ืขื“ื›ื•ื ื™ื ืžืชืงื ื™ื ืขื ืชื™ืงื•ื ื™ ื‘ืื’ื™ื ื•ืคื’ื™ืขื•ื™ื•ืช (5.1.1, 5.1.2 .5.1.3, 5.1). ืžื”ื“ื•ืจื•ืช ื‘ื™ื ื™ื™ื ื™ื‘ื ื• ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืขื‘ื•ืจ ื”ืžื”ื“ื•ืจื” ื”ื’ื“ื•ืœื” ื”ื‘ืื”, ื›ืœื•ืžืจ. MongoDB 5.2, 5.3 ื•-6.0 ื™ืกืคืงื• ืชื›ื•ื ื•ืช ื—ื“ืฉื•ืช ืœืฉื—ืจื•ืจ MongoDB XNUMX.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”