рд░рд┐рд▓реЗрд╢рдирд▓ рдЖрд▓реЗрдЦ DBMS EdgeDB 2.0 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди

EdgeDB 2.0 DBMS рдЪреЗ рдкреНрд░рдХрд╛рд╢рди рд╕рд╛рджрд░ рдХреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рд░рд┐рд▓реЗрд╢рдирд▓ рдЖрд▓реЗрдЦ рдбреЗрдЯрд╛ рдореЙрдбреЗрд▓ рдЖрдгрд┐ EdgeQL рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рд▓рд╛рдЧреВ рдХрд░рддреЗ, рдЬрдЯрд┐рд▓ рд╢реНрд░реЗрдгреАрдмрджреНрдз рдбреЗрдЯрд╛рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдиреБрдХреВрд▓ рдЖрд╣реЗ. рдХреЛрдб Python рдЖрдгрд┐ Rust (рдкрд╛рд░реНрд╕рд░ рдЖрдгрд┐ рдХрд╛рдордЧрд┐рд░реА-рдЧрдВрднреАрд░ рднрд╛рдЧ) рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ Apache 2.0 рд▓рд╛рдпрд╕рдиреНрд╕ рдЕрдВрддрд░реНрдЧрдд рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рд╣рд╛ рдкреНрд░рдХрд▓реНрдк PostgreSQL рд╕рд╛рдареА рдЕреЕрдб-рдСрди рдореНрд╣рдгреВрди рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдд рдЖрд╣реЗ. Python, Go, Rust рдЖрдгрд┐ TypeScript/Javascript рд╕рд╛рдареА рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд╛рдпрдмреНрд░рд░реА рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд. DBMS рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЖрдгрд┐ рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡реНрд╣ рдХреНрд╡реЗрд░реА рдПрдХреНрдЭрд┐рдХреНрдпреВрд╢рди (REPL) рд╕рд╛рдареА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓реНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЗ.

рдЯреЗрдмрд▓-рдЖрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛ рдореЙрдбреЗрд▓рдРрд╡рдЬреА, рдПрдЬрдбреАрдмреА рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░рд╛рдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдШреЛрд╖рдгрд╛рддреНрдордХ рдкреНрд░рдгрд╛рд▓реА рд╡рд╛рдкрд░рддреЗ. рдкрд░рджреЗрд╢реА рдХреА рдРрд╡рдЬреА, рд╕рдВрджрд░реНрднрд╛рдиреБрд╕рд╛рд░ рд▓рд┐рдВрдХ рдХрд░рдгреЗ рдкреНрд░рдХрд╛рд░рд╛рдВрдордзреАрд▓ рд╕рдВрдмрдВрдз рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ (рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рджреБрд╕рд░реНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреА рдорд╛рд▓рдорддреНрддрд╛ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ).

рд╡реНрдпрдХреНрддреА { рдЖрд╡рд╢реНрдпрдХ рдорд╛рд▓рдорддреНрддреЗрдЪреЗ рдирд╛рд╡ -> str; } рдкреНрд░рдХрд╛рд░ рдЪрд┐рддреНрд░рдкрдЯ { рдЖрд╡рд╢реНрдпрдХ рдЧреБрдгрдзрд░реНрдо рд╢реАрд░реНрд╖рдХ -> str; рдорд▓реНрдЯреА рд▓рд┐рдВрдХ рдХрд▓рд╛рдХрд╛рд░ -> рд╡реНрдпрдХреНрддреА; }

рдХреНрд╡реЗрд░реА рдкреНрд░рдХреНрд░рд┐рдпреЗрд▓рд╛ рдЧрддреА рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХрд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рдордЬрдмреВрдд рдорд╛рд▓рдорддреНрддрд╛ рдЯрд╛рдпрдкрд┐рдВрдЧ, рдорд╛рд▓рдорддреНрддрд╛ рдореВрд▓реНрдп рдирд┐рд░реНрдмрдВрдз, рдЧрдгрдирд╛ рдХреЗрд▓реЗрд▓реЗ рдЧреБрдгрдзрд░реНрдо рдЖрдгрд┐ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдирд╛ рджреЗрдЦреАрд▓ рд╕рдорд░реНрдерди рджрд┐рд▓реЗ рдЬрд╛рддреЗ. EdgeDB рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдХреАрдордЪреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ, рдЬреА рдХрд╛рд╣реА рдкреНрд░рдорд╛рдгрд╛рдд ORM рдЪреА рдЖрдард╡рдг рдХрд░реВрди рджреЗрддреЗ, рддреНрдпрд╛рдд рд╕реНрдХреАрдорд╛ рдорд┐рдХреНрд╕ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛, рднрд┐рдиреНрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдордзреАрд▓ рдЧреБрдгрдзрд░реНрдо рдЖрдгрд┐ рдПрдХрд╛рддреНрдорд┐рдХ JSON рд╕рдорд░реНрдерди рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ.

рд╕реНрдХреАрдорд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдВрдЧрднреВрдд рд╕рд╛рдзрдиреЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реА рдЬрд╛рддрд╛рдд - рд╡реЗрдЧрд│реНрдпрд╛ esdl рдлрд╛рдИрд▓рдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реА рд╕реНрдХреАрдорд╛ рдмрджрд▓рд▓реНрдпрд╛рдирдВрддрд░, рдлрдХреНрдд "edgedb migration create" рдХрдорд╛рдВрдб рдЪрд╛рд▓рд╡рд╛ рдЖрдгрд┐ DBMS рд╕реНрдХреАрдорд╛рдордзреАрд▓ рдлрд░рдХрд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрд▓ рдЖрдгрд┐ рдкрд░рд╕реНрдкрд░рд░рд┐рддреНрдпрд╛ рд╕реНрдерд▓рд╛рдВрддрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдпрд╛рд░ рдХрд░реЗрд▓. рдирд╡реАрди рдпреЛрдЬрдирд╛. рд╕реНрдХреАрдорд╛ рдмрджрд▓рд╛рдВрдЪрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдЖрдкреЛрдЖрдк рдЯреНрд░реЕрдХ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.

рдХреНрд╡реЗрд░реА рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, GraphQL рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдЖрдгрд┐ рдкреНрд░реЛрдкреНрд░рд╛рдпрдЯрд░реА EdgeDB рднрд╛рд╖рд╛, рдЬреА рд╢реНрд░реЗрдгреАрдмрджреНрдз рдбреЗрдЯрд╛рд╕рд╛рдареА SQL рдЪреЗ рд░реВрдкрд╛рдВрддрд░ рдЖрд╣реЗ, рджреЛрдиреНрд╣реА рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗрдд. рд╕реВрдЪреАрдРрд╡рдЬреА, рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо рд╕рдВрд░рдЪрд┐рдд рдкрджреНрдзрддреАрдиреЗ рд╕реНрд╡рд░реВрдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рд╕рдмрдХреНрд╡реЗрд░реАрдЬ рдЖрдгрд┐ рдЬреЙрдЗрдиреНрд╕рдРрд╡рдЬреА, рддреБрдореНрд╣реА рдПрдХ EdgeQL рдХреНрд╡реЗрд░реА рджреБрд╕рд░реНтАНрдпрд╛ рдХреНрд╡реЗрд░реАрдордзреНрдпреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддреА рдореНрд╣рдгреВрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛. рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрдгрд┐ рдЪрдХреНрд░ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗрдд.

рдЪрд┐рддреНрд░рдкрдЯ рдирд┐рд╡рдбрд╛ { рд╢реАрд░реНрд╖рдХ, рдЕрднрд┐рдиреЗрддреЗ: { рдирд╛рд╡ } } рдлрд┐рд▓реНрдЯрд░ .рд╢реАрд░реНрд╖рдХ = "рдж рдореЕрдЯреНрд░рд┐рдХреНрд╕" рдШрд╛рд▓рд╛ рдЪрд┐рддреНрд░рдкрдЯ { рд╢реАрд░реНрд╖рдХ := "рдж рдореЕрдЯреНрд░рд┐рдХреНрд╕ рдкреБрдирд░реБрддреНрдерд╛рди", рдЕрднрд┐рдиреЗрддреЗ := ( рд╡реНрдпрдХреНрддреА рдлрд┐рд▓реНрдЯрд░ рдирд┐рд╡рдбрд╛ . { 'рдХреЗрдиреВ рд░реАрд╡реНрд╣реНрд╕', 'рдХреЕрд░реА- рдЕреЕрди рдореЙрд╕', 'рд▓реЙрд░реЗрдиреНрд╕ рдлрд┐рд╢рдмрд░реНрди' } ) } {0, 1, 2, 3} рдпреБрдирд┐рдпрдирдордзреАрд▓ рд╕рдВрдЦреНрдпреЗрд╕рд╛рдареА ( { рд╕рдВрдЦреНрдпрд╛, рд╕рдВрдЦреНрдпрд╛ + 0.5 } рдирд┐рд╡рдбрд╛);

рдирд╡реАрди рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ:

  • рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢рд╛рд╕рдирд╛рд╕рд╛рдареА рдПрдХ рдЕрдВрдЧрднреВрдд рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рдбреЗрдЯрд╛ рдкрд╛рд╣рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдгреНрдпрд╛рд╕, EdgeQL рдХреНрд╡реЗрд░реА рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдпреЛрдЬрдиреЗрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЛ. рдЗрдВрдЯрд░рдлреЗрд╕ тАЬedgedb uiтАЭ рдХрдорд╛рдВрдбрджреНрд╡рд╛рд░реЗ рд▓рд╛рдБрдЪ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рддреНрдпрд╛рдирдВрддрд░ рддреЛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛рдирд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЛ.
    рд░рд┐рд▓реЗрд╢рдирд▓ рдЖрд▓реЗрдЦ DBMS EdgeDB 2.0 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди
  • "GROUP" рдЕрднрд┐рд╡реНрдпрдХреНрддреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ, рдЬреА рддреБрдореНрд╣рд╛рд▓рд╛ SELECT рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ рдЧреНрд░реБрдкрд┐рдВрдЧ рдкреНрд░рдорд╛рдгреЗрдЪ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд EdgeQL рдЕрднрд┐рд╡реНрдпрдХреНрддреА рд╡рд╛рдкрд░реВрди рдбреЗрдЯрд╛ рдЖрдгрд┐ рдЧрдЯ рдбреЗрдЯрд╛рдЪреЗ рд╡рд┐рднрд╛рдЬрди рдЖрдгрд┐ рдПрдХрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ.
  • рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрддрд░рд╛рд╡рд░ рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛. рдкреНрд░рд╡реЗрд╢рд╛рдЪреЗ рдирд┐рдпрдо рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдХреАрдорд╛ рд╕реНрддрд░рд╛рд╡рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд╕реНрддреВрдВрдЪрд╛ рдард░рд╛рд╡рд┐рдХ рд╕рдВрдЪ рдЖрдгрдгреЗ, рдШрд╛рд▓рдгреЗ, рд╣рдЯрд╡рдгреЗ рдЖрдгрд┐ рдЕрдкрдбреЗрдЯ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдорд░реНрдпрд╛рджрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдореНрд╣реА рдЕрд╕рд╛ рдирд┐рдпрдо рдЬреЛрдбреВ рд╢рдХрддрд╛ рдЬреЛ рдХреЗрд╡рд│ рд▓реЗрдЦрдХрд╛рд▓рд╛ рдкреНрд░рдХрд╛рд╢рди рдЕрдкрдбреЗрдЯ рдХрд░реВ рджреЗрддреЛ.
  • рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдХреАрдордордзреНрдпреЗ рдЧреНрд▓реЛрдмрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА. рдирд╡реАрди рдЧреНрд▓реЛрдмрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ current_user рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ рдмрд╛рдВрдзрдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ.
  • рдореВрд▓реНрдпрд╛рдВрдЪреНрдпрд╛ рд╢реНрд░реЗрдгреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгрд╛рд▒реНрдпрд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.
  • рд░рд╕реНрдЯ рднрд╛рд╖реЗрд╕рд╛рдареА рдЕрдзрд┐рдХреГрдд рдХреНрд▓рд╛рдпрдВрдЯ рд▓рд╛рдпрдмреНрд░рд░реА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓реА рдЖрд╣реЗ.
  • EdgeDB рдмрд╛рдпрдирд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реНрдерд┐рд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ рдПрдХрд╛рдЪ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рдирдордзреНрдпреЗ рдПрдХрд╛рдЪ рд╡реЗрд│реА рдЕрдиреЗрдХ рднрд┐рдиреНрди рд╕рддреНрд░рд╛рдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреЗ рд╢рдХреНрдп рд╣реЛрддреЗ, HTTP рджреНрд╡рд╛рд░реЗ рдлреЙрд░рд╡рд░реНрдб рдХрд░рдгреЗ, рдЧреНрд▓реЛрдмрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЖрдгрд┐ рд╕реНрдерд╛рдирд┐рдХ рд░рд╛рдЬреНрдпреЗ рд╡рд╛рдкрд░рдгреЗ.
  • рд╕реЙрдХреЗрдЯ рдЕреЕрдХреНрдЯрд┐рд╡реНрд╣реЗрд╢рдирд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд░реНрд╡реНрд╣рд░ рд╣рдБрдбрд▓рд░рд▓рд╛ рдореЗрдорд░реАрдордзреНрдпреЗ рдареЗрд╡реВ рд╢рдХрдд рдирд╛рд╣реА рдЖрдгрд┐ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдд рдЕрд╕рддрд╛рдирд╛рдЪ рдЪрд╛рд▓рд╡реВ рджреЗрддреЗ (рдбреЗрд╡реНрд╣рд▓рдкрд░ рд╕рд┐рд╕реНрдЯрдорд╡рд░ рд╕рдВрд╕рд╛рдзрдиреЗ рдЬрддрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд).

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛