PostgreSQL DBMS рдкрд░ рдЖрдзрд╛рд░рд┐рдд FerretDB, MongoDB рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкрд╣рд▓реА рд╕реНрдерд┐рд░ рд░рд┐рд▓реАрдЬрд╝

FerretDB 1.0 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд░рд┐рд▓реАрдЬрд╝ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреА рдЧрдИ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдмрд┐рдирд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рдЙрдиреНрдореБрдЦ DBMS MongoDB рдХреЛ PostgreSQL рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред FerretDB рдХреЛ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ MongoDB рдХреЛ рдХреЙрд▓ рдХреЛ SQL рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ PostgreSQL рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ PostgreSQL рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрдВрдбрд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 1.0 рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдкрд╣рд▓реА рд╕реНрдерд┐рд░ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЛрдб рдЧреЛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдкрд╛рдЪреЗ 2.0 рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

FerretDB рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд▓рдХреНрд╖рд┐рдд рджрд░реНрд╢рдХ рд╡реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ рдЬреЛ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ MongoDB рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреБрд▓реЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдЪрд░рдг рдореЗрдВ, рдлреЗрд░реЗрдЯрдбреАрдмреА рдореЛрдВрдЧреЛрдбреАрдмреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рдмрд╕реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред FerretDB рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ MongoDB рдХреЗ рдПрдХ рдЧреИрд░-рдореБрдХреНрдд SSPL рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рд╕рдВрдХреНрд░рдордг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ AGPLv3 рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЦреБрд▓рд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ SSPL рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреЗрджрднрд╛рд╡рдкреВрд░реНрдг рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рди рдХреЗрд╡рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рд╣реА, рдмрд▓реНрдХрд┐ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдкреНрд░рд╛рд╡рдзрд╛рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рднреАред

MongoDB рддреЗрдЬ рдФрд░ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмреАрдЪ рдПрдХ рдЬрдЧрд╣ рд░рдЦрддрд╛ рд╣реИ рдЬреЛ рдХреБрдВрдЬреА / рдореВрд▓реНрдп рдбреЗрдЯрд╛ рдФрд░ рд░рд┐рд▓реЗрд╢рдирд▓ DBMS рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИред MongoDB JSON-рдЬреИрд╕реЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд▓рдЪреАрд▓реА рднрд╛рд╖рд╛ рд╣реИ, рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдЧреНрд░рд╣реАрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрдбрд╝реА рдмрд╛рдЗрдирд░реА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рднрдВрдбрд╛рд░рдг рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓реЙрдЧрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдкреНрд░рддрд┐рдорд╛рди рдорд╛рдирдЪрд┐рддреНрд░/рдХрдо рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдп рдХрд░реЗрдВ, рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ рдФрд░ рджреЛрд╖-рд╕рд╣рд┐рд╖реНрдгреБ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред

FerretDB 1.0 рдореЗрдВ рд╣реБрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рд╕реЗ:

  • рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдмрдирд╛рдиреЗ рдФрд░ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд createIndexes рдФрд░ dropIndexes рдХрдорд╛рдВрдбред
  • GetMore рдХрдорд╛рдВрдб рдХреЛ рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рдХреЗ рдПрдХ рдирдП рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдХрд░реНрд╕рд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдвреВрдВрдвреЗрдВ рдФрд░ рдПрдХрддреНрд░ рдХрд░реЗрдВред
  • рд╕рдореВрд╣ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдпреЛрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП $sum рдПрдХрддреНрд░реАрдХрд░рдг рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
  • $limit рдФрд░ $skip рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рддрд╛рдХрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдПрдЧреНрд░реАрдЧреЗрдЯ рдХрд░рддреЗ рд╕рдордп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
  • рдПрдЧреНрд░реАрдЧреЗрдЯ рдХрд░рддреЗ рд╕рдордп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреА рдЧрд┐рдирддреА рдХреЗ рд▓рд┐рдП $count рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
  • рдЖрдиреЗ рд╡рд╛рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рд╕рд░рдгреА рдлрд╝реАрд▓реНрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП $unwind рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рд░рдгреА рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реВрдЪреА рддреИрдпрд╛рд░ рдХреА рдЧрдИред
  • рд╕рдВрдЧреНрд░рд╣ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрдБрдХрдбрд╝реЗ рдФрд░ рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CollStats, dbStats рдФрд░ dataSize рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдЖрдВрд╢рд┐рдХ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ