рдХреЗ рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS рд╣рд░реВ рдЖрдзреБрдирд┐рдХ рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдЖрдзрд╛рд░ рд╣реБрдиреН?

рдЖрдзреБрдирд┐рдХ рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓реА рдзреЗрд░реИ рдЬрдЯрд┐рд▓ рдЫрдиреНред рд╕рдмреИ рднрдиреНрджрд╛ рдХрдо рд╣реЛрдЗрди, рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЬрдЯрд┐рд▓рддрд╛ рддрд┐рдиреАрд╣рд░реВрдорд╛ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдПрдХреЛ рдбрд╛рдЯрд╛рдХреЛ рдЬрдЯрд┐рд▓рддрд╛рдХреЛ рдХрд╛рд░рдгрд▓реЗ рд╣реЛред рдбрд╛рдЯрд╛рдХреЛ рдЬрдЯрд┐рд▓рддрд╛ рдкреНрд░рд╛рдпрдГ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХрд╛ рдбрд╛рдЯрд╛ рдореЛрдбреЗрд▓рд╣рд░реВрдХреЛ рд╡рд┐рд╡рд┐рдзрддрд╛рдорд╛ рд╣реБрдиреНрдЫред рддреНрдпрд╕реЛрднрдП, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЬрдм рдбреЗрдЯрд╛ "рдареВрд▓реЛ" рд╣реБрдиреНрдЫ, рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рдпрд╕рдХреЛ рдорд╛рддреНрд░рд╛ ("рднреЛрд▓реНрдпреБрдо") рдорд╛рддреНрд░ рд╣реЛрдЗрди, рддрд░ рдпрд╕рдХреЛ рд╡рд┐рд╡рд┐рдзрддрд╛ ("рд╡рд┐рд╡рд┐рдзрддрд╛") рдкрдирд┐ рд╣реЛред

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рддрд░реНрдХрдорд╛ рдХреБрдиреИ рддреНрд░реБрдЯрд┐ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрднрдПрди рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдкрдвреНрдиреБрд╣реЛрд╕реНред

рдХреЗ рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS рд╣рд░реВ рдЖрдзреБрдирд┐рдХ рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдЖрдзрд╛рд░ рд╣реБрдиреН?


рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ

Polyglot рджреГрдврддрд╛
рдмрд╣реБ-рдореЛрдбреЗрд▓
рд░рд┐рд▓реЗрд╢рдирд▓ рдореЛрдбреЗрд▓рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS
     MS SQL рд╕рд░реНрднрд░рдорд╛ рдХрд╛рдЧрдЬрд╛рдд рдореЛрдбреЗрд▓
     MS SQL рд╕рд░реНрднрд░рдорд╛ рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓
рдХрд╛рдЧрдЬрд╛рдд рдореЛрдбреЗрд▓рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдмрд╣реБ-рдореЛрдбрд▓ DBMS
     MarkLogic рдорд╛ рд░рд┐рд▓реЗрд╢рдирд▓ рдореЛрдбреЗрд▓
     MarkLogic рдорд╛ рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓
рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS "рдореБрдЦреНрдп рдореЛрдбреЗрд▓ рдмрд┐рдирд╛"
     ArangoDB
     рдУрд░рд┐рдПрдиреНрдЯрдбреАрдмреА
     Azure CosmosDB
рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS?
рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛
рдкреЛрд▓

Polyglot рджреГрдврддрд╛

рдорд╛рдерд┐рдХреЛ рддрдереНрдпрд▓рд╛рдИ рдирд┐рдореНрддреНрдпрд╛рдЙрдБрдЫ рдХрд┐ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рдПрдХ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдврд╛рдБрдЪрд╛ рднрд┐рддреНрд░ рдкрдирд┐ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдзреЗрд░реИ рдлрд░рдХ DBMSs рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЬрд╕рдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХрд▓реЗ рдЖрдлреНрдиреИ рдбрд╛рдЯрд╛ рдореЛрдбреЗрд▓рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред M. Fowler рдХреЛ рд╣рд▓реНрдХрд╛ рд╣рд╛рдд рд╕рдВрдЧ, рд▓реЗрдЦрдХ рдзреЗрд░реИ рдкреНрд░рд╕рд┐рджреНрдз рдкреБрд╕реНрддрдХрд╣рд░реВ рд░ рдПрдХ рд╕рд╣-рд▓реЗрдЦрдХрд╣рд░реВ рдЪреБрд╕реНрдд рдШреЛрд╖рдгрд╛рдкрддреНрд░, рдпреЛ рдЕрд╡рд╕реНрдерд╛ рднрдирд┐рдиреНрдЫ рдмрд╣реБ-рд╡рд┐рд╡рд┐рдз рднрдгреНрдбрд╛рд░рдг ("рдкреЛрд▓рд┐рдЧреНрд▓реЛрдЯ рджреГрдврддрд╛")ред

рдлрд╛рдЙрд▓рд░рд╕рдБрдЧ рдИ-рд╡рд╛рдгрд┐рдЬреНрдпрдХреЛ рдХреНрд╖реЗрддреНрд░рдорд╛ рдкреВрд░реНрдг-рд╡рд┐рд╢реЗрд╖ рд░ рдЙрдЪреНрдЪ-рд▓реЛрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдбреЗрдЯрд╛ рднрдгреНрдбрд╛рд░рдг рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрдиреЗ рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдкрдирд┐ рдЫред

рдХреЗ рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS рд╣рд░реВ рдЖрдзреБрдирд┐рдХ рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдЖрдзрд╛рд░ рд╣реБрдиреН?

рдпреЛ рдЙрджрд╛рд╣рд░рдг, рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдХреЗрд╣реА рд╣рджрд╕рдореНрдо рдЕрддрд┐рд░рдВрдЬрд┐рдд рдЫ, рддрд░ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ рдПрдХ рд╡рд╛ рдЕрд░реНрдХреЛ DBMS рдЫрдиреМрдЯ рдЧрд░реНрдиреЗ рдкрдХреНрд╖рдорд╛ рдХреЗрд╣реА рд╡рд┐рдЪрд╛рд░рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрд╣рд╛рдБ.

рдпрд╕реНрддреЛ рдЪрд┐рдбрд┐рдпрд╛рдЦрд╛рдирд╛рдорд╛ рд╕реЗрд╡рдХ рд╣реБрди рд╕рдЬрд┐рд▓реЛ рдЫреИрди рднрдиреНрдиреЗ рд╕реНрдкрд╖реНрдЯ рдЫред

  • рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗ рдХреЛрдбрдХреЛ рдорд╛рддреНрд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ DBMS рдХреЛ рд╕рдВрдЦреНрдпрд╛рдХреЛ рдЕрдиреБрдкрд╛рддрдорд╛ рдмрдвреНрдЫ; рдХреЛрдб рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдбрд╛рдЯрд╛рдХреЛ рдорд╛рддреНрд░рд╛ рд░рд╛рдореНрд░реЛ рд╣реБрдиреНрдЫ рдпрджрд┐ рдпреЛ рд╕рдВрдЦреНрдпрд╛рдХреЛ рд╡рд░реНрдЧрд╕рдБрдЧ рд╕рдорд╛рдиреБрдкрд╛рддрд┐рдХ рдЫреИрдиред
  • рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ DBMS рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛рдХреЛ рдПрдХ рдЧреБрдгрд╛рдХреЛ рд░реВрдкрдорд╛, рдкреНрд░рддреНрдпреЗрдХ DBMS рд╣рд░реВрдХреЛ рдЙрджреНрдпрдо рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ (рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА, рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛, рдЙрдЪреНрдЪ рдЙрдкрд▓рдмреНрдзрддрд╛) рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗ рд▓рд╛рдЧрдд рдмрдвреНрдЫред
  • рд╕рдордЧреНрд░ рд░реВрдкрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЙрдкрдкреНрд░рдгрд╛рд▓реАрдХреЛ рдЙрджреНрдпрдо рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдЕрд╕рдореНрднрд╡ рдЫ - рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рд▓реЗрдирджреЗрдирд╢реАрд▓рддрд╛ред

рдЪрд┐рдбрд┐рдпрд╛рдЦрд╛рдирд╛ рдирд┐рд░реНрджреЗрд╢рдХрдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдмрд╛рдЯ, рд╕рдмреИ рдХреБрд░рд╛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

  • DBMS рдирд┐рд░реНрдорд╛рддрд╛рдмрд╛рдЯ рдЗрдЬрд╛рдЬрддрдкрддреНрд░ рд░ рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд╕рд╣рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрддрдорд╛ рдмрд╣реБ рд╡реГрджреНрдзрд┐ред
  • рдУрднрд░ рд╕реНрдЯрд╛рдлрд┐рдЩ рд░ рдореНрдпрд╛рдж рдердкрд┐рдпреЛред
  • рдбреЗрдЯрд╛ рдЕрд╕рдВрдЧрддрд┐рдХреЛ рдХрд╛рд░рдг рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд┐рддреНрддреАрдп рдШрд╛рдЯрд╛ рд╡рд╛ рджрдгреНрдбред

рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡рдХреЛ рдХреБрд▓ рд▓рд╛рдЧрдд (TCO) рдорд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡реГрджреНрдзрд┐ рднрдПрдХреЛ рдЫред рдХреЗ рддреНрдпрд╣рд╛рдБ "рдмрд╣реБ рднрдгреНрдбрд╛рд░рдг рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ" рдХреЛ рд╕реНрдерд┐рддрд┐рдмрд╛рдЯ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреЗ рдХреБрдиреИ рдЙрдкрд╛рдп рдЫ?

рдмрд╣реБ-рдореЛрдбреЗрд▓

"рдмрд╣реБрднрд┐рдиреНрди рднрдгреНрдбрд╛рд░рдг" рд╢рдмреНрдж 2011 рдорд╛ рдкреНрд░рдпреЛрдЧрдорд╛ рдЖрдпреЛред рджреГрд╖реНрдЯрд┐рдХреЛрдгрдХреЛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдЬрд╛рдЧрд░реВрдХрддрд╛ рд░ рд╕рдорд╛рдзрд╛рдирдХреЛ рдЦреЛрдЬреАрдорд╛ рдзреЗрд░реИ рд╡рд░реНрд╖ рд▓рд╛рдЧреНрдпреЛ, рд░ 2015 рд╕рдореНрдо, рдЧрд╛рд░реНрдЯрдирд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╣рд░реВрдХреЛ рдореБрдЦрдмрд╛рдЯ, рдЬрд╡рд╛рдл рддрдпрд╛рд░ рднрдпреЛ:

рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдХрд┐ рдпрд╕ рдкрдЯрдХ рдЧрд╛рд░реНрдЯрдирд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╣рд░реВ рддрд┐рдиреАрд╣рд░реВрдХреЛ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреАрдорд╛ рд╕рд╣реА рдерд┐рдПред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдкреГрд╖реНрдардорд╛ рдЬрд╛рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ рдореБрдЦреНрдп рдореВрд▓реНрдпрд╛рдЩреНрдХрди DB-рдЗрдиреНрдЬрд┐рдирд╣рд░реВрдорд╛ DBMS, рддрдкрд╛рдИрдВрд▓реЗ рддреНрдпреЛ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ╨╛рдпрд╕рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдиреЗрддрд╛рд╣рд░реВрд▓реЗ рдЖрдлреВрд▓рд╛рдИ рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMSs рдХреЛ рд░реВрдкрдорд╛ рд░рд╛рдЦреНрдЫрдиреНред рдЙрд╣реА рдХреБрдиреИ рдкрдирд┐ рдирд┐рдЬреА рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдкреГрд╖реНрдардорд╛ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫред

рддрд▓рдХреЛ рддрд╛рд▓рд┐рдХрд╛рд▓реЗ DBMS рджреЗрдЦрд╛рдЙрдБрдЫ - рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдЬреА рдореВрд▓реНрдпрд╛рдЩреНрдХрдирдорд╛ рд▓рд┐рдбрд░рд╣рд░реВ, рдЬрд╕рд▓реЗ рдмрд╣реБ-рдореЛрдбреЗрд▓ рднрдПрдХреЛ рджрд╛рдмреА рдЧрд░реНрджрдЫред рдкреНрд░рддреНрдпреЗрдХ DBMS рдХреЛ рд▓рд╛рдЧрд┐, рдореВрд▓ рд╕рдорд░реНрдерд┐рдд рдореЛрдбреЗрд▓ (рдЬреБрди рдПрдХ рдкрдЯрдХ рдорд╛рддреНрд░ рдерд┐рдпреЛ) рд░ рдпрд╕рдХреЛ рд╕рд╛рдердорд╛ рд╣рд╛рд▓ рд╕рдорд░реНрдерд┐рдд рдореЛрдбреЗрд▓рд╣рд░реВ рд╕рдВрдХреЗрдд рдЧрд░рд┐рдПрдХреЛ рдЫред DBMS рд╣рд░реВ рдкрдирд┐ рд╕реВрдЪреАрдмрджреНрдз рдЫрдиреН рдЬрд╕рд▓реЗ рдЖрдлреВрд▓рд╛рдИ "рдореВрд▓ рд░реВрдкрдорд╛ рдмрд╣реБ-рдореЛрдбреЗрд▓" рдХреЛ рд░реВрдкрдорд╛ рд░рд╛рдЦреНрдЫрдиреН рд░, рд╕рд┐рд░реНрдЬрдирд╛рдХрд░реНрддрд╛рд╣рд░реВрдХрд╛ рдЕрдиреБрд╕рд╛рд░, рдХреБрдиреИ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд╡рдВрд╢рд╛рдиреБрдЧрдд рдореЛрдбреЗрд▓ рдЫреИрдиред

DBMSрдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдореЛрдбреЗрд▓рдЕрддрд┐рд░рд┐рдХреНрдд рдореЛрдбреЗрд▓рд╣рд░реВ
рдмрдЬреЗрдЯрд╕рдореНрдмрдиреНрдзрдЧрддрдЧреНрд░рд╛рдл, рдХрд╛рдЧрдЬрд╛рдд
рдПрдордПрд╕ рдПрд╕рдХреНрдпреВрдПрд▓рд╕рдореНрдмрдиреНрдзрдЧрддрдЧреНрд░рд╛рдл, рдХрд╛рдЧрдЬрд╛рдд
PostgreSQLрд╕рдореНрдмрдиреНрдзрдЧрддрдЧреНрд░рд╛рдл*, рдХрд╛рдЧрдЬрд╛рдд
MarkLogicрд╡реГрддреНрддрдЪрд┐рддреНрд░рдЧреНрд░рд╛рдл, рд╕рд╛рдкреЗрдХреНрд╖
MongoDBрд╡реГрддреНрддрдЪрд┐рддреНрд░рдХреБрдЮреНрдЬреА-рдорд╛рди, рдЧреНрд░рд╛рдл*
рдбрд╛рдЯрд╛рд╕реНрдЯреНрдпрд╛рдХреНрд╕рдЪреМрдбрд╛ рд╕реНрддрдореНрднрд╡реГрддреНрддрдЪрд┐рддреНрд░, рдЧреНрд░рд╛рдл
RedisрдХреБрдЮреНрдЬреА-рдорд╛рдирд╡реГрддреНрддрдЪрд┐рддреНрд░, рдЧреНрд░рд╛рдл*
ArangoDB-рдЧреНрд░рд╛рдл, рдХрд╛рдЧрдЬрд╛рдд
рдУрд░рд┐рдПрдиреНрдЯрдбреАрдмреА-рдЧреНрд░рд╛рдл, рдХрд╛рдЧрдЬрд╛рдд, рд╕рд╛рдкреЗрдХреНрд╖
Azure CosmosDB-рдЧреНрд░рд╛рдл, рдХрд╛рдЧрдЬрд╛рдд, рд╕рд╛рдкреЗрдХреНрд╖

рдЯреЗрдмреБрд▓рдорд╛ рдиреЛрдЯрд╣рд░реВ

рд░рд┐рдЬрд░реНрднреЗрд╕рдирд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рддрд╛рд░рд╛ рдЪрд┐рдиреНрд╣рд╣рд░реВ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрдБрдЫрдиреН:

  • PostgreSQL DBMS рд▓реЗ рдЧреНрд░рд╛рдл рдбреЗрдЯрд╛ рдореЛрдбреЗрд▓рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджреИрди, рддрд░ рдпреЛ рдЙрддреНрдкрд╛рджрдирд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ рдпрд╕рдХреЛ рдЖрдзрд╛рд░рдорд╛, рдЬрд╕реНрддреИ AgensGraphред
  • MongoDB рдХреЛ рд╕рдореНрдмрдиреНрдзрдорд╛, рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛рдорд╛ рдЧреНрд░рд╛рдл рдЕрдкрд░реЗрдЯрд░рд╣рд░реВрдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрдиреБ рдмрдвреА рд╕рд╣реА рдЫ ($lookup, $graphLookup) рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рднрдиреНрджрд╛, рдпрджреНрдпрдкрд┐, рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рддрд┐рдиреАрд╣рд░реВрдХреЛ рдкрд░рд┐рдЪрдпрд▓реЗ рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиреЗ рджрд┐рд╢рд╛рдорд╛ рднреМрддрд┐рдХ рднрдгреНрдбрд╛рд░рдг рд╕реНрддрд░рдорд╛ рдХреЗрд╣реА рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫред
  • Redis рдХреЛ рд╕рдореНрдмрдиреНрдзрдорд╛, рд╣рд╛рдореНрд░реЛ рдорддрд▓рдм рд╡рд┐рд╕реНрддрд╛рд░ RedisGraph.

рдЕрд░реНрдХреЛ, рдкреНрд░рддреНрдпреЗрдХ рдХрдХреНрд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдпреЛ рдХрдХреНрд╖рд╛рдмрд╛рдЯ DBMS рдорд╛ рдзреЗрд░реИ рдореЛрдбреЗрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдХрд╕рд░реА рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдиреЗрдЫреМрдВред рд╣рд╛рдореА рд░рд┐рд▓реЗрд╕рдирд▓, рдХрд╛рдЧрдЬрд╛рдд рд░ рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓рд╣рд░реВрд▓рд╛рдИ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдорд╛рдиреНрдиреЗрдЫреМрдВ рд░ "рд╣рд░рд╛рдПрдХрд╛рд╣рд░реВ" рдХрд╕рд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреНрдЫрдиреН рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрди рд╡рд┐рд╢рд┐рд╖реНрдЯ DBMS рд╣рд░реВрдХреЛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред

рд░рд┐рд▓реЗрд╢рдирд▓ рдореЛрдбреЗрд▓рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS

рдкреНрд░рдореБрдЦ DBMSs рд╣рд╛рд▓ рд░рд┐рд▓реЗрд╢рдирд▓ рдЫрдиреН; рдЧрд╛рд░реНрдЯрдирд░рдХреЛ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреАрд▓рд╛рдИ рд╕рддреНрдп рдорд╛рдиреНрди рд╕рдХрд┐рдБрджреИрди рдпрджрд┐ RDBMSs рд▓реЗ рдмрд╣реБ-рдореЛрдбрд▓рд┐рдВрдЧрдХреЛ рджрд┐рд╢рд╛рдорд╛ рдЖрдиреНрджреЛрд▓рди рджреЗрдЦрд╛рдЙрдБрджреИрди рднрдиреЗред рд░ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдЫрдиреНред рдЕрдм рдПрдХ рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS рд╕реНрд╡рд┐рд╕ рдЪрдХреНрдХреБ рдЬрд╕реНрддреИ рд╣реЛ, рдЬреБрди рдХреЗрд╣рд┐ рд░рд╛рдореНрд░реЛ рдЧрд░реНрди рд╕рдХреНрджреИрди, рд╕реАрдзрд╛ рд▓реНрдпрд╛рд░реА рдПрд▓рд┐рд╕рдирд▓рд╛рдИ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рд▓реЗрдЦрдХ, рддрдерд╛рдкрд┐, Microsoft SQL рд╕рд░реНрднрд░рдорд╛ рдмрд╣реБ-рдореЛрдбрд▓рд┐рдВрдЧрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд▓рд╛рдИ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджрд┐рдиреНрдЫрдиреН, рдЬрд╕рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдХрд╛рдЧрдЬрд╛рдд рд░ рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ RDBMS рд╕рдорд░реНрдерди рд╡рд░реНрдгрди рдЧрд░рд┐рдиреЗрдЫред

MS SQL рд╕рд░реНрднрд░рдорд╛ рдХрд╛рдЧрдЬрд╛рдд рдореЛрдбреЗрд▓

MS SQL рд╕рд░реНрднрд░рд▓реЗ рдХрд╛рдЧрдЬрд╛рдд рдореЛрдбреЗрд▓рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдХрд╕рд░реА рд▓рд╛рдЧреВ рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ Habr├й рдорд╛ рджреБрдИрд╡рдЯрд╛ рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦрд╣рд░реВ рдЫрдиреН; рдо рдЖрдлреИрд▓рд╛рдИ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░рд┐рдЯреЗрд▓рд┐рдЩ рд░ рдХрдореЗрдиреНрдЯрд░реАрдорд╛ рд╕реАрдорд┐рдд рдЧрд░реНрдиреЗрдЫреБ:

MS SQL рд╕рд░реНрднрд░рдорд╛ рдХрд╛рдЧрдЬрд╛рдд рдореЛрдбреЗрд▓рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛ рд░рд┐рд▓реЗрд╢рдирд▓ DBMSs рдХреЛ рд▓рд╛рдЧрд┐ рдПрдХрджрдо рд╕рд╛рдорд╛рдиреНрдп рдЫ: JSON рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рд╕рд╛рдзрд╛рд░рдг рдкрд╛рда рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдПрдХреЛ рдЫред рдХрд╛рдЧрдЬрд╛рдд рдореЛрдбреЗрд▓рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдпреЛ JSON рдкрд╛рд░реНрд╕ рдЧрд░реНрди рд╡рд┐рд╢реЗрд╖ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреБ рд╣реЛ:

  • JSON_VALUE рд╕реНрдХреЗрд▓рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рдирд╣рд░реВ рдирд┐рдХрд╛рд▓реНрди,
  • JSON_QUERY рдЙрдк-рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдирд┐рдХрд╛рд▓реНрдиред

рджреБрдмреИ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВрдХреЛ рджреЛрд╕реНрд░реЛ рддрд░реНрдХ JSONPath-рдЬрд╕реНрддреЛ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рдорд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реЛред

рд╕рдВрдХреНрд╖реЗрдкрдорд╛, рд╣рд╛рдореА рднрдиреНрди рд╕рдХреНрдЫреМрдВ рдХрд┐ рдпрд╕ рддрд░рд┐рдХрд╛рд▓реЗ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХрд╛ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ "рдкреНрд░рдердо-рдХрдХреНрд╖рд╛ рд╕рдВрд╕реНрдерд╛рд╣рд░реВ" рд╕рдореНрдмрдиреНрдзрдорд╛ DBMS рдорд╛, рдЯрдкрд▓реНрд╕рдХреЛ рд╡рд┐рдкрд░реАрдд рд╣реЛрдЗрдирдиреНред рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛, MS SQL рд╕рд░реНрднрд░рдорд╛ JSON рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВрдХреЛ рдлрд┐рд▓реНрдбрд╣рд░реВрдорд╛ рд╣рд╛рд▓ рдХреБрдиреИ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рдЫреИрдирдиреН, рдЬрд╕рд▓реЗ рдпреА рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдХреЛ рдорд╛рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рд╕рд╛рдореЗрд▓ рд╣реБрди рдЧрд╛рд╣реНрд░реЛ рдмрдирд╛рдЙрдБрдЫ рд░ рдпреА рдорд╛рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдкрдирд┐ рдЪрдпрди рдЧрд░реНрджрдЫред рдпрджреНрдпрдкрд┐, рдпрд╕реНрддреЛ рдлрд┐рд▓реНрдбрдХреЛ рд▓рд╛рдЧрд┐ рдЧрдгрдирд╛ рдЧрд░рд┐рдПрдХреЛ рд╕реНрддрдореНрдн рд░ рдпрд╕рдорд╛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫред

рдердк рд░реВрдкрдорд╛, MS SQL рд╕рд░реНрднрд░рд▓реЗ рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдХреЛ рд╕рд╛рдордЧреНрд░реАрдмрд╛рдЯ JSON рдХрд╛рдЧрдЬрд╛рдд рд╕рд╣рдЬ рд░реВрдкрдорд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред FOR JSON PATH - рдПрдХ рд╕рдореНрднрд╛рд╡рдирд╛, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд░реНрдердорд╛, рдЕрдШрд┐рд▓реНрд▓реЛрдХреЛ рд╡рд┐рдкрд░реАрдд, рдкрд░рдореНрдкрд░рд╛рдЧрдд рднрдгреНрдбрд╛рд░рдгред рдпреЛ рд╕реНрдкрд╖реНрдЯ рдЫ рдХрд┐ RDBMS рдЬрддрд┐рд╕реБрдХреИ рдЫрд┐рдЯреЛ рд╣реЛрд╕реН, рдпреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдЧрдЬрд╛рдд DBMSs рдХреЛ рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛рдХреЛ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕рдкреВрд░реНрдг рдЫ, рдЬрд╕рд▓реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рддрдпрд╛рд░ рдЬрд╡рд╛рдлрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрджрдЫ, рд░ рд╡рд┐рдХрд╛рд╕рдХреЛ рд╕рд╣рдЬрддрд╛рдХрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╕рдХреНрдЫ, рддрд░ рдЧрддрд┐ рд╣реЛрдЗрдиред

рдЕрдиреНрддрдорд╛, MS SQL рд╕рд░реНрднрд░рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХрд╛рдЧрдЬрд╛рдд рдирд┐рд░реНрдорд╛рдгрдХреЛ рд╡рд┐рдкрд░рд┐рдд рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ: рддрдкрд╛рдИрдВрд▓реЗ JSON рд▓рд╛рдИ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рд╡рд┐рдШрдЯрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ OPENJSONред рдпрджрд┐ рдХрд╛рдЧрдЬрд╛рдд рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╕рдорддрд▓ рдЫреИрди рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ CROSS APPLY.

MS SQL рд╕рд░реНрднрд░рдорд╛ рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓

рдЧреНрд░рд╛рдл (LPG) рдореЛрдбреЗрд▓рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рдкрдирд┐ Microsoft SQL Server рдорд╛ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ рдЕрдиреБрдорд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреЗ: рдпреЛ рдиреЛрдбрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд░ рдЧреНрд░рд╛рдл рдХрд┐рдирд╛рд░рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╡рд┐рд╢реЗрд╖ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░рд┐рдПрдХреЛ рдЫред рддреНрдпрд╕реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреНрдЫ CREATE TABLE AS NODE ╨╕ CREATE TABLE AS EDGE рдХреНрд░рдорд╢рдГред

рдкрд╣рд┐рд▓реЛ рдкреНрд░рдХрд╛рд░рдХрд╛ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рд░реЗрдХрд░реНрдбрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рдорд╛рдиреНрдп рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рдЬрд╕реНрддреИ рд╣реБрдиреНрдЫрдиреН, рдХреЗрд╡рд▓ рдмрд╛рд╣реНрдп рднрд┐рдиреНрдирддрд╛ рдпреЛ рд╣реЛ рдХрд┐ рддрд╛рд▓рд┐рдХрд╛рд▓реЗ рдкреНрд░рдгрд╛рд▓реА рдХреНрд╖реЗрддреНрд░ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред $node_id - рдбрд╛рдЯрд╛рдмреЗрд╕ рднрд┐рддреНрд░ рдЧреНрд░рд╛рдл рдиреЛрдбрдХреЛ рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ред

рддреНрдпрд╕реНрддреИ, рджреЛрд╕реНрд░реЛ рдкреНрд░рдХрд╛рд░рдХрд╛ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рдкреНрд░рдгрд╛рд▓реА рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдЫрдиреН $from_id ╨╕ $to_id, рддреНрдпрд╕реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВрд▓реЗ рдиреЛрдбрд╣рд░реВ рдмреАрдЪрдХреЛ рдЬрдбрд╛рдирд╣рд░реВ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджрдЫред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░рдХреЛ рд╕рдореНрдмрдиреНрдзрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдЫреБрдЯреНрдЯреИ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред

рдХреЗ рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS рд╣рд░реВ рдЖрдзреБрдирд┐рдХ рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдЖрдзрд╛рд░ рд╣реБрдиреН? рдпрд╕рд▓рд╛рдИ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрджреНрд╡рд╛рд░рд╛ рдмреБрдЭреМрдВред рдЧреНрд░рд╛рдл рдбреЗрдЯрд╛рд▓рд╛рдИ рдЪрд┐рддреНрд░рдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЬрд╕реНрддреИ рд▓реЗрдЖрдЙрдЯ рд╣реБрди рджрд┐рдиреБрд╣реЛрд╕реНред рддреНрдпрд╕рдкрдЫрд┐ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди DDL рдкреНрд░рд╢реНрдирд╣рд░реВ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

CREATE TABLE Person (
  ID INTEGER NOT NULL,
  name VARCHAR(100)
) AS NODE;

CREATE TABLE Cafe (
  ID INTEGER NOT NULL, 
  name VARCHAR(100), 
) AS NODE;

CREATE TABLE likes (
  rating INTEGER
) AS EDGE;

CREATE TABLE friendOf
  AS EDGE;

ALTER TABLE likes
  ADD CONSTRAINT EC_LIKES CONNECTION (Person TO Cafe);

рддреНрдпрд╕реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдХреЛ рдореБрдЦреНрдп рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдпреЛ рд╣реЛ рдХрд┐ рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╡рд┐рд░реБрджреНрдзрдХреЛ рдкреНрд░рд╢реНрдирд╣рд░реВрдорд╛ рд╕рд╛рдЗрдлрд░-рдЬрд╕реНрддреЛ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рдХреЛ рд╕рд╛рде рдЧреНрд░рд╛рдл рдврд╛рдБрдЪрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫ (рдпрджреНрдпрдкрд┐, "*"рдЗрддреНрдпрд╛рджрд┐ рдЕрдЭреИ рд╕рдорд░реНрдерд┐рдд рдЫреИрди)ред рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдорд╛рдкрдирдХреЛ рдЖрдзрд╛рд░рдорд╛, рдпреЛ рдкрдирд┐ рдорд╛рдиреНрди рд╕рдХрд┐рдиреНрдЫ рдХрд┐ рдпреА рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛ рдирд┐рдпрдорд┐рдд рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛ рднрдиреНрджрд╛ рдлрд░рдХ рдЫ рд░ рддреНрдпрд╕реНрддрд╛ рдЧреНрд░рд╛рдл рдХреНрд╡реЗрд░реАрд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдЕрдиреБрдХреВрд▓рд┐рдд рдЫред

SELECT Cafe.name
  FROM Person, likes, Cafe
  WHERE MATCH (Person-(friendOf)-(likes)->Cafe)
  AND Person.name = 'John';

рдпрд╕рдмрд╛рд╣реЗрдХ, рдпрд╕реНрддреЛ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ рдпреА рдЧреНрд░рд╛рдл рдврд╛рдБрдЪрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдирдЧрд░реНрди рдзреЗрд░реИ рдЧрд╛рд╣реНрд░реЛ рдЫ, рдХрд┐рдирдХрд┐ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╕рд╛рдорд╛рдиреНрдп SQL рдкреНрд░рд╢реНрдирд╣рд░реВрдорд╛ рдкреНрд░рдгрд╛рд▓реА "рдЧреНрд░рд╛рдл" рдиреЛрдб рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдердк рдкреНрд░рдпрд╛рд╕рд╣рд░реВ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреЗрдЫред$node_id, $from_id, $to_id; рдПрдЙрдЯреИ рдХрд╛рд░рдгрд▓реЗ, рдбреЗрдЯрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рд╢реНрдирд╣рд░реВ рдпрд╣рд╛рдБ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫреИрди рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдкрдорд╛ рдмреЛрдЭрд┐рд▓ рдЫрдиреН)ред

MS SQL рд╕рд░реНрднрд░рдорд╛ рдХрд╛рдЧрдЬрд╛рдд рд░ рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓рд╣рд░реВрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд╡рд┐рд╡рд░рдгрд▓рд╛рдИ рд╕рдВрдХреНрд╖реЗрдк рдЧрд░реНрди, рдо рдиреЛрдЯ рдЧрд░реНрдЫреБ рдХрд┐ рдПрдЙрдЯрд╛ рдореЛрдбреЗрд▓рдХреЛ рдЕрд░реНрдХреЛ рдорд╛рдерд┐рдХреЛ рдпрд╕реНрддреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд╣рд░реВ рдореБрдЦреНрдп рд░реВрдкрдорд╛ рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрдирдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдмрд╛рдЯ рд╕рдлрд▓ рджреЗрдЦрд┐рдБрджреИрдиред рдПрдХ рднрд╛рд╖рд╛рд▓рд╛рдИ рдЕрд░реНрдХреЛрд╕рдБрдЧ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рднрд╛рд╖рд╛рд╣рд░реВ рдкреВрд░реНрдгрддрдпрд╛ "рдЕрд░реНрдереЛрдЧреЛрдирд▓" рдЫреИрдирдиреН, рдЕрдиреБрдХреВрд▓рддрд╛ рдирд┐рдпрдорд╣рд░реВ рдзреЗрд░реИ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реБрди рд╕рдХреНрдЫрдиреНред

рдХрд╛рдЧрдЬрд╛рдд рдореЛрдбреЗрд▓рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдмрд╣реБ-рдореЛрдбрд▓ DBMS

рдпрд╕ рдЦрдгреНрдбрдорд╛, рдо рддреА рдордзреНрдпреЗ рд╕рдмреИрднрдиреНрджрд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рдирднрдПрдХреЛ, MongoDB (рдЬрд╕реНрддреИ рднрдирд┐рдПрдХреЛ рдерд┐рдпреЛ, рдпрд╕рдорд╛ рдХреЗрд╡рд▓ рд╕рд╢рд░реНрдд рдЧреНрд░рд╛рдл рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рдЫрдиреНред $lookup ╨╕ $graphLookup, рд╢рд╛рд░реНрдбреЗрдб рд╕рдЩреНрдХрд▓рдирд╣рд░реВрдорд╛ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫреИрди), рддрд░ рдЕрдЭ рдкрд░рд┐рдкрдХреНрд╡ рд░ "рдЙрджреНрдпрдо" DBMS рдХреЛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ MarkLogic.

рддреНрдпрд╕реЛрднрдП, рд╕рдВрдЧреНрд░рд╣рдорд╛ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░рдХрд╛ XML рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВрдХреЛ рд╕реЗрдЯ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реМрдВ (MarkLogic рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ JSON рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдкрдирд┐ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ):

<Person INN="631803299804">
  <name>John</name>
  <surname>Smith</surname>
</Person>

MarkLogic рдорд╛ рд░рд┐рд▓реЗрд╢рдирд▓ рдореЛрдбреЗрд▓

рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВрдХреЛ рд╕рдЩреНрдХрд▓рдирдХреЛ рд╕рдореНрдмрдиреНрдзрдЧрдд рджреГрд╢реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдкреНрд░рджрд░реНрд╢рди рдЯреЗрдореНрдкреНрд▓реЗрдЯ (рддрддреНрд╡рд╣рд░реВрдХреЛ рд╕рд╛рдордЧреНрд░реА value рддрд▓рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рддреНрдпрд╣рд╛рдБ рдПрдХ рдордирдорд╛рдиреА XPath рд╣реБрди рд╕рдХреНрдЫ):

<template >
  <context>/Person</context>
  <rows>
    <row>
      <view-name>Person</view-name>
      <columns>
        <column>
          <name>SSN</name>
          <value>@SSN</value>
          <type>string</type>
        </column>
        <column>
          <name>name</name>
          <value>name</value>
        </column>
        <column>
          <name>surname</name>
          <value>surname</value>
        </column>
      </columns>
    </row>
  <rows>
</template>

рддрдкрд╛рдИрд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рджреГрд╢реНрдпрд▓рд╛рдИ SQL рдХреНрд╡реЗрд░реАрдХреЛ рд╕рд╛рде рд╕рдореНрдмреЛрдзрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, ODBC рдорд╛рд░реНрдлрдд):

SELECT name, surname FROM Person WHERE name="John"

рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдкреНрд░рджрд░реНрд╢рди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рд░рд┐рд▓реЗрд╢рдирд▓ рджреГрд╢реНрдп рдкрдвреНрди-рдорд╛рддреНрд░ рд╣реЛред рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджрд╛, MarkLogic рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗрдЫ рдХрд╛рдЧрдЬрд╛рдд рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВред рдкрд╣рд┐рд▓реЗ, MarkLogic рд╕рдБрдЧ рд╕реАрдорд┐рдд рд╕рдореНрдмрдиреНрдз рд╡рд┐рдЪрд╛рд░рд╣рд░реВ рдерд┐рдП, рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдЖрдзрд╛рд░рд┐рдд рд░ рд▓реЗрдЦреНрди рдпреЛрдЧреНрдп, рддрд░ рдЕрдм рддреА рдмрд╣рд┐рд╖реНрдХреГрдд рдорд╛рдирд┐рдиреНрдЫрдиреНред

MarkLogic рдорд╛ рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓

рдЧреНрд░рд╛рдл (RDF) рдореЛрдбреЗрд▓рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдердирдХреЛ рд╕рд╛рде, рд╕рдмреИ рдХреБрд░рд╛ рдЙрд╕реНрддреИ рдЫред рд╕рд╛рдердорд╛ рдлреЗрд░рд┐ рдкреНрд░рджрд░реНрд╢рди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рддрдкрд╛рдИрдВрд▓реЗ рдорд╛рдерд┐рдХреЛ рдЙрджрд╛рд╣рд░рдгрдмрд╛рдЯ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВрдХреЛ рд╕рдЩреНрдЧреНрд░рд╣рдХреЛ RDF рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

<template >
  <context>/Person</context>
    <vars>
      <var>
        <name>PREFIX</name>
        <val>"http://example.org/example#"</val>
      </var>
    </vars>
  <triples>
    <triple>
      <subject><value>sem:iri( $PREFIX || @SSN )</value></subject>
      <predicate><value>sem:iri( $PREFIX || surname )</value></predicate>
      <object><value>xs:string( surname )</value></object>
    </triple>
    <triple>
      <subject><value>sem:iri( $PREFIX || @SSN )</value></subject>
      <predicate><value>sem:iri( $PREFIX || name )</value></predicate>
      <object><value>xs:string( name )</value></object>
    </triple>
  </triples>
  </template>

рддрдкрд╛рдИрдВрд▓реЗ SPARQL рдХреНрд╡реЗрд░реАрдХреЛ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдореА RDF рдЧреНрд░рд╛рдлрд▓рд╛рдИ рд╕рдореНрдмреЛрдзрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

PREFIX : <http://example.org/example#>
SELECT ?name ?surname {
  :631803299804 :name ?name ; :surname ?surname .
}

рд░рд┐рд▓реЗрд╢рдирд▓ рдПрдХрдХреЛ рд╡рд┐рдкрд░реАрдд, MarkLogic рд▓реЗ рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓рд▓рд╛рдИ рджреБрдИ рдЕрдиреНрдп рддрд░рд┐рдХрд╛рдорд╛ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ:

  1. рдПрдХ DBMS RDF рдбрд╛рдЯрд╛рдХреЛ рдкреВрд░реНрдг-рдлреБрд▓рд┐рдПрдХреЛ рдЫреБрдЯреНрдЯреИ рднрдгреНрдбрд╛рд░рдг рд╣реБрди рд╕рдХреНрдЫ (рдпрд╕рдорд╛ рдЯреНрд░рд┐рдкрд▓реЗрдЯрд╣рд░реВ рднрдирд┐рдиреЗрдЫред рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдорд╛рдерд┐ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдХреЛ рд╡рд┐рдкрд░реАрдд рдЭрд┐рдХрд┐рдПрдХреЛ).
  2. рд╡рд┐рд╢реЗрд╖ рдХреНрд░рдордмрджреНрдзрддрд╛рдорд╛ RDF рд▓рд╛рдИ рдХреЗрд╡рд▓ XML рд╡рд╛ JSON рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВрдорд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ (рд░ рддреНрдпрд╕рдкрдЫрд┐ рдЯреНрд░рд┐рдкрд▓реЗрдЯрд╣рд░реВ рдмреЛрд▓рд╛рдЗрдиреЗрдЫред рдЕрдкреНрд░рдмрдиреНрдзрд┐рдд)ред рдпреЛ рд╕рдореНрднрд╡рддрдГ рд╕рдВрдпрдиреНрддреНрд░рдХреЛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ idref рд░ рдЕрдиреНрдпред

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

рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS "рдореБрдЦреНрдп рдореЛрдбреЗрд▓ рдмрд┐рдирд╛"

рддреНрдпрд╣рд╛рдБ рдмрдЬрд╛рд░рдорд╛ DBMS рд╣рд░реВ рдкрдирд┐ рдЫрдиреН рдЬрд╕рд▓реЗ рдЖрдлреВрд▓рд╛рдИ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рд░реВрдкрдорд╛ рдмрд╣реБ-рдореЛрдбрд▓рдХреЛ рд░реВрдкрдорд╛ рд░рд╛рдЦреНрдЫрдиреН, рдХреБрдиреИ рдкрдирд┐ рд╡рдВрд╢рд╛рдиреБрдЧрдд рдореБрдЦреНрдп рдореЛрдбреЗрд▓ рдмрд┐рдирд╛ред рдпреА рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН ArangoDB, рдУрд░рд┐рдПрдиреНрдЯрдбреАрдмреА (реирежрезрео рджреЗрдЦрд┐ рд╡рд┐рдХрд╛рд╕ рдХрдореНрдкрдиреА SAP рдХреЛ рд╣реЛ) рд░ CosmosDB (Microsoft Azure рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд░реНрдордХреЛ рднрд╛рдЧрдХреЛ рд░реВрдкрдорд╛ рд╕реЗрд╡рд╛)ред

рд╡рд╛рд╕реНрддрд╡рдорд╛, рддреНрдпрд╣рд╛рдБ ArangoDB рд░ OrientDB рдорд╛ "рдХреЛрд░" рдореЛрдбреЗрд▓рд╣рд░реВ рдЫрдиреНред рджреБрдмреИ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпреА рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЖрдлреНрдиреИ рдбреЗрдЯрд╛ рдореЛрдбреЗрд▓рд╣рд░реВ рд╣реБрдиреН, рдЬреБрди рдХрд╛рдЧрдЬрд╛рддрдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдгрд╣рд░реВ рд╣реБрдиреНред рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдгрд╣рд░реВ рдореБрдЦреНрдпрддрдпрд╛ рдЧреНрд░рд╛рдл рд░ рд░рд┐рд▓реЗрд╢рдирд▓ рдкреНрд░рдХреГрддрд┐рдХрд╛ рдкреНрд░рд╢реНрдирд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛рд▓рд╛рдИ рд╕рд╣рдЬ рдмрдирд╛рдЙрдирдХрд╛ рд▓рд╛рдЧрд┐ рд╣реБрдиреНред

рдпреА рдореЛрдбреЗрд▓рд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ DBMS рдорд╛ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдЙрдкрд▓рдмреНрдз рдЫрдиреН; рддрд┐рдиреАрд╣рд░реВрдХрд╛ рдЖрдлреНрдиреИ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛рд╣рд░реВ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреНред рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рддреНрдпрд╕реНрддрд╛ рдореЛрдбреЗрд▓рд╣рд░реВ рд░ DBMS рд╣рд░реВ рдЖрд╢рд╛рдЬрдирдХ рдЫрдиреН, рддрд░ рдорд╛рдирдХ рдореЛрдбреЗрд▓рд╣рд░реВ рд░ рднрд╛рд╖рд╛рд╣рд░реВрд╕рдБрдЧ рдЕрдиреБрдХреВрд▓рддрд╛рдХреЛ рдЕрднрд╛рд╡рд▓реЗ рдпреА DBMS рд╣рд░реВ рд╡рд┐рд░рд╛рд╕рдд рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрджрдЫ тАФ рддреНрдпрд╣рд╛рдБ рдкрд╣рд┐рд▓реЗ рдиреИ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ DBMS рд╣рд░реВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиред

Habr├й рдорд╛ ArangoDB рд░ OrientDB рдХреЛ рдмрд╛рд░реЗрдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдПрдХ рдЕрджреНрднреБрдд рд▓реЗрдЦ рдерд┐рдпреЛ: NoSQL рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВрдорд╛ рд╕рд╛рдореЗрд▓ рд╣реБрдиреБрд╣реЛрд╕реН.

ArangoDB

ArangoDB рд▓реЗ рдЧреНрд░рд╛рдл рдбреЗрдЯрд╛ рдореЛрдбреЗрд▓рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди рджрд╛рдмреА рдЧрд░реНрджрдЫред

ArangoDB рдорд╛ рдЧреНрд░рд╛рдлрдХреЛ рдиреЛрдбрд╣рд░реВ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рд╣реБрдиреН, рд░ рдХрд┐рдирд╛рд░рд╣рд░реВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░рдХрд╛ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рд╣реБрдиреН рдЬреБрди рдирд┐рдпрдорд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХреНрд╖реЗрддреНрд░рд╣рд░реВрд╕рдБрдЧреИ, (_key, _id, _rev) рдкреНрд░рдгрд╛рд▓реА рдХреНрд╖реЗрддреНрд░рд╣рд░реВ _from ╨╕ _toред рдХрд╛рдЧрдЬрд╛рдд DBMS рдорд╛ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдкрд░рдореНрдкрд░рд╛рдЧрдд рд░реВрдкрдорд╛ рд╕рдЩреНрдХрд▓рдирдорд╛ рдЬреЛрдбрд┐рдиреНрдЫрдиреНред рдХрд┐рдирд╛рд░рд╛рд╣рд░реВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрдиреЗ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВрдХреЛ рд╕рдЩреНрдХрд▓рдирд▓рд╛рдИ ArangoDB рдорд╛ рдПрдЬ рд╕рдЩреНрдХрд▓рди рднрдирд┐рдиреНрдЫред рд╡реИрд╕реЗ, рдХрд┐рдирд╛рд░рд╛ рд╕рдЩреНрдХрд▓рди рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдкрдирд┐ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рд╣реБрдиреН, рддреНрдпрд╕реИрд▓реЗ ArangoDB рдорд╛ рдХрд┐рдирд╛рд░рд╣рд░реВ рдкрдирд┐ рдиреЛрдбрд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдХрд╛рд░реНрдп рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред

рд╕реНрд░реЛрдд рдбрд╛рдЯрд╛

рд╣рд╛рдореАрд▓рд╛рдИ рдПрдЙрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рдЧрд░реМрдВ persons, рдЬрд╕рдХреЛ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫрдиреН:

[
  {
    "_id"  : "people/alice" ,
    "_key" : "alice" ,
    "name" : "╨Р╨╗╨╕╤Б╨░"
  },
  {
    "_id"  : "people/bob" ,
    "_key" : "bob" ,
    "name" : "╨С╨╛╨▒"  
  }
]

рд╕рдВрдЧреНрд░рд╣ рдкрдирд┐ рд╣реЛрд╕реН cafes:

[
  {
    "_id" : "cafes/jd" ,
    "_key" : "jd" ,
    "name" : "╨Ф╨╢╨╛╨╜ ╨Ф╨╛╨╜╨╜"  
  },
  {
    "_id" : "cafes/jj" ,
    "_key" : "jj" ,
    "name" : "╨Ц╨░╨╜-╨Ц╨░╨║"
  }
]

рддреНрдпрд╕рдкрдЫрд┐ рд╕рдВрдЧреНрд░рд╣ likes рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

[
  {
    "_id" : "likes/1" ,
    "_key" : "1" ,
    "_from" : "persons/alice" ,
    "_to" : "cafes/jd",
    "since" : 2010 
  },
  {
    "_id" : "likes/2" ,
    "_key" : "2" ,
    "_from" : "persons/alice" ,
    "_to" : "cafes/jj",
    "since" : 2011 
  } ,
  {
    "_id" : "likes/3" ,
    "_key" : "3" ,
    "_from" : "persons/bob" ,
    "_to" : "cafes/jd",
    "since" : 2012 
  }
]

рдкреНрд░рд╢реНрди рд░ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ

ArangoDB рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ AQL рднрд╛рд╖рд╛рдорд╛ рдЧреНрд░рд╛рдл-рд╢реИрд▓реА рдХреНрд╡реЗрд░реА, рдХреБрди рдХреНрдпрд╛рдлреЗ рдордирдкрд░реНрдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдорд╛рдирд╡-рдкрдардиреАрдп рдлрд╛рд░рдо рдЬрд╛рдирдХрд╛рд░реА рдлрд░реНрдХрд╛рдЙрдБрджреИ, рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

FOR p IN persons
  FOR c IN OUTBOUND p likes
  RETURN { person : p.name , likes : c.name }

рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рд╢реИрд▓реАрдорд╛, рдЬрд╣рд╛рдБ рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛ "рдХрдореНрдкреНрдпреБрдЯрд┐рдЩ" рд╕рдореНрдмрдиреНрдзрд╣рд░реВ рдЧрд░реНрджреИрдЫреМрдВ, рдпреЛ рдХреНрд╡реЗрд░реА рдпрд╕рд░реА рдкреБрди: рд▓реЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ (рдпрд╕реИрд▓реЗ, рд╕рдЩреНрдХрд▓рди рдмрд┐рдирд╛ред likes рдмрд┐рдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫ):

FOR p IN persons
  FOR l IN likes
  FILTER p._key == l._from
    FOR c IN cafes
    FILTER l._to == c._key
    RETURN { person : p.name , likes : c.name }

рджреБрд╡реИ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдкрд░рд┐рдгрд╛рдо рд╕рдорд╛рди рд╣реБрдиреЗрдЫ:

[
  { "person" : "╨Р╨╗╨╕╤Б╨░" , likes : "╨Ц╨░╨╜-╨Ц╨░╨║" } ,
  { "person" : "╨Р╨╗╨╕╤Б╨░" , likes : "╨Ф╨╢╨╛╨╜ ╨Ф╨╛╨╜╨╜" } ,
  { "person" : "╨С╨╛╨▒" , likes : "╨Ф╨╢╨╛╨╜ ╨Ф╨╛╨╜╨╜" }
]

рдердк рдкреНрд░рд╢реНрдирд╣рд░реВ рд░ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ

рдпрджрд┐ рдорд╛рдерд┐рдХреЛ рдирддрд┐рдЬрд╛ рдврд╛рдБрдЪрд╛ рдХрд╛рдЧрдЬрд╛рдд DBMS рдХреЛ рддреБрд▓рдирд╛рдорд╛ рд░рд┐рд▓реЗрд╢рдирд▓ DBMS рдХреЛ рд▓рд╛рдЧреА рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпреЛ рдХреНрд╡реЗрд░реА рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рд╡рд╛ рддрдкрд╛рдЗрдБ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ COLLECT):

FOR p IN persons
  RETURN {
    person : p.name,
    likes : (
      FOR c IN OUTBOUND p likes
      RETURN c.name
    )
}

рдкрд░рд┐рдгрд╛рдо рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреЗрдЫ:

[
  { "person" : "╨Р╨╗╨╕╤Б╨░" , likes : ["╨Ц╨░╨╜-╨Ц╨░╨║" , "╨Ф╨╢╨╛╨╜ ╨Ф╨╛╨╜╨╜"]  } ,
  { "person" : "╨С╨╛╨▒" , likes : ["╨Ф╨╢╨╛╨╜ ╨Ф╨╛╨╜╨╜"] }
]

рдУрд░рд┐рдПрдиреНрдЯрдбреАрдмреА

OrientDB рдорд╛ рдХрд╛рдЧрдЬрд╛рдд рдореЛрдбреЗрд▓рдХреЛ рд╢реАрд░реНрд╖рдорд╛ рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓ рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рдЖрдзрд╛рд░ рд╣реЛ рдореМрдХрд╛ рдХрд╛рдЧрдЬрд╛рдд рдХреНрд╖реЗрддреНрд░рд╣рд░реВ, рдЕрдзрд┐рдХ рд╡рд╛ рдХрдо рдорд╛рдирдХ рд╕реНрдХреЗрд▓рд░ рдорд╛рдирд╣рд░реВрдХрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд, рдкрдирд┐ рдорд╛рдирд╣рд░реВ рдЫрдиреН рдЬрд╕реНрддреИ LINK, LINKLIST, LINKSET, LINKMAP ╨╕ LINKBAGред рдпреА рдкреНрд░рдХрд╛рд░рдХрд╛ рдорд╛рдирд╣рд░реВ рд▓рд┐рдЩреНрдХ рд╡рд╛ рд▓рд┐рдЩреНрдХрд╣рд░реВрдХреЛ рд╕рдЩреНрдХрд▓рди рд╣реБрдиреН рдкреНрд░рдгрд╛рд▓реА рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд╣рд░реВ рдХрд╛рдЧрдЬрд╛рдд

рдкреНрд░рдгрд╛рд▓реА рджреНрд╡рд╛рд░рд╛ рддреЛрдХрд┐рдПрдХреЛ рдХрд╛рдЧрдЬрд╛рдд рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рдХреЛ "рднреМрддрд┐рдХ рдЕрд░реНрде" рдЫ, рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд░реЗрдХрд░реНрдбрдХреЛ рд╕реНрдерд┐рддрд┐рд▓рд╛рдИ рд╕рдВрдХреЗрдд рдЧрд░реНрджреИ, рд░ рдХреЗрд╣рд┐ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ: @rid : #3:16ред рдпрд╕реИрд▓реЗ, рд╕рдиреНрджрд░реНрдн рдЧреБрдгрд╣рд░реВрдХреЛ рдорд╛рдирд╣рд░реВ рд╕рд╛рдБрдЪреНрдЪреИ рд╕рдВрдХреЗрддрдХ рд╣реБрдиреН (рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓рдорд╛ рдЬрд╕реНрддреИ) рдЪрдпрди рд╕рд░реНрддрд╣рд░реВ рднрдиреНрджрд╛ (рд╕рдореНрдмрдиреНрдзрд┐рдд рдореЛрдбреЗрд▓рдорд╛ рдЬрд╕реНрддреИ)ред

ArangoDB рдЬрд╕реНрддреИ, OrientDB рдорд╛ рдХрд┐рдирд╛рд░рд╣рд░реВ рдЕрд▓рдЧ рдХрд╛рдЧрдЬрд╛рддрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░рд┐рдиреНрдЫ (рдпрджреНрдпрдкрд┐ рдпрджрд┐ рдХрд┐рдирд╛рд░рд╛рдХреЛ рдЖрдлреНрдиреИ рдЧреБрдгрд╣рд░реВ рдЫреИрдирдиреН рднрдиреЗ, рдпрд╕рд▓рд╛рдИ рдмрдирд╛рдЙрди рд╕рдХрд┐рдиреНрдЫред рд╣рд▓реНрдХрд╛, рд░ рдпреЛ рдПрдХ рдЕрд▓рдЧ рдХрд╛рдЧрдЬрд╛рдд рд╕рдВрдЧ рдореЗрд▓ рдЦрд╛рдБрджреИрди)ред

рд╕реНрд░реЛрдд рдбрд╛рдЯрд╛

рдирдЬрд┐рдХрдХреЛ рдврд╛рдБрдЪрд╛рдорд╛ рдбрдореНрдк рдврд╛рдБрдЪрд╛ OrientDB рдбрд╛рдЯрд╛рдмреЗрд╕, ArangoDB рдХреЛ рд▓рд╛рдЧреА рдЕрдШрд┐рд▓реНрд▓реЛ рдЙрджрд╛рд╣рд░рдгрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдХреЗрд╣рд┐ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

[
     {
      "@type": "document",
      "@rid": "#11:0",
      "@class": "Person",
      "name": "╨Р╨╗╨╕╤Б╨░",
      "out_likes": [
        "#30:1",
        "#30:2"
      ],
      "@fieldTypes": "out_likes=LINKBAG"
    },
    {
      "@type": "document",
      "@rid": "#12:0",
      "@class": "Person",
      "name": "╨С╨╛╨▒",
      "out_likes": [
        "#30:3"
      ],
      "@fieldTypes": "out_likes=LINKBAG"
    },
    {
      "@type": "document",
      "@rid": "#21:0",
      "@class": "Cafe",
      "name": "╨Ц╨░╨╜-╨Ц╨░╨║",
      "in_likes": [
        "#30:2",
        "#30:3"
      ],
      "@fieldTypes": "in_likes=LINKBAG"
    },
    {
      "@type": "document",
      "@rid": "#22:0",
      "@class": "Cafe",
      "name": "╨Ф╨╢╨╛╨╜ ╨Ф╨╛╨╜╨╜",
      "in_likes": [
        "#30:1"
      ],
      "@fieldTypes": "in_likes=LINKBAG"
    },
    {
      "@type": "document",
      "@rid": "#30:1",
      "@class": "likes",
      "in": "#22:0",
      "out": "#11:0",
      "since": 1262286000000,
      "@fieldTypes": "in=LINK,out=LINK,since=date"
    },
    {
      "@type": "document",
      "@rid": "#30:2",
      "@class": "likes",
      "in": "#21:0",
      "out": "#11:0",
      "since": 1293822000000,
      "@fieldTypes": "in=LINK,out=LINK,since=date"
    },
    {
      "@type": "document",
      "@rid": "#30:3",
      "@class": "likes",
      "in": "#21:0",
      "out": "#12:0",
      "since": 1325354400000,
      "@fieldTypes": "in=LINK,out=LINK,since=date"
    }
  ]

рд╣рд╛рдореА рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ, рдард╛рдбреЛрд╣рд░реВрд▓реЗ рдЖрдЧрдорди рд░ рдмрд╣рд┐рд░реНрдЧрдорди рдХрд┐рдирд╛рд░рд╣рд░реВ рдмрд╛рд░реЗ рдЬрд╛рдирдХрд╛рд░реА рдкрдирд┐ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрджрдЫред рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ рдХрд╛рдЧрдЬрд╛рдд API рд▓реЗ рд╕рдиреНрджрд░реНрднрд╛рддреНрдордХ рдЕрдЦрдгреНрдбрддрд╛ рдЖрдлреИрдВрд▓рд╛рдИ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрдиреБрдкрд░реНрджрдЫ, рд░ рдЧреНрд░рд╛рдл API рд▓реЗ рдпреЛ рдХрд╛рдо рд▓рд┐рдиреНрдЫред рддрд░ рд╣реЗрд░реМрдВ OrientDB рдХреЛ рдкрд╣реБрдБрдЪ "рд╢реБрджреНрдз" рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛рд╣рд░реВрдорд╛ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдЬреБрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рд╣рд░реВрдорд╛ рдПрдХреАрдХреГрдд рдЫреИрдиред

рдкреНрд░рд╢реНрди рд░ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ

OrientDB рдорд╛ ArangoDB рдХреЛ рд▓рд╛рдЧрд┐ рдЙрджрд╛рд╣рд░рдгрдмрд╛рдЯ рдХреНрд╡реЗрд░реАрдХреЛ рдЙрджреНрджреЗрд╢реНрдпрдорд╛ рд╕рдорд╛рди рдХреНрд╡реЗрд░реА рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

SELECT name AS person_name, OUT('likes').name AS cafe_name
   FROM Person
   UNWIND cafe_name

рдирддрд┐рдЬрд╛ рдирд┐рдореНрди рдлрд╛рд░рдордорд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдиреЗрдЫ:

[
  { "person_name": "╨Р╨╗╨╕╤Б╨░", "cafe_name": "╨Ф╨╢╨╛╨╜ ╨Ф╨╛╨╜╨╜" },
  { "person_name": "╨Р╨╗╨╕╤Б╨░", "cafe_name": "╨Ц╨░╨╜-╨Ц╨░╨║" },
  { "person_name": "╨С╨╛╨▒",  "cafe_name": "╨Ц╨░╨╜-╨Ц╨░╨║" }
]

рдпрджрд┐ рдирддрд┐рдЬрд╛ рдврд╛рдБрдЪрд╛ рдлреЗрд░рд┐ рдзреЗрд░реИ "рд╕рдореНрдмрдиреНрдзрд┐рдд" рджреЗрдЦрд┐рдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБрд╕рдБрдЧ рд░реЗрдЦрд╛ рд╣рдЯрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ UNWIND():

[
  { "person_name": "╨Р╨╗╨╕╤Б╨░", "cafe_name": [ "╨Ф╨╢╨╛╨╜ ╨Ф╨╛╨╜╨╜", "╨Ц╨░╨╜-╨Ц╨░╨║" ] },
  { "person_name": "╨С╨╛╨▒",  "cafe_name": [ "╨Ц╨░╨╜-╨Ц╨░╨║" ' }
]

OrientDB рдХреЛ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдЧреНрд░реЗрдореНрд▓рд┐рди-рдЬрд╕реНрддреИ рд╕рдореНрдорд┐рд▓рд┐рддрд╣рд░реВрд╕рдБрдЧ SQL рдХреЛ рд░реВрдкрдорд╛ рд╡рд░реНрдгрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рд╕рдВрд╕реНрдХрд░рдг 2.2 рдорд╛, рд╕рд╛рдЗрдлрд░-рдЬрд╕реНрддреЛ рдЕрдиреБрд░реЛрдз рдлрд╛рд░рдо рджреЗрдЦрд╛ рдкрд░реНтАНрдпреЛ, MATCH :

MATCH {CLASS: Person, AS: person}-likes->{CLASS: Cafe, AS: cafe}
RETURN person.name AS person_name, LIST(cafe.name) AS cafe_name
GROUP BY person_name

рдирддрд┐рдЬрд╛рдХреЛ рдврд╛рдБрдЪрд╛ рдЕрдШрд┐рд▓реНрд▓реЛ рдЕрдиреБрд░реЛрдзрдорд╛ рдЬрд╕реНрддреИ рд╣реБрдиреЗрдЫред рдпрд╕рд▓рд╛рдИ рдердк "рд╕рдореНрдмрдиреНрдзрд┐рдд" рдмрдирд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреЗ рд╣рдЯрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рд╕реЛрдЪреНрдиреБрд╣реЛрд╕реН, рдЬрд╕реНрддреИ рдкрд╣рд┐рд▓реЛ рдкреНрд░рд╢реНрдирдорд╛ред

Azure CosmosDB

рдереЛрд░реИ рд╣рджрд╕рдореНрдо, ArangoDB рд░ OrientDB рдХреЛ рдмрд╛рд░реЗрдорд╛ рдорд╛рдерд┐ рднрдирд┐рдПрдХреЛ рдХреБрд░рд╛ Azure CosmosDB рдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫред CosmosDB рд▓реЗ рдирд┐рдореНрди рдбреЗрдЯрд╛ рдкрд╣реБрдБрдЪ API рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ: SQL, MongoDB, Gremlin рд░ Cassandraред

SQL API рд░ MongoDB API рдХрд╛рдЧрдЬрд╛рдд рдореЛрдбреЗрд▓рдорд╛ рдбрд╛рдЯрд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред Gremlin API рд░ Cassandra API - рдХреНрд░рдорд╢рдГ рдЧреНрд░рд╛рдл рд░ рд╕реНрддрдореНрдн рдврд╛рдБрдЪрд╛рд╣рд░реВрдорд╛ рдбреЗрдЯрд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ред рд╕рдмреИ рдореЛрдбреЗрд▓рд╣рд░реВрдорд╛ рдбрд╛рдЯрд╛ CosmosDB рдЖрдиреНрддрд░рд┐рдХ рдореЛрдбреЗрд▓ рдврд╛рдБрдЪрд╛рдорд╛ рдмрдЪрдд рдЧрд░рд┐рдПрдХреЛ рдЫ: ARS ("рдПрдЯрдо-рд░реЗрдХрд░реНрдб-рдЕрдиреБрдХреНрд░рдо"), рдЬреБрди рдХрд╛рдЧрдЬрд╛рддрдХреЛ рдирдЬрд┐рдХ рдкрдирд┐ рдЫред

рдХреЗ рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS рд╣рд░реВ рдЖрдзреБрдирд┐рдХ рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдЖрдзрд╛рд░ рд╣реБрдиреН?

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

рдХреЗ рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS рд╣рд░реВ рдЖрдзреБрдирд┐рдХ рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдЖрдзрд╛рд░ рд╣реБрдиреН?

рдпрд╕реИрд▓реЗ, Azure CosmosDB рдорд╛ рдмрд╣реБ-рдореЛрдбреЗрд▓ рдЖрдЬ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛рдмрд╛рдЯ рд╡рд┐рднрд┐рдиреНрди рдореЛрдбреЗрд▓рд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиреЗ рдзреЗрд░реИ рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдорд╛рддреНрд░ рд╣реЛ, рдЬрд╕рд▓реЗ рдмрд╣реБ-рднреНрдпрд╛рд░рд┐рдПрдиреНрдЯ рднрдгреНрдбрд╛рд░рдгрдХрд╛ рд╕рдмреИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджреИрдиред

рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS?

рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рддрдереНрдп рдпреЛ рд╣реЛ рдХрд┐ рдмрдЬрд╛рд░рдорд╛ рдХреБрдиреИ рдкрдирд┐ рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS рд╣рд░реВ рдЫреИрдирдиреН рдЬреБрди рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫрдиреН (рдПрдХреИ рд╕рд╛рде рджреБрдИ рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдмрд╣реБ-рдореЛрдбреЗрд▓ рд╕рдорд░реНрдерди рдмрд╛рд╣реЗрдХ: RDF рд░ LPG; рдпрд╕рд▓рд╛рдИ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред рдЕрдШрд┐рд▓реНрд▓реЛ рдкреНрд░рдХрд╛рд╢рди)ред рд╕рдмреИрднрдиреНрджрд╛ рдареВрд▓реЛ рдХрдард┐рдирд╛рдЗрд╣рд░реВ рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓рдХреЛ рд╢реАрд░реНрд╖рдорд╛ рдХрд╛рдЧрдЬрд╛рдд рдореЛрдбреЗрд▓рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛, рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖рд┐рдХ рднрдиреНрджрд╛ред

рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓рдХреЛ рд╢реАрд░реНрд╖рдорд╛ рд░рд┐рд▓реЗрд╕рдирд▓ рдореЛрдбреЗрд▓ рдХрд╕рд░реА рд▓рд╛рдЧреВ рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдкреНрд░рд╢реНрди рдкрдЫрд┐рдХреЛ рдЧрдардирдХреЛ рд╕рдордпрдорд╛ рдкрдирд┐ рд╡рд┐рдЪрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдХрд╕рд░реА рдмреЛрд▓реЗрдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдбреЗрднрд┐рдб McGovern:

рдЧреНрд░рд╛рдл рджреГрд╖реНрдЯрд┐рдХреЛрдгрдорд╛ рдХреБрдиреИ рдкрдирд┐ рдЕрдиреНрддрд░реНрдирд┐рд╣рд┐рдд рдЫреИрди рдЬрд╕рд▓реЗ рдЧреНрд░рд╛рдл рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рддрд╣ (рдЬрд╕реНрддреИ, рдЙрдкрдпреБрдХреНрдд рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рджреНрд╡рд╛рд░рд╛) рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдирдмрд╛рдЯ рд░реЛрдХреНрдЫ рдЬрд╕рд▓реЗ (рез) рд╕рд╛рдорд╛рдиреНрдп рдХреБрдЮреНрдЬреА рдорд╛рди рдЬреЛрдбреАрд╣рд░реВрдмрд╛рдЯ рдЯреНрдпреБрдкрд▓рд╣рд░реВрдХреЛ рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рд░ (реи) рд╕рдореВрд╣реАрдХрд░рдгрдХреЛ рд╕рд╛рде рдПрдХ рд╕рдореНрдмрдиреНрдзрд╛рддреНрдордХ рджреГрд╢реНрдп рд╕рдХреНрд╖рдо рдЧрд░реНрджрдЫред рд╕рдореНрдмрдиреНрдз рдкреНрд░рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ tuplesред

рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓рдХреЛ рд╢реАрд░реНрд╖рдорд╛ рдХрд╛рдЧрдЬрд╛рдд рдореЛрдбреЗрд▓ рд▓рд╛рдЧреВ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ рджрд┐рдорд╛рдЧрдорд╛ рд░рд╛рдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдирд┐рдореНрди:

  • JSON рдПрд░реНрд░реЗрдХрд╛ рддрддреНрд╡рд╣рд░реВрд▓рд╛рдИ рдХреНрд░рдордмрджреНрдз рдорд╛рдирд┐рдиреНрдЫ, рддрд░ рдЧреНрд░рд╛рдлрдХреЛ рдХрд┐рдирд╛рд░рд╛рдХреЛ рд╢реАрд░реНрд╖рдмрд╛рдЯ рдирд┐рд╕реНрдХрдиреЗрд╣рд░реВ рд╣реЛрдЗрдирдиреН;
  • рдХрд╛рдЧрдЬрд╛рдд рдореЛрдбреЗрд▓рдорд╛ рдбрд╛рдЯрд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдЕрд╕рдорд╛рдиреАрдХреГрдд рд╣реБрдиреНрдЫ; рддрдкрд╛рдИрдВ рдЕрдЭреИ рдкрдирд┐ рдПрдЙрдЯреИ рдЗрдореНрдмреЗрдбреЗрдб рдХрд╛рдЧрдЬрд╛рддрдХреЛ рдзреЗрд░реИ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрди, рд░ рдЙрдк-рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВрдорд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд╣рд░реВ рд╣реБрдБрджреИрдирдиреН;
  • рдЕрд░реНрдХреЛрддрд░реНрдл, рдХрд╛рдЧрдЬрд╛рдд DBMSs рдХреЛ рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдпреЛ рд╣реЛ рдХрд┐ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рддрдпрд╛рд░-рдмрдирд╛рдЗрдПрдХрд╛ "рд╕рдордЧреНрд░" рд╣реБрдиреН рдЬреБрди рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рдирдпрд╛рдБ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред рд╕рдорд╛рдкреНрдд рдХрд╛рдЧрдЬрд╛рддрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕рдмрдЧреНрд░рд╛рдл рджреНрд░реБрдд рд░реВрдкрдорд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛рдХреЛ рд╕рд╛рде рдЧреНрд░рд╛рдл рдореЛрдбреЗрд▓ рдкреНрд░рджрд╛рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рдПрдХ рд╕рд╛рдиреЛ рд╡рд┐рдЬреНрдЮрд╛рдкрди

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

рдо рдЖрд╢рд╛ рдЧрд░реНрджрдЫреБ рдХрд┐ рдирд┐рдореНрди рд▓реЗрдЦрд╣рд░реВ рдордзреНрдпреЗ рдПрдХрдорд╛ NitrosBase рдорд╛ рдХрд╕реНрддреЛ рдореЛрдбреЗрд▓ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рджреЗрдЦрд┐рдиреНрдЫ рд╡рд░реНрдгрди рдЧрд░реНрдиреЗрдЫреБред

рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛

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

  1. рдХреЗ рд╣рд╛рдореА рдкрд░рдореНрдкрд░рд╛рдЧрдд рдореЛрдбреЗрд▓ рд╡рд╛ рдХреБрдиреИ рдкреНрд░рдХрд╛рд░рдХреЛ "рд╣рд╛рдЗрдмреНрд░рд┐рдб" рдореЛрдбреЗрд▓рд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реНрджреИрдЫреМрдВ?
  2. рдХреЗ рдореЛрдбреЗрд▓рд╣рд░реВ "рд╕рдорд╛рди" рдЫрдиреН, рд╡рд╛ рддрд┐рдиреАрд╣рд░реВрдордзреНрдпреЗ рдПрдЙрдЯрд╛ рдЕрд░реВрдХреЛ рд╡рд┐рд╖рдп рд╣реЛ?
  3. рдХреЗ рдореЛрдбреЗрд▓рд╣рд░реВ рдПрдХрдЕрд░реНрдХрд╛рдкреНрд░рддрд┐ "рдЙрджрд╛рд╕реАрди" рдЫрдиреН? рдХреЗ рдПрдХ рдореЛрдбреЗрд▓рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдбрд╛рдЯрд╛ рдЕрд░реНрдХреЛрдорд╛ рдкрдвреНрди рд╕рдХрд┐рдиреНрдЫ рд╡рд╛ рдУрднрд░рд░рд╛рдЗрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ?

рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдХрд┐ рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS рдХреЛ рд╕рд╛рдиреНрджрд░реНрднрд┐рдХрддрд╛ рдХреЛ рдмрд╛рд░реЗ рдорд╛ рдкреНрд░рд╢реНрди рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЬрд╡рд╛рдл рджрд┐рди рд╕рдХрд┐рдиреНрдЫ, рддрд░ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдкреНрд░рд╢реНрди рдЫ рдХрд┐ рдХреБрди рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдорд╛ рдорд╛рдВрдЧ рдорд╛ рдЕрдзрд┐рдХ рд╣реБрдиреЗрдЫред рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдХрд┐ рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMSs рдЬрд╕рд▓реЗ рдкрд░рдореНрдкрд░рд╛рдЧрдд рдореЛрдбреЗрд▓рд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ, рдореБрдЦреНрдп рд░реВрдкрдорд╛ рд╕рд╛рдкреЗрдХреНрд╖, рдмрдвреА рдорд╛рдЧрдорд╛ рд╣реБрдиреЗрдЫред рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMSs рдХреЛ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛, рдирдпрд╛рдБ рдореЛрдбреЗрд▓рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджреИ рдЬреБрди рд╡рд┐рднрд┐рдиреНрди рдкрд░рдореНрдкрд░рд╛рдЧрддрдХрд╛ рдлрд╛рдЗрджрд╛рд╣рд░реВ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрджрдЫ, рдЕрдЭ рдЯрд╛рдврд╛рдХреЛ рднрд╡рд┐рд╖реНрдпрдХреЛ рдХреБрд░рд╛ рд╣реЛред

рджрд░реНрддрд╛ рднрдПрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорд╛рддреНрд░ рд╕рд░реНрд╡реЗрдХреНрд╖рдгрдорд╛ рднрд╛рдЧ рд▓рд┐рди рд╕рдХреНрдЫрдиреНред рд╕рд╛рдЗрди рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реНрдХреГрдкрдпрд╛

рдХреЗ рддрдкрд╛рдЗрдБ рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ?

  • рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИрдиреМрдВ, рд╣рд╛рдореА рд╕рдмреИ рдХреБрд░рд╛ рдПрдХ DBMS рд░ рдПрдЙрдЯрд╛ рдореЛрдбреЗрд▓рдорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░реНрдЫреМрдВ

  • рд╣рд╛рдореА рдкрд░рдореНрдкрд░рд╛рдЧрдд DBMS рдХреЛ рдмрд╣реБ-рдореЛрдбреЗрд▓ рдХреНрд╖рдорддрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ

  • рд╣рд╛рдореА рдкреЛрд▓рд┐рдЧреНрд▓реЛрдЯ рджреГрдврддрд╛ рдЕрднреНрдпрд╛рд╕ рдЧрд░реНрдЫреМрдВ

  • рд╣рд╛рдореА рдирдпрд╛рдБ рдмрд╣реБ-рдореЛрдбреЗрд▓ DBMS (Arango, Orient, CosmosDB) рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫреМрдВред

19 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорддрджрд╛рди рдЧрд░реЗред реи рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░реЛрдХрд┐рдПред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди