рдЕрдм MongoDB рдореЗрдВ рд▓реЗрдирджреЗрди рдХреИрд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ

2018 рдХреА рдЧрд░реНрдорд┐рдпреЛрдВ рдореЗрдВ (рдЬреЛ рдХрд┐ рдЕрднреА, рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп) рд╣реИ, рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╣реБрдЖ - рдИрдорд╛рдирджрд╛рд░ ACID рд▓реЗрдирджреЗрди рдХреЛ MongoDB рдореЗрдВ рд▓рд╛рдпрд╛ рдЧрдпрд╛ред рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рдЙрдиреНрдореБрдЦ DBMS рдХреЗ рдЪреМрдереЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рд╛рде, рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдЬреЛ рд▓реЛрдЧ рдЯреИрдВрдХ рдореЗрдВ рд╣реИрдВ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рд▓реЗрди-рджреЗрди рд╣рдореЗрдВ рдХрдИ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╛ рд▓реЗрди-рджреЗрди рдХреЗ рднреАрддрд░ рдХрд┐рдП рдЧрдП рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд░рджреНрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛, рдпрд╛ рдЖрд╡реЗрджрди рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдпрд╛ ред


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдбреЗрд╡рд▓рдкрд░ рдЗрд╕ рд╕реБрдкрд░ рдлреАрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдиреАрдЪреЗ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреНрдпреЛрдВ, рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред


рдпрджрд┐ рд╣рдо рд▓реЗрди-рджреЗрди рдЕрдиреБрднрд╛рдЧ рдореЗрдВ DBMS рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:


рдмрд╣реБ-рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓реЗрдирджреЗрди рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд╢рд╛рд░реНрдк рдХрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рди MongoDB 4.2 рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИрдВ

рдпрд╣ рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг MongoDB рд╕рд░реНрд╡рд░ рд▓реЗрдирджреЗрди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рдореЛрдб рдореЗрдВ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рд╣реИред рд╢рд╛рд░реНрдкреНрдб рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдкреЛрд░реНрдЯ рднреА рдмрд╛рдж рдореЗрдВ 4.2 рд╡рд░реНрдЬрди рдореЗрдВ рдЖрдПрдЧрд╛ред


рдЙрд╕реА рд╕рдордп, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд░реНрд╡рд░ рд╣рдореЗрдВ рд▓реЗрдирджреЗрди рд╢реБрд░реВ рдХрд░рдиреЗ, рдЙрд╕реЗ рд╕рд╣реЗрдЬрдиреЗ, рдпрд╛ рдЙрд╕реЗ рд░рджреНрдж рдХрд░рдиреЗ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рднреАрддрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреА:


WriteCommandError({ "ok" : 0, "errmsg" : "Transaction numbers are only allowed on a replica set member or mongos", "code" : 20, "codeName" : "IllegalOperation" }) 

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдХреЛрдИ рднреА рдПрдХрд▓-рд╕рд░реНрд╡рд░ MongoDB рдХреНрд▓рд╕реНрдЯрд░ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдкрдиреА рдорд╢реАрдиреЛрдВ рдкрд░, рдЬрд┐рд╕ рдкрд░ рдореИрдВ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд▓рдЧрд╛ рд╣реВрдВ, рдореИрдВ рд╕рднреА DBMS рдХреЛ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдЪрд▓рд╛рддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рдпрдорд┐рдд MongoDB рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 docker run -v ~/mongo/:/data/db --name mongo --restart=always -p 27017:27017 -d mongo mongod --smallfiles 

рдЪрд▓реЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ:


  • -v ~ / mongo /: / data / db рдХрд╛ рдЕрд░реНрде рд╣реИ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ ~ / mongo / in / data / db of рдХрдВрдЯреЗрдирд░, рдЗрд╕рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдЦреБрдж рдХреЛ рд╣реЛрд╕реНрдЯ рдорд╢реАрди рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рд╣рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░, рдЕрдкрдбреЗрдЯ рд╕рдВрд╕реНрдХрд░рдг рдЖрджрд┐ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдШред рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреЗ рд╕рд╛рде;
  • --name mongo рдХрдВрдЯреЗрдирд░ рдХрд╛ рдирд╛рдо рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ;
  • - рд╢реНрд░реЗрд╖реНрда = рд╣рдореЗрд╢рд╛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕реЗрд╡рд╛ рдХреЗ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЪрд╛рд▓реВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рд╛рде рд╣реА рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрдВрдЯреЗрдирд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП;
  • -рдкреА 27017: 27017 "рдЖрдЧреЗ" рдореЗрдЬрдмрд╛рди рдорд╢реАрди рдХреЗ рд▓рд┐рдП рдмрдВрджрд░рдЧрд╛рд╣;
  • -d рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдбреЗрдореЙрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ;
  • рдореЛрдВрдЧреЛ - рдХрдВрдЯреЗрдирд░ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдХрд╛ рдирд╛рдо;
  • mongod --smallfiles - рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдбред

рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд░реНрд╡рд░ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ, рдореИрдВ рд╕рд┐рд░реНрдл рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рд▓рд╛рдпрд╛ рд╣реВрдВред рдЕрдм рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд▓реЗрдирджреЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдбреЙрдХрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдирдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕рднреА рд╕рд░реНрд╡рд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд╣рд╛рдВ, рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рд░реНрд╡рд░ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдЕрдиреНрдпрдерд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред


 docker network create mongo-cluster 

рдЕрдЧрд▓рд╛, рдХрдВрдЯреЗрдирд░ рд▓реЙрдиреНрдЪ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдирдП рдиреЗрдЯрд╡рд░реНрдХ --рдиреЗрдЯ рдореЛрдВрдЧреЛ-рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рднреА рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ : --replSet rs0 ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ - рд╢реНрд░реЗрд╖реНрдарддрд╛ = рд╣рдореЗрд╢рд╛ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕рдордп рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдореЗрдВ MongoDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдпрд╣ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛред


 docker run -v ~/mongo/:/data/db --name mongo -p 27017:27017 -d mongo mongod --smallfiles --replSet rs0 

рдорд╣рд╛рди, рдХрдВрдЯреЗрдирд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо docker ps рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреБрдЫ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:


 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2292d7e0778b mongo "docker-entrypoint.sтАж" About a minute ago Up About a minute 0.0.0.0:27017->27017/tcp mongo 

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд░рдирд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдХреЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрдкрдиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВ:


 docker exec -it mongo mongo # output omited # > config = { "_id" : "rs0", "members" : [ { "_id" : 0, "host" : "mongo:27017" } ] } > rs.initiate(config) { "ok" : 1, "operationTime" : Timestamp(1531248932, 1), "$clusterTime" : { "clusterTime" : Timestamp(1531248932, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } rs0:SECONDARY> rs0:PRIMARY> 

рд╣реЛ рдЧрдпрд╛! рд╣рдореЗрдВ рдПрдХ MongoDB рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдорд┐рд▓рд╛ рд╣реИред рдЕрдм рдЖрдк рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред


 rs0:PRIMARY> session = db.getMongo().startSession() session { "id" : UUID("7eb81006-983f-4398-adc7-5ed23e027377") } rs0:PRIMARY> database = session.getDatabase("test") test rs0:PRIMARY> //    rs0:PRIMARY> database.col.insert({name: "1"}) WriteResult({ "nInserted" : 1 }) rs0:PRIMARY> database.col.insert({name: "2"}) WriteResult({ "nInserted" : 1 }) rs0:PRIMARY> database.col.insert({name: "3"}) WriteResult({ "nInserted" : 1 }) rs0:PRIMARY> database.col.insert({name: "4"}) WriteResult({ "nInserted" : 1 }) rs0:PRIMARY> // ,     rs0:PRIMARY> database.col.find({}) { "_id" : ObjectId("5b45026edc396f534f11952f"), "name" : "1" } { "_id" : ObjectId("5b450272dc396f534f119530"), "name" : "2" } { "_id" : ObjectId("5b450274dc396f534f119531"), "name" : "3" } { "_id" : ObjectId("5b450276dc396f534f119532"), "name" : "4" } rs0:PRIMARY> //   rs0:PRIMARY> session.startTransaction() rs0:PRIMARY> //    rs0:PRIMARY> database.col.update({name: "4"}, {name: "44"}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) rs0:PRIMARY> //   rs0:PRIMARY> database.col.find({}) { "_id" : ObjectId("5b45026edc396f534f11952f"), "name" : "1" } { "_id" : ObjectId("5b450272dc396f534f119530"), "name" : "2" } { "_id" : ObjectId("5b450274dc396f534f119531"), "name" : "3" } { "_id" : ObjectId("5b450276dc396f534f119532"), "name" : "44" } rs0:PRIMARY> //         ,    -: rs0:PRIMARY> // { "_id" : ObjectId("5b450276dc396f534f119532"), "name" : "4" } rs0:PRIMARY> //   rs0:PRIMARY> session.commitTransaction() rs0:PRIMARY> //   rs0:PRIMARY> database.col.find({}) { "_id" : ObjectId("5b45026edc396f534f11952f"), "name" : "1" } { "_id" : ObjectId("5b450272dc396f534f119530"), "name" : "2" } { "_id" : ObjectId("5b450274dc396f534f119531"), "name" : "3" } { "_id" : ObjectId("5b450276dc396f534f119532"), "name" : "44" } rs0:PRIMARY> //     rs0:PRIMARY> session.startTransaction() rs0:PRIMARY> database.col.update({name: "44"}, {name: "42"}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) rs0:PRIMARY> database.col.find({}) { "_id" : ObjectId("5b45026edc396f534f11952f"), "name" : "1" } { "_id" : ObjectId("5b450272dc396f534f119530"), "name" : "2" } { "_id" : ObjectId("5b450274dc396f534f119531"), "name" : "3" } { "_id" : ObjectId("5b450276dc396f534f119532"), "name" : "42" } rs0:PRIMARY> database.col.update({name: "1"}, {name: "21"}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) rs0:PRIMARY> database.col.find({}) { "_id" : ObjectId("5b45026edc396f534f11952f"), "name" : "21" } { "_id" : ObjectId("5b450272dc396f534f119530"), "name" : "2" } { "_id" : ObjectId("5b450274dc396f534f119531"), "name" : "3" } { "_id" : ObjectId("5b450276dc396f534f119532"), "name" : "42" } rs0:PRIMARY> session.commitTransaction() rs0:PRIMARY> //   rs0:PRIMARY> database.col.find({}) { "_id" : ObjectId("5b45026edc396f534f11952f"), "name" : "21" } { "_id" : ObjectId("5b450272dc396f534f119530"), "name" : "2" } { "_id" : ObjectId("5b450274dc396f534f119531"), "name" : "3" } { "_id" : ObjectId("5b450276dc396f534f119532"), "name" : "42" } rs0:PRIMARY> //   ,     rs0:PRIMARY> session.startTransaction() rs0:PRIMARY> database.col.update({name: "21"}, {name: "1"}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) rs0:PRIMARY> database.col.find({}) { "_id" : ObjectId("5b45026edc396f534f11952f"), "name" : "1" } { "_id" : ObjectId("5b450272dc396f534f119530"), "name" : "2" } { "_id" : ObjectId("5b450274dc396f534f119531"), "name" : "3" } { "_id" : ObjectId("5b450276dc396f534f119532"), "name" : "42" } rs0:PRIMARY> //   rs0:PRIMARY> session.abortTransaction() rs0:PRIMARY> database.col.find({}) { "_id" : ObjectId("5b45026edc396f534f11952f"), "name" : "21" } { "_id" : ObjectId("5b450272dc396f534f119530"), "name" : "2" } { "_id" : ObjectId("5b450274dc396f534f119531"), "name" : "3" } { "_id" : ObjectId("5b450276dc396f534f119532"), "name" : "42" } rs0:PRIMARY> // !     ! rs0:PRIMARY> 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмрд┐рдирд╛ рддрдирд╛рд╡ рдХреЗ, рдЖрдк рдПрдХ рдмрд╣реБрд╕реНрддрд░реАрдп рдХреНрд▓рд╕реНрдЯрд░ рд╢реБрд░реВ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрднреА рдореЛрдВрдЧ рд▓реЗрдирджреЗрди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦрдиреЗ рдФрд░ рд▓реЗрдирджреЗрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╣ рд▓реЗрдирджреЗрди "рд▓рд╛рдЗрд╡" 1 рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдирд╣реАрдВ рд░рд╣рддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд░рджреНрдж рдХрд░ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред


рдкреБрдирд╢реНрдЪ: рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЖрдкрдХреЛ рдбреЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдпрд╛ рдореЛрдВрдЧрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдирд╣реАрдВ рд╕рд┐рдЦрд╛рдирд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕ рджрд┐рд▓рдЪрд╕реНрдк DBMS рдХреЗ рдирдП рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛рдиреЗ рдХрд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рддрд░реАрдХрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi417131/


All Articles