á á¬ááœááºá á¬áááºáž-á¡áá¬ážáá±áž DBMS MongoDB 5.0 á áá¯ááºáá±ááŸá¯ááᯠáááºááŒáá¬ážááŒá®ážá áá±áá¬áá»á¬ážááᯠáá±á¬á·/áááºááá¯áž áá±á¬áºáááºááŒáá·áº áá¯ááºáá±á¬ááºááá·áº ááŒááºáááºááŒá®áž á¡ááœááºá¡á á¬ážááŸá á áá áºáá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºááá¯ááºáá±á¬ áááºá ááºáá±ážááœááºážáá»á¬áž ááœá²á·á ááºážááẠááœááºáá°áá±á¬ áááºá áẠDBMSs áá»á¬ážááŒá¬ážááœáẠáá±áá¬áá°áá¬ážáááºá MongoDB áá¯ááºááᯠC++ ááŒáá·áºáá±ážáá¬ážáá¬ážááŒá®áž AGPLv3 ááá¯ááºá ááºááá¯á¡ááŒá±áá¶áá¬ážááá·áº SSPL ááá¯ááºá ááºá¡á±á¬ááºááœáẠááŒáá·áºáá±áá¬ážáá±á¬áºáááºáž áááºážááœáẠSSPL ááá¯ááºá ááºá¡á±á¬ááºááœáẠáá±ážááá¯á·ááẠááœá²ááŒá¬ážáááºáá¶ááŸá¯ááá¯ááºáá¬ááá¯á¡ááºáá»ááºáá»á¬ážáá«ááŸááááºááŒá áºáá±á¬ááŒá±á¬áá·áº áááºážááœáẠá¡ááá®áá±ážááŸááºážáá¯ááºááá¯ááºááá¯ááºáá¬áá á¡áááºážá¡ááŒá áºáá« cloud áááºáá±á¬ááºááŸá¯áá±ážáá±á¬ááºááŸá¯ááœáẠáá«áááºáá±á¬ á¡á áááºá¡ááá¯ááºážá¡á¬ážáá¯á¶ážá áá¯ááºá
MongoDB ááẠJSON áá²á·ááá¯á·áá±á¬ áá±á¬áºáááºááœáẠá á¬ááœááºá á¬áááºážáá»á¬áž ááááºážáááºážááŒááºážááᯠáá¶á·ááá¯ážáá±ážáááºá queries áá»á¬ážáááºáá®ážáááºá¡ááœáẠáá»áŸáá»áŸáá ááŒá±á¬ááºážááœááºááŒááºááœááºááŸááá±á¬ áá¬áá¬á áá¬ážáá áºáá¯á ááááºážáááºážáá¬ážáá±á¬ attribute á¡áá»áá¯ážáá»áá¯ážá¡ááœáẠá¡ááœáŸááºážáá»á¬ážáááºáá®ážááá¯ááºáááºá ááŒá®ážáá¬ážáá±á¬ binary á¡áá¬ááá¹áá¯áá»á¬ážá ááá¯ááŸá±á¬ááºááŸá¯ááᯠáááá±á¬ááºá áœá¬ áá¶á·ááá¯ážáá±ážáááºá áá±áá¬áá±á·á áºááá¯á· áá±áá¬áá»á¬ážááᯠááŒá±á¬ááºážáá²ááŒááºážááŸáá·áº áá±á«ááºážááá·áºááŒááºážá¡ááœáẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠááŸááºáááºážááŸááºááŒááºáž áá¶á·ááá¯ážáá±ážááá¯ááºáá«áááºá áá«áá¬ááá¯ááºážááŒá±áá¯á¶/áá»á±á¬á·áá»ááŒááºážááŸáá·áºá¡áá® áá¯ááºáá±á¬ááºááŒááºážá áá¯á¶áá°ááœá¬ážááŒááºážááŸáá·áº á¡ááŸá¬ážá¡ááœááºážáá¶ááá¯ááºáá±á¬ ááœá²á·á ááºážááŸá¯áá¯á¶á á¶áá»á¬áž áááºáá±á¬ááºááŒááºážááᯠáá¶á·ááá¯ážáá±ážáááºá
MongoDB ááœáẠáá®ážááŒá¬ážáá±á¬á·áá áºáá¯á¡áá±á«áºá¡ááŒá±áá¶á áá¬áá¬áá»á¬ážáá áºáá»áŸá±á¬áẠáá±áá¬á¡á á¯áá áºáá¯á¡á¬áž ááœá²áá±áá±ážááŒááºáž (áá±áá¬á¡á á¯á¡áá±ážááᯠááŒáá·áºáá±ááŒááºáž) ááŸáá·áº áá±á«ááºážá ááºážááŒááºážááŒáá·áº áá»ááºááœááºááŸá¯áá áºáá¯áá»áŸáááŸáááá·áº á¡áá»á¬ážááá¯áẠá¡ááœááºá¡á á¬ážááŸá ááá¯ááŸá±á¬ááºááŸá¯á¡á á¯á¡áá±ážááᯠáááºáá±á¬ááºááá¯ááºá á±ááá·áº áááááá¬áá»á¬áž ááœáẠáá«áááºááẠáááºááá·áº node áááá¯áá±áá¬áá±á·á áºááááºáááºááŸá¯ááá¯áááááá¯ááºá á±áá«) áá»ááºááœááºááŒá®ážáá±á¬ááºá¡ááá¯á¡áá»á±á¬ááºááŒááºáááºááá°ááŒááºážááŸáá·áºáá¡á±á¬ááºááŒááºáá±á¬ node ááŸáááºááœáŸá²ááŒá±á¬ááºážááŒááºážá á¡á á¯á¡áá±ážáá áºáá¯ááᯠáá»á²á·ááœááºááŒááºáž ááá¯á·ááá¯áẠáá¬áá¬áá áºáá¯á¡á¬áž á¡á á¯á¡áá±ážáá áºáá¯á¡ááŒá áºááá¯á· ááŒá±á¬ááºážáá²ááŒááºážááẠá ááºá¡áá áºáá»á¬ážááᯠááá¯ážááŸááºážá áœá¬ááá·áºááœááºážááŒááºážááŒáá·áº áá±áá¬áá±á·á áºááᯠááááºááá·áºáá² áá¯ááºáá±á¬ááºáááºá
á¡áá áºááœááºááŸáááŸá¯áá¡ááºá¹áá«áááºáá»á¬áž-
- á¡áá»áááºá
á®ážáá®ážáá»á¬áž (á¡áá»áááºá
á®ážáá®ážá
á¯á
ááºážááŸá¯áá»á¬áž) áá¯á¶á
á¶ááŒáá·áº áá±áá¬á
á¯áá±á¬ááºážááŸá¯áá»á¬ážááᯠáá±á«ááºážááá·áºáá¬ážáá±á¬ ááá·áºáááºáá»ááºáááºááá¯ážáá»á¬áž (á€á¡áá»áááºááŸáá·áº áááºááá¯ááºááá·áº á¡áá»áááºááŸáá·áº áááºááá¯ážáá»á¬ážá¡á
á¯á¡áá±áž) áá»á¬ážááᯠááááºážáááºážáááºá¡ááœáẠá¡ááá·áºáá±á¬áºáá¯á¶ážááŒá
áºáááºá ááá¯áá²á·ááá¯á·áá±á¬ áá±áá¬ááᯠááááºážáááºážááẠááá¯á¡ááºááŸá¯ááẠá
á±á¬áá·áºááŒáá·áºáá±ážá
áá
áºáá»á¬ážá ááá¹áá¬áá±ážááááºáá±á¬ááºážáá»á¬ážááŸáá·áº áá²áá¯á¶ááá¯ááºáᬠá¡á¬áá¯á¶áá¶ááá¯ááºáá¶áá»á¬ážá¡ááœáẠá
áá
áºáá»á¬ážááŒá
áºáááºá á¡áá»áááºá
á®ážáá®ážáá±áá¬ááŒáá·áº á¡áá¯ááºáá¯ááºááŒááºážááẠáá¬áááºá
á¬ááœááºá
á¬áááºážá
á¯áá±á¬ááºážááŸá¯áá»á¬ážáá²á·ááá¯á· áá¯ááºáá±á¬ááºáá±á¬áºáááºáž áááºážááá¯á·á¡ááœáẠá¡ááœáŸááºážááááºážáá»á¬ážááŸáá·áº ááá¯ááŸá±á¬ááºááŸá¯áááºážáááºážáá»á¬ážááᯠá¡áá»áááºáááºááœáŸááºážáá»ááºááŒáá·áº ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºáá¬ážááŒá®ážá disk space áá¯á¶ážá
áœá²ááŸá¯ááᯠáááááá¬áá¬áá»áŸá±á¬á·áá»ááá¯ááºááŒá®ážá áá±ážááŒááºážáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºáá¬ááœáẠááŸá±á¬áá·áºááŸá±ážááŸá¯ááᯠáá»áŸá±á¬á·áá»áᬠá¡áá»áááºááŸáá·áºáá
áºááŒá±ážáá®áá±áá¬ááᯠááœáá·áºáá±ážááá¯ááºááẠááœá²ááŒááºážá
áááºááŒá¬ááŒááºážá
MongoDB ááẠá¡ááá¯áá« á á¯áá±á¬ááºážááŸá¯áá»á¬ážááᯠá¡ááœááºážááá¯ááºážá á¯á ááºážááŸá¯áá»á¬ážááœáẠáááºáá±á¬ááºáá¬ážáá±á¬ á á¬áá±ážááá¯ááºáá±á¬á áá¯ááºááœááºááá¯ááºáá±á¬ á¡ááŒááºáá»á¬ážá¡ááŒá Ạááá·áºááœááºážááá·áºá¡áá«á á¡áá»áááºá á®ážáá®ážáá±áá¬ááᯠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠááŒá¯áá¯ááºáá¬ážáá±á¬ ááá¯ááŸá±á¬ááºááŸá¯áá±á¬áºáááºááá¯á· á¡ááá¯á¡áá»á±á¬áẠá¡á¯ááºá á¯ááœá²á·áááºá á€ááá á¹á ááœááºá á¡áá»áááºá¡ááŒá±áá¶ááŸááºáááºážáá áºáá¯á á®ááᯠáá±á¬ááºážááá¯ááá·áºá¡áá« áá®ážááŒá¬ážá á¬ááœááºá á¬áááºážáá áºáá¯á¡ááŒá Ạááá±á¬áá¬ážáááºá áá±áá¬ááᯠá¡ááá¯á¡áá»á±á¬áẠá á®á á¥áºááŒá®áž á¡áá»áááºá¡ááá¯áẠá¡ááœáŸááºážáá±ážáá±ážááẠ(á¡áá»áááºá¡ááœáŸááºážááááºážáá»á¬ážááᯠá¡áá°ážáááẠáááºáá®ážááẠáááá¯á¡ááºáá«)á
- á á¯á ááºážááŸá¯ááœáẠáááºááŸááºáá¬ážáá±á¬ á á¬ááœááºá á¬áááºážá¡á á¯á¶ááŒáá·áº áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºááá¯ááºá á±ááá·áº window operators (ááœá²ááŒááºážá áááºááŒá¬ááŸá¯áá¯ááºáá±á¬ááºáá»ááºáá»á¬áž) á¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºáá±á¬ááºážááá·áºáá¬ážáá«áááºá á á¯á ááºážáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŸáá·áºááá°áá²á áááºážááá¯ážáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááẠá¡á¯ááºá á¯ááœá²á·áá¬ážáá±á¬á¡á á¯ááᯠáááŒáá¯ááœá²á á±áá² ááááºá¡á á¯á០áá áºáᯠááá¯á·ááá¯áẠáá áºáá¯áááºááá¯áá±á¬á á¬ááœááºá á¬áááºážáá»á¬ážáá«ááŸááá±á¬ âáááºážááá¯ážâ á á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážá¡áá±á«áºá¡ááŒá±áá¶á á á¯á ááºážááŸá¯ááŒá áºáááºá á á¬ááœááºá á¬áááºážáá»á¬ážá á¡á á¯ááœá²áá áºáá¯ááᯠá á®áá¶ááá·áºááœá²áááºá¡ááœáẠ$setWindowFields á¡ááá·áºá¡áá áºááᯠá¡ááá¯ááŒá¯áá¬ážáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá á á¯á ááºážááŸá¯áá áºáá¯ááŸá á á¬ááœááºá á¬áááºážááŸá áºáá¯ááŒá¬ážááŸá ááœá²ááŒá¬ážááŸá¯áá»á¬ážááᯠáá¯á¶ážááŒááºááŒááºážá á¡áá±á¬ááºážá¡ááá·áºáá»á¬ážááᯠááœááºáá»ááºááŒááºážááŸáá·áº ááŸá¯ááºááœá±ážáá±á¬á¡áá»áááºá á®ážáá®ážáá»á¬ážááœáẠá¡áá»ááºá¡áááºáá»á¬ážááᯠááá¯ááºážááŒá¬ážá áááºááŒá¬ááá¯ááºáá«áááºá
- á¡ááá®áá±ážááŸááºážáá áºáá¯á¡á¬áž áá®ážááŒá¬áž API á¡ááŒá±á¡áá±ááᯠáá»áááºáááºáááºááŸáá·áº DBMS á¡áá áºáá»á¬ážááá¯á· ááŒá±á¬ááºážááœáŸá±á·ááá·áºá¡áá« áá±á¬ááºááŒááºááá¯ááºáááºááŸá¯ááŒá áºááá¯ááºáá»á±ááᯠáá»áá¯ážáá±á¬ááºááŸá¯ááŒá áºááá¯ááºáá»á±ááŸááá±á¬ á¡áá¹ááá¬ááºáá»á¬ážááᯠáááºááŸá¬ážáá±ážááá·áº API áá¬ážááŸááºážááá·áºááœááºážááŒááºážá¡ááœáẠáááºáá±á¬ááºážáá¶á·ááá¯ážáá°áá®ááŸá¯á API versioning ááẠapplication life cycle ááᯠDBMS life cycle ááŸáá·áº ááá¯ááºážááŒá¬ážááŒá®áž DBMS áá¬ážááŸááºážá¡áá áºááá¯á· ááŒá±á¬ááºážááœáŸá±á·ááá·áºá¡áá«ááœááºááá¯ááºáá² developer áá»á¬ážá¡á¬áž á¡ááºá¹áá«áááºá¡áá áºáá»á¬ážá¡áá¯á¶ážááŒá¯áááºááá¯á¡ááºáá±á¬á¡áá«ááœáẠdeveloper áá»á¬ážá¡á¬áž á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááŒá¯áá¯ááºááá¯ááºá á±áá«áááºá
- DBMS ááᯠááááºáá² á¡áá»áá¯ážá¡á á¬ážááœá²ááŒááºážá¡ááœáẠá¡áá¯á¶ážááŒá¯áá±á¬ shard keys áá»á¬ážááᯠááŒá±á¬ááºážáá²ááá¯ááºá á±ááá·áº Live Resharding ááá¹ááá¬ážá¡ááœáẠáááºáá±á¬ááºážáá¶á·ááá¯ážááŸá¯á
- áááá¯ááºážááá·áºáááºááŒááºážááŸá ááœááºáááºáá»á¬ážááᯠá á¬ááŸááºááŒááºážá¡ááœáẠááŒá áºááá¯ááºááŒá±áá»á¬ážááᯠáá»á²á·ááœááºáá¬ážááẠ(Client-Side Field Level Encryption)á ááá¯á¡áá« á á¬áááºážá á áºá á áºáá¯ááºááŸá¯áá»á¬ážááᯠááŒááºáááºááŒááºáááºááŒá®áž DBMS ááᯠááááºááá·áºáá² x509 áááºááŸááºáá»á¬ážááᯠááŸáá·áºááá¯ááºáááºá TLS 1.3 á¡ááœáẠcipher suite ááᯠconfigure áá¯ááºááŒááºážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áá±á«ááºážááá·áºáá¬ážáááºá
- Node.js ááááºáá±á¬ááºážááᯠá¡áá¯á¶ážááŒá¯á JavaScript ááŒáá·áºáá±ážáá¬ážááŒá®áž Apache 2.0 ááá¯ááºá
ááºá¡á±á¬ááºááœáẠááŒáá·áºáá±áá¬ážááá·áº áá®ážááŒá¬ážááá±á¬áá»ááºáá
áºáá¯á¡áá±ááŒáá·áº ááœááºáááºážááá¯ááºážááœá¶á¡áá
ẠMongoDB Shell (mongosh) ááᯠá¡ááá¯ááŒá¯áá¬ážáááºá MongoDB Shell ááẠDBMS ááá¯á· áá»áááºáááºáááºá áááºáááºáá»á¬ážááᯠááŒá±á¬ááºážáá²áááºááŸáá·áº á
á¯á¶á
ááºážáá±ážááŒááºážááŸá¯áá»á¬ážááᯠáá±ážááá¯á·ááá¯ááºá
á±áá«áááºá áááºážáááºážáá»á¬ážá ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááŸáá·áº MQL á
áá¬ážáááºáá»á¬ážá á¡áá¬ážá¡ááá¯á¡áá¬ážáá±ážáá±á¬áºááŒááŸá¯á á¡ááŒá±á¬ááºážá¡áá¬ááá¯ááºáᬠá¡áá°á¡áá®á á¡ááŸá¬ážá¡ááœááºážáááºáá±á·áá»áºáá»á¬ážááᯠááœá²ááŒááºážá
áááºááŒá¬ááŒááºážááŸáá·áº á¡ááá¯áááá¯ááááºáá»á¬ážááŸáá
áºááá·áº áá¯ááºáá±á¬ááºááá¯ááºá
áœááºážááᯠáá»á²á·ááœááºááá¯ááºááŸá¯á¡ááœáẠá
áááºá¡ááá¯á¡áá»á±á¬ááºááŒáá·áºá
áœááºááŸá¯ááᯠáá¶á·ááá¯ážáá±ážáá«áááºá "mongo" CLI wrapper á¡áá±á¬ááºážááᯠáááºááá¯ááºážáá¬ážááŒá®áž áá±á¬ááºááœááºááŸáááŸá¯ááœáẠáááºááŸá¬ážáá«áááºá
- á¡á±á¬áºááá±áá¬á¡áá áºáá»á¬ážááᯠááá·áºááœááºážáá¬ážáááº- $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() áááºážáááºážáá»á¬ážááẠááá¯á¡áá« âááœáá·áºááŒá¯áá« â variable áá»á¬ážááᯠáá±á¬ááºážááá¯áá»ááºááá¯ááºáááºá០ááœá²áá¯ááºááŒááºážááŒáá·áº command áá»á¬ážááᯠááá¯ááá¯áááºááŸá¯ááá¯ááºá á±ááá·áº variable áá»á¬ážá á¬áááºážááᯠáááºááŸááºááẠááœá±ážáá»ááºááŸá¯á
- á á¬ááœááºá á¬áááºážá á¯á ááºážááŸá¯ááœáẠáá®ážááá·áºáá±á¬á·áááºáá¬ážáá±á¬ áá¯ááºáá±á¬ááºáá»ááºááẠááŒáá¯ááºáá°áááºáááºáá±áá«á ááŸá¬ááœá±á áá±ááœááºá áá°ážááŒá¬ážá á á¯á ááºážá ááŒá±áá¯á¶áá»áŸá±á¬á·áááºážá á á¬áááºážá á¯áá±á¬ááºážááŸá¯áá»á¬ážá ááŸáá·áº á á¬áááºážá¡ááºážáá áºáá»á¬áž áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠááááºááá¯á·áá¬ážáá±á¬á·ááẠááá¯ááºáá«á
- ááá¯ááºáá¶áá±ážá¡á áááŸááºáááºáá±á¬ á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááᯠáááºááŸá¬ážááẠá¡á áá»áá¯ážááŸá¯áá áºá áááºáá áºááá¯ááºážá¡áá±ááŒáá·áº isMaster á¡áááá·áºááŸáá·áº db.isMaster() áááºážáááºážááᯠhello ááŸáá·áº db.hello() áᯠá¡áááºááŒá±á¬ááºážáá¬ážáááºá
- áá¯ááºáá±ááŸá¯ áá¶áá«ááºá ááºá¡á á®á¡á á¥áºááᯠááŒá±á¬ááºážáá²ááŒá®áž ááá·áºááŸááºážááá¯ááºáá±á¬ áá¯ááºáá±ááŸá¯á¡áá»áááºááá¬ážááá¯á· áá°ážááŒá±á¬ááºážááœá¬ážáá«áááºá áá áºááŸá áºáá»áŸááºáá áºááŒááẠá¡ááºá¹áá«áááºá¡áá áºáá»á¬áž (5.0á 6.0á 7.0) ááŸáá·áº áá¯á¶ážááá áºááŒááẠá¡áááºá¡áááºáá¯ááºááœáŸááºááŸá¯ (5.1á 5.2á 5.3)á ááá¯á¡ááºáááᯠáá»áœááºááœááºážáá»ááºááŒááºáááºááŸá¯áá»á¬ážááŸáá·áº á¡á¬ážáááºážáá»ááºáá»á¬áž (5.1.1á 5.1.2) ááŒáá·áº ááŒá¯ááŒááºááœááºážáá¶ááŸá¯áá»á¬áž ááá¯á¡ááºáááá¯á .á á á .á.á)á ááŒá¬ážááŒááºáá¯ááºáá±ááŸá¯áá»á¬ážááẠáá¬ááá·áºá¡ááááá¯ááºáá±ááŸá¯á¡ááœáẠáá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠáááºáá±á¬ááºáá±ážáááºá ááá¯ááá¯áááºááŸá¬á MongoDB 5.1.3á 5.1 ááŸáá·áº 5.2 ááẠMongoDB 5.3 ááœááºááŸáááŸá¯á¡ááœáẠá¡ááºá¹áá«áááºá¡áá áºáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáááºááŒá áºáááºá
source: opennet.ru