рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЭрд╛рдЗрди рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреА - PostgreSQL, Cassandra рдЖрдгрд┐ MongoDB рдЪреА рддреБрд▓рдирд╛ рдХрд░рдгреЗ

рдирдорд╕реНрдХрд╛рд░ рдорд┐рддреНрд░рд╛рдВрдиреЛ. рдореЗ рдорд╣рд┐рдиреНрдпрд╛рдЪреНрдпрд╛ рд╕реБрдЯреНрдЯреНрдпрд╛рдВрдЪреНрдпрд╛ рджреБрд╕рд▒реНрдпрд╛ рднрд╛рдЧрд╛рд╕рд╛рдареА рдирд┐рдШрдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдЖрдореНрд╣реА рдЕрднреНрдпрд╛рд╕рдХреНрд░рдорд╛рд╡рд░ рдирд╡реАрди рдкреНрд░рд╡рд╛рд╣ рд╕реБрд░реВ рд╣реЛрдгреНрдпрд╛рдЪреНрдпрд╛ рдЕрдкреЗрдХреНрд╖реЗрдиреЗ рднрд╛рд╖рд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗрд▓реА рд╕рд╛рдордЧреНрд░реА рддреБрдордЪреНрдпрд╛рд╕реЛрдмрдд рд╢реЗрдЕрд░ рдХрд░рддреЛ. "рд░рд┐рд▓реЗрд╢рдирд▓ рдбреАрдмреАрдПрдордПрд╕".

рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЭрд╛рдЗрди рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреА - PostgreSQL, Cassandra рдЖрдгрд┐ MongoDB рдЪреА рддреБрд▓рдирд╛ рдХрд░рдгреЗ

рдЕтАНреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡реНрд╣рд▓рдкрд░ рдЕрдиреЗрдХ рдСрдкрд░реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕реЗрд╕рдЪреА рддреБрд▓рдирд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрд░рд╛рдЪ рд╡реЗрд│ рдШрд╛рд▓рд╡рддрд╛рдд рдЬреЗ рдЗрдЪреНрдЫрд┐рдд рд╡рд░реНрдХрд▓реЛрдбрд╕рд╛рдареА рд╕рд░реНрд╡рд╛рдд рдпреЛрдЧреНрдп рдЖрд╣реЗ. рдЧрд░рдЬрд╛рдВрдордзреНрдпреЗ рд╕рд░рд▓реАрдХреГрдд рдбреЗрдЯрд╛ рдореЙрдбреЗрд▓рд┐рдВрдЧ, рд╡реНрдпрд╡рд╣рд╛рд░ рд╣рдореА, рд╡рд╛рдЪрди/рд▓реЗрдЦрди рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди, рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдЖрдгрд┐ рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЕрд╕реВ рд╢рдХрддреЛ. рдкрд╛рд░рдВрдкрд╛рд░рд┐рдХрдкрдгреЗ, рдирд┐рд╡рдб рдбреЗрдЯрд╛рдмреЗрд╕ рд╢реНрд░реЗрдгреА, SQL рдХрд┐рдВрд╡рд╛ NoSQL рдиреЗ рд╕реБрд░реВ рд╣реЛрддреЗ, рдХрд╛рд░рдг рдкреНрд░рддреНрдпреЗрдХ рд╢реНрд░реЗрдгреА рд╡реНрдпрд╛рдкрд╛рд░-рдСрдлрдЪрд╛ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдЪ рд╕рд╛рджрд░ рдХрд░рддреЗ. рдХрдореА рд╡рд┐рд▓рдВрдмрддрд╛ рдЖрдгрд┐ рдЙрдЪреНрдЪ рдереНрд░реВрдкреБрдЯрдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рдЙрдЪреНрдЪ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╕рд╛рдорд╛рдиреНрдпрддрдГ рдиреЙрди-рдЯреНрд░реЗрдб-рдСрдл рдЖрд╡рд╢реНрдпрдХрддрд╛ рдореНрд╣рдгреВрди рдкрд╛рд╣рд┐рд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдореНрд╣рдгреВрди рдХреЛрдгрддреНрдпрд╛рд╣реА рдирдореБрдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдпрд╛ рд▓реЗрдЦрд╛рдЪрд╛ рдЙрджреНрджреЗрд╢ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡реНрд╣рд▓рдкрд░рдирд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдореЙрдбреЗрд▓рд┐рдВрдЧрдЪреНрдпрд╛ рд╕рдВрджрд░реНрднрд╛рдд SQL рдЖрдгрд┐ NoSQL рджрд░рдореНрдпрд╛рди рдпреЛрдЧреНрдп рдирд┐рд╡рдб рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдХрд░рдгреЗ рдЖрд╣реЗ. рдЖрдореНрд╣реА рдПрдХ SQL рдбреЗрдЯрд╛рдмреЗрд╕, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓, рдЖрдгрд┐ рджреЛрди NoSQL рдбреЗрдЯрд╛рдмреЗрд╕, рдХреЕрд╕реЕрдВрдбреНрд░рд╛ рдЖрдгрд┐ рдореЛрдВрдЧреЛрдбреАрдмреА, рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЭрд╛рдЗрдирдЪреНрдпрд╛ рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреА рдЬрд╕реЗ рдХреА рдЯреЗрдмрд▓ рддрдпрд╛рд░ рдХрд░рдгреЗ, рддреЗ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдгреЗ, рдЯреЗрдмрд▓рдордзреВрди рдбреЗрдЯрд╛ рд╡рд╛рдЪрдгреЗ рдЖрдгрд┐ рддреЛ рд╣рдЯрд╡рдгреЗ рдпрд╛ рдЧреЛрд╖реНрдЯреА рдХрд╡реНрд╣рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкрд╛рд╣реВ. рдкреБрдвреАрд▓ рд▓реЗрдЦрд╛рдд, рдЖрдореНрд╣реА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛, рд╡реНрдпрд╡рд╣рд╛рд░, рдЬреЙрдЗрди, TTL рдирд┐рд░реНрджреЗрд╢ рдЖрдгрд┐ JSON-рдЖрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЭрд╛рдЗрди рдкрд╛рд╣рдгреНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░реВ.

SQL рдЖрдгрд┐ NoSQL рдордзреНрдпреЗ рдХрд╛рдп рдлрд░рдХ рдЖрд╣реЗ?

SQL рдбреЗрдЯрд╛рдмреЗрд╕ ACID рдЯреНрд░рд╛рдиреНрдЭреЕрдХреНрд╢рдирд▓ рдЧреЕрд░рдВрдЯреАрджреНрд╡рд╛рд░реЗ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд╡рдЪрд┐рдХрддрд╛ рд╡рд╛рдврд╡рддрд╛рдд, рддрд╕реЗрдЪ рд╡рд┐рджреНрдпрдорд╛рди рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбреЗрд▓реНрд╕рдЪреНрдпрд╛ рд╢реАрд░реНрд╖рд╕реНрдерд╛рдиреА рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдорд╛рд░реНрдЧрд╛рдВрдиреА JOIN рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдбреЗрдЯрд╛рдЪреА рдХреНрд╡реЗрд░реА рдХрд░рдгреНрдпрд╛рдЪреА рддреНрдпрд╛рдВрдЪреА рдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡рддреЗ.

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

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

NoSQL рд╡рд┐рддрд░рд┐рдд рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдЙрдЪреНрдЪ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╕рд╛рдзреНрдп рдХрд░рдгреНрдпрд╛рд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рд╣реЗ рдЕрдиреЗрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЭрд╛рдЗрди рдЯреНрд░реЗрдбрдСрдлрд╕рд╛рдареА рдореВрд▓рднреВрдд рддрд░реНрдХ рдЖрд╣реЗ рдЬреНрдпрд╛рдд ACID рд╡реНрдпрд╡рд╣рд╛рд░ рдиреБрдХрд╕рд╛рди, рдЬреЙрдЗрди рдЖрдгрд┐ рд╕рд╛рддрддреНрдпрдкреВрд░реНрдг рдЬрд╛рдЧрддрд┐рдХ рджреБрдпреНрдпрдо рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд.

рдЕрд╕рд╛ рдпреБрдХреНрддрд┐рд╡рд╛рдж рдЖрд╣реЗ рдХреА NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ рд░реЗрдЦреАрдп рд▓реЗрдЦрди рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдЖрдгрд┐ рдЙрдЪреНрдЪ рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдд, рд╡реНрдпрд╡рд╣рд╛рд░ рд╣рдореА рдЧрдорд╛рд╡рд▓реНрдпрд╛рдореБрд│реЗ рддреЗ рдорд┐рд╢рди-рдХреНрд░рд┐рдЯрд┐рдХрд▓ рдбреЗрдЯрд╛рд╕рд╛рдареА рдЕрдпреЛрдЧреНрдп рдмрдирддрд╛рдд.

NoSQL рдордзреАрд▓ рдбреЗрдЯрд╛ рдореЙрдбреЗрд▓рд┐рдВрдЧ SQL рдкреЗрдХреНрд╖рд╛ рдХрд╕реЗ рд╡реЗрдЧрд│реЗ рдЖрд╣реЗ рд╣реЗ рдЦрд╛рд▓реАрд▓ рд╕рд╛рд░рдгреА рджрд╛рдЦрд╡рддреЗ.

рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЭрд╛рдЗрди рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреА - PostgreSQL, Cassandra рдЖрдгрд┐ MongoDB рдЪреА рддреБрд▓рдирд╛ рдХрд░рдгреЗ

SQL рдЖрдгрд┐ NoSQL: рджреЛрдиреНрд╣реАрдЪреА рдЧрд░рдЬ рдХрд╛ рдЖрд╣реЗ?

Amazon.com, Netflix, Uber рдЖрдгрд┐ Airbnb рд╕рд╛рд░рдЦреНрдпрд╛ рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ-рдЬрд╛рдЧрддрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрдирд╛ рдЬрдЯрд┐рд▓, рдмрд╣реБрдЖрдпрд╛рдореА рдХрд╛рд░реНрдпреЗ рдХрд░рдгреНрдпрд╛рдЪреЗ рдХрд╛рдо рджрд┐рд▓реЗ рдЬрд╛рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Amazon.com рд╕рд╛рд░рдЦреНрдпрд╛ рдИ-рдХреЙрдорд░реНрд╕ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд▓рд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдорд╛рд╣рд┐рддреА, рдЙрддреНрдкрд╛рджрдиреЗ, рдСрд░реНрдбрд░, рдЗрдирд╡реНрд╣реЙрдЗрд╕ рдпрд╛рдВрд╕рд╛рд░рдЦрд╛ рд╣рд▓рдХрд╛, рдЙрдЪреНрдЪ-рдЧрдВрднреАрд░ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рддрд╕реЗрдЪ рдЬрдб, рдХрдореА рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдЬрд╕реЗ рдХреА рдЙрддреНрдкрд╛рджрди рдкреБрдирд░рд╛рд╡рд▓реЛрдХрдиреЗ, рд╕рдорд░реНрдерди рд╕рдВрджреЗрд╢, рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдк, рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдкреБрдирд░рд╛рд╡рд▓реЛрдХрдиреЗ рдЖрдгрд┐ рд╢рд┐рдлрд╛рд░рд╕реА. рд╕рд╛рд╣рдЬрд┐рдХрдЪ, рд╣реЗ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдХрд┐рдорд╛рди рдПрдХрд╛ NoSQL рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╣ рдХрд┐рдорд╛рди рдПрдХрд╛ SQL рдбреЗрдЯрд╛рдмреЗрд╕рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддрд╛рдд. рдХреНрд░реЙрд╕-рдкреНрд░рд╛рджреЗрд╢рд┐рдХ рдЖрдгрд┐ рдЬрд╛рдЧрддрд┐рдХ рдкреНрд░рдгрд╛рд▓реАрдВрдордзреНрдпреЗ, NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рджреЗрд╢рд╛рдд рдЪрд╛рд▓рдгрд╛рд▒реНрдпрд╛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реНрддреНрд░реЛрдд SQL рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдбреЗрдЯрд╛рд╕рд╛рдареА рднреМрдЧреЛрд▓рд┐рдХ-рд╡рд┐рддрд░рд┐рдд рдХреЕрд╢реЗ рдореНрд╣рдгреВрди рдХрд╛рд░реНрдп рдХрд░рддреЛ.

рдпреБрдЧрд╛рдмрд╛рдЗрдЯ рдбреАрдмреА SQL рдЖрдгрд┐ NoSQL рдХрд╕реЗ рдПрдХрддреНрд░ рдХрд░рддреЗ?

рд▓реЙрдЧ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдорд┐рдХреНрд╕реНрдб рд╕реНрдЯреЛрд░реЗрдЬ рдЗрдВрдЬрд┐рди, рдСрдЯреЛ-рд╢рд╛рд░реНрдбрд┐рдВрдЧ, рд╢рд╛рд░реНрдбреЗрдб рдбрд┐рд╕реНрдЯреНрд░рд┐рдмреНрдпреБрдЯреЗрдб рдХреЙрдиреНрд╕реЗрдиреНрд╕рд╕ рд░рд┐рдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдгрд┐ ACID рд╡рд┐рддрд░рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ (Google рд╕реНрдкреЕрдирд░рджреНрд╡рд╛рд░реЗ рдкреНрд░реЗрд░рд┐рдд) рд╡рд░ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реЗ, рдпреБрдЧрд╛рдмрд╛рдЗрдЯ рдбреАрдмреА рд╣рд╛ рдЬрдЧрд╛рддреАрд▓ рдкрд╣рд┐рд▓рд╛ рдореБрдХреНрдд рд╕реНрд░реЛрдд рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрд╣реЗ рдЬреЛ рдПрдХрд╛рдЪ рд╡реЗрд│реА NoSQL (Cassandra & Redis) рд╢реА рд╕реБрд╕рдВрдЧрдд рдЖрд╣реЗ. SQL (PostgreSQL). рдЦрд╛рд▓реАрд▓ рддрдХреНрддреНрдпрд╛рдордзреНрдпреЗ рджрд░реНрд╢рд╡рд┐рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, YCQL, рдпреБрдЧрд╛рдмрд╛рдЗрдЯ DB API Cassandra рд╕рд╣ рд╕реБрд╕рдВрдЧрдд, NoSQL API рдордзреНрдпреЗ рд╕рд┐рдВрдЧрд▓ рдЖрдгрд┐ рдорд▓реНрдЯреА-рдХреА ACID рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрдгрд┐ рдЬрд╛рдЧрддрд┐рдХ рджреБрдпреНрдпрдо рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХрд╛рдЪреНрдпрд╛ рд╕рдВрдХрд▓реНрдкрдирд╛ рдЬреЛрдбрддреЗ, рдЬреНрдпрд╛рдореБрд│реЗ рд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХ NoSQL рдбреЗрдЯрд╛рдмреЗрд╕рдЪреНрдпрд╛ рдпреБрдЧрд╛рдЪреА рд╕реБрд░реБрд╡рд╛рдд рд╣реЛрддреЗ. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, YCQL, PostgreSQL рд╕рд╣ рд╕реБрд╕рдВрдЧрдд рдпреБрдЧрд╛рдмрд╛рдЗрдЯ DB API, SQL API рдордзреНрдпреЗ рд░реЗрдЦреАрдп рд▓реЗрдЦрди рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдЖрдгрд┐ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдлреЙрд▓реНрдЯ рдЯреЙрд▓рд░рдиреНрд╕рдЪреНрдпрд╛ рд╕рдВрдХрд▓реНрдкрдирд╛ рдЬреЛрдбрддреЗ, рд╡рд┐рддрд░рд┐рдд SQL рдбреЗрдЯрд╛рдмреЗрд╕ рдЬрдЧрд╛рд╕рдореЛрд░ рдЖрдгрддреЗ. рдХрд╛рд░рдг рдпреБрдЧрд╛рдмрд╛рдЗрдЯ рдбреАрдмреА рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдд рдЖрд╣реЗ, NoSQL API рдЖрддрд╛ рдорд┐рд╢рди-рдХреНрд░рд┐рдЯрд┐рдХрд▓ рдбреЗрдЯрд╛рдЪреНрдпрд╛ рд╕рдВрджрд░реНрднрд╛рдд рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЭрд╛рдЗрди рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреА - PostgreSQL, Cassandra рдЖрдгрд┐ MongoDB рдЪреА рддреБрд▓рдирд╛ рдХрд░рдгреЗ

рдЖрдзреА рд▓реЗрдЦрд╛рдд рдореНрд╣рдЯрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ "YSQL рд╕рд╛рджрд░ рдХрд░рдд рдЖрд╣реЗ: рдпреБрдЧрд╛рдмрд╛рдЗрдЯ DB рд╕рд╛рдареА рдПрдХ PostgreSQL рд╕реБрд╕рдВрдЧрдд рд╡рд┐рддрд░рд┐рдд SQL API", YugaByte DB рдордзреАрд▓ SQL рдХрд┐рдВрд╡рд╛ NoSQL рдордзреАрд▓ рдирд┐рд╡рдб рдкреВрд░реНрдгрдкрдгреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд░реНрдХрд▓реЛрдбрдЪреНрдпрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддреЗ:

  • рдЬрд░ рддреБрдордЪрд╛ рдкреНрд░рд╛рдердорд┐рдХ рд╡рд░реНрдХрд▓реЛрдб рдорд▓реНрдЯреА-рдХреА рдЬреЙрдЗрди рдСрдкрд░реЗрд╢рдиреНрд╕ рдЕрд╕реЗрд▓, рддрд░ YSQL рдирд┐рд╡рдбрддрд╛рдирд╛, рд╕рдордЬреВрди рдШреНрдпрд╛ рдХреА рддреБрдордЪреНрдпрд╛ рдХреА рдмрд╣реБрд╡рд┐рдз рдиреЛрдбреНрд╕рдордзреНрдпреЗ рд╡рд┐рддрд░реАрдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд, рдкрд░рд┐рдгрд╛рдореА рдЙрдЪреНрдЪ рд╡рд┐рд▓рдВрдмрддрд╛ рдЖрдгрд┐/рдХрд┐рдВрд╡рд╛ NoSQL рдкреЗрдХреНрд╖рд╛ рдХрдореА рдереНрд░реВрдкреБрдЯ.
  • рдЕрдиреНрдпрдерд╛, рджреЛрди NoSQL API рдкреИрдХреА рдПрдХ рдирд┐рд╡рдбрд╛, рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡реВрди рдХреА рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХрд╛ рд╡реЗрд│реА рдПрдХрд╛рдЪ рдиреЛрдбрдордзреВрди рджрд┐рд▓реЗрд▓реНрдпрд╛ рдХреНрд╡реЗрд░реАрдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдореНрд╣рдгреВрди рдЪрд╛рдВрдЧрд▓реА рдХрд╛рдордЧрд┐рд░реА рдорд┐рд│реЗрд▓. рдпреБрдЧрд╛рдмрд╛рдЗрдЯ рдбреАрдмреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ-рдЬрдЧрд╛рддреАрд▓, рдЬрдЯрд┐рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрд╕рд╛рдареА рдПрдХрд▓ рдСрдкрд░реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореНрд╣рдгреВрди рдХрд╛рдо рдХрд░реВ рд╢рдХрддреЗ рдЬреНрдпрд╛рдВрдирд╛ рдПрдХрд╛рдЪ рд╡реЗрд│реА рдЕрдиреЗрдХ рд╡рд░реНрдХрд▓реЛрдбреНрд╕ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ.

рдкреБрдвреАрд▓ рд╡рд┐рднрд╛рдЧрд╛рддреАрд▓ рдбреЗрдЯрд╛ рдореЙрдбреЗрд▓рд┐рдВрдЧ рд▓реЕрдм рдореВрд│ рдбреЗрдЯрд╛рдмреЗрд╕рдЪреНрдпрд╛ рд╡рд┐рд░реВрджреНрдз, PostgreSQL рдЖрдгрд┐ Cassandra API рд╕реБрд╕рдВрдЧрдд рдпреБрдЧрд╛рдмрд╛рдЗрдЯ DB рдбреЗрдЯрд╛рдмреЗрд╕реЗрд╕рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЖрд╣реЗ. рд╣рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рджреЛрди рднрд┐рдиреНрди рдбреЗрдЯрд╛рдмреЗрд╕рдЪреЗ рдкреВрд░реНрдгрдкрдгреЗ рд╕реНрд╡рддрдВрддреНрд░ рдХреНрд▓рд╕реНрдЯрд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рдРрд╡рдЬреА, рдПрдХрд╛рдЪ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд▓рд╕реНрдЯрд░рдЪреНрдпрд╛ рджреЛрди рднрд┐рдиреНрди API (рджреЛрди рднрд┐рдиреНрди рдкреЛрд░реНрдЯрд╡рд░) рд╕рд╣ рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рдЪреНрдпрд╛ рд╕реБрд▓рднрддреЗрд╡рд░ рдЬреЛрд░ рджреЗрддреЛ.
рдЦрд╛рд▓реАрд▓ рд╡рд┐рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ, рдЖрдореНрд╣реА рдХрд╡реНрд╣рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреАрд▓ рдлрд░рдХ рдЖрдгрд┐ рдХрд╛рд╣реА рд╕рдорд╛рдирддрд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбреЗрдЯрд╛ рдореЙрдбреЗрд▓рд┐рдВрдЧ рд▓реЕрдмрд╡рд░ рдПрдХ рдирдЬрд░ рдЯрд╛рдХреВ.

рдбреЗрдЯрд╛ рдореЙрдбреЗрд▓рд┐рдВрдЧ рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛

рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдерд╛рдкрдирд╛

рдбреЗрдЯрд╛ рдореЙрдбреЗрд▓ рдбрд┐рдЭрд╛рдЗрдирд╡рд░ (рдЬрдЯрд┐рд▓ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░реНрд╕рдРрд╡рдЬреА) рднрд░ рджрд┐рд▓реНрдпрд╛рдиреЗ, рдЖрдореНрд╣реА рд╕реНрдерд╛рдирд┐рдХ рдорд╢реАрдирд╡рд░ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реВ рдЖрдгрд┐ рдирдВрддрд░ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╢реЗрд▓ рд╡рд╛рдкрд░реВрди рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзреВ.

PostgreSQL рдЖрдгрд┐ Cassandra рд╕реБрд╕рдВрдЧрдд рдпреБрдЧрд╛рдмрд╛рдЗрдЯ DB рдбреЗрдЯрд╛рдмреЗрд╕

mkdir ~/yugabyte && cd ~/yugabyte
wget https://downloads.yugabyte.com/yb-docker-ctl && chmod +x yb-docker-ctl
docker pull yugabytedb/yugabyte
./yb-docker-ctl create --enable_postgres

MongoDB

docker run --name my-mongo -d mongo:latest

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреНрд░рд╡реЗрд╢

рд╕рдВрдмрдВрдзрд┐рдд API рд╕рд╛рдареА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╢реЗрд▓ рд╡рд╛рдкрд░реВрди рдбреЗрдЯрд╛рдмреЗрд╕рд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░реВ.

рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рдПрд╕рдХреНрдпреВрдПрд▓

psql PostgreSQL рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рд╕рд╛рдареА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╢реЗрд▓ рдЖрд╣реЗ. рд╡рд╛рдкрд░рд╛рдЪреНрдпрд╛ рд╕реБрд▓рднрддреЗрд╕рд╛рдареА, рдпреБрдЧрд╛рдмрд╛рдЗрдЯ рдбреАрдмреА рдмрд┐рди рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ psql рд╕рд╣ рдпреЗрддреЛ.

docker exec -it yb-postgres-n1 /home/yugabyte/postgres/bin/psql -p 5433 -U postgres

рд╢рд░рд┐рд░рд╛рд╕рд╛рдареА рдЪрд╛рдВрдЧрд▓рдВ рдЕрд╕рддрдВ,

cqlsh CQL (Cassandra Query Language) рджреНрд╡рд╛рд░реЗ Cassandra рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реБрд╕рдВрдЧрдд рдбреЗрдЯрд╛рдмреЗрд╕рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рд╕рд╛рдареА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╢реЗрд▓ рдЖрд╣реЗ. рд╡рд╛рдкрд░ рд╕реБрд▓рднрддреЗрд╕рд╛рдареА, рдпреБрдЧрд╛рдмрд╛рдЗрдЯ рдбреАрдмреА рд╕реЛрдмрдд рдпреЗрддреЛ cqlsh рдХреЕрдЯрд▓реЙрдЧрдордзреНрдпреЗ bin.
рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА CQL SQL рджреНрд╡рд╛рд░реЗ рдкреНрд░реЗрд░рд┐рдд рдЖрд╣реЗ рдЖрдгрд┐ рдЯреЗрдмрд▓, рдкрдВрдХреНрддреА, рд╕реНрддрдВрдн рдЖрдгрд┐ рдЕрдиреБрдХреНрд░рдордгрд┐рдХреЗрдЪреНрдпрд╛ рд╕рдорд╛рди рд╕рдВрдХрд▓реНрдкрдирд╛ рдЖрд╣реЗрдд. рддрдерд╛рдкрд┐, рдПрдХ NoSQL рднрд╛рд╖рд╛ рдореНрд╣рдгреВрди, рддреА рдорд░реНрдпрд╛рджрд╛рдВрдЪрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЪ рдЬреЛрдбрддреЗ, рдЬреНрдпрд╛рдкреИрдХреА рдмрд╣реБрддреЗрдХ рдЖрдореНрд╣реА рдЗрддрд░ рд▓реЗрдЦрд╛рдВрдордзреНрдпреЗ рджреЗрдЦреАрд▓ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░реВ.

docker exec -it yb-tserver-n1 /home/yugabyte/bin/cqlsh

MongoDB

рдореЛрдВрдЧреЛ MongoDB рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рд╕рд╛рдареА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╢реЗрд▓ рдЖрд╣реЗ. рд╣реЗ MongoDB рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рдирдЪреНрдпрд╛ рдмрд┐рди рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдЖрдврд│реВ рд╢рдХрддреЗ.

docker exec -it my-mongo bash 
cd bin
mongo

рдПрдХ рдЯреЗрдмрд▓ рддрдпрд╛рд░ рдХрд░рдгреЗ

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

рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рдПрд╕рдХреНрдпреВрдПрд▓

CREATE TABLE Music (
    Artist VARCHAR(20) NOT NULL, 
    SongTitle VARCHAR(30) NOT NULL,
    AlbumTitle VARCHAR(25),
    Year INT,
    Price FLOAT,
    Genre VARCHAR(10),
    CriticRating FLOAT,
    Tags TEXT,
    PRIMARY KEY(Artist, SongTitle)
);	

рд╢рд░рд┐рд░рд╛рд╕рд╛рдареА рдЪрд╛рдВрдЧрд▓рдВ рдЕрд╕рддрдВ,

Cassandra рдордзреНрдпреЗ рдЯреЗрдмрд▓ рддрдпрд╛рд░ рдХрд░рдгреЗ PostgreSQL рд╕рд╛рд░рдЦреЗрдЪ рдЖрд╣реЗ. рдореБрдЦреНрдп рдлрд░рдХрд╛рдВрдкреИрдХреА рдПрдХ рдореНрд╣рдгрдЬреЗ рдЕрдЦрдВрдбрддреЗрдЪреНрдпрд╛ рдорд░реНрдпрд╛рджрд╛рдВрдЪрд╛ рдЕрднрд╛рд╡ (рдЙрджрд╛. NULL рдирд╛рд╣реА), рдкрд░рдВрддреБ рд╣реА NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдирд╡реНрд╣реЗ рддрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреА рдЬрдмрд╛рдмрджрд╛рд░реА рдЖрд╣реЗ. рдкреНрд░рд╛рдердорд┐рдХ рдХреАрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЬрди рдХреА (рдЦрд╛рд▓реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рддреАрд▓ рдХрд▓рд╛рдХрд╛рд░ рд╕реНрддрдВрдн) рдЖрдгрд┐ рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рд╕реНрддрдВрднрд╛рдВрдЪрд╛ рд╕рдВрдЪ (рдЦрд╛рд▓реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рддреАрд▓ рд╕реЙрдиреНрдЧрдЯрд╛рдЗрдЯрд▓ рд╕реНрддрдВрдн) рдЕрд╕рддреЛ. рд╡рд┐рднрд╛рдЬрди рдХреА рдкрдВрдХреНрддреА рдХреЛрдгрддреНрдпрд╛ рд╡рд┐рднрд╛рдЬрди/рд╢рд╛рд░реНрдбрдордзреНрдпреЗ рдареЗрд╡рд╛рдпрдЪреА рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рд╕реНрддрдВрдн рд╡рд░реНрддрдорд╛рди рд╢рд╛рд░реНрдбрдордзреНрдпреЗ рдбреЗрдЯрд╛ рдХрд╕рд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рд╡рд╛ рд╣реЗ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛рдд.

CREATE KEYSPACE myapp;
USE myapp;
CREATE TABLE Music (
    Artist TEXT, 
    SongTitle TEXT,
    AlbumTitle TEXT,
    Year INT,
    Price FLOAT,
    Genre TEXT,
    CriticRating FLOAT,
    Tags TEXT,
    PRIMARY KEY(Artist, SongTitle)
);

MongoDB

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

use myNewDatabase;

рдЯреЗрдмрд▓рдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА рдорд┐рд│рд╡рдгреЗ
рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рдПрд╕рдХреНрдпреВрдПрд▓

d Music
Table "public.music"
    Column    |         Type          | Collation | Nullable | Default 
--------------+-----------------------+-----------+----------+--------
 artist       | character varying(20) |           | not null | 
 songtitle    | character varying(30) |           | not null | 
 albumtitle   | character varying(25) |           |          | 
 year         | integer               |           |          | 
 price        | double precision      |           |          | 
 genre        | character varying(10) |           |          | 
 criticrating | double precision      |           |          | 
 tags         | text                  |           |          | 
Indexes:
    "music_pkey" PRIMARY KEY, btree (artist, songtitle)

рд╢рд░рд┐рд░рд╛рд╕рд╛рдареА рдЪрд╛рдВрдЧрд▓рдВ рдЕрд╕рддрдВ,

DESCRIBE TABLE MUSIC;
CREATE TABLE myapp.music (
    artist text,
    songtitle text,
    albumtitle text,
    year int,
    price float,
    genre text,
    tags text,
    PRIMARY KEY (artist, songtitle)
) WITH CLUSTERING ORDER BY (songtitle ASC)
    AND default_time_to_live = 0
    AND transactions = {'enabled': 'false'};

MongoDB

use myNewDatabase;
show collections;

рдЯреЗрдмрд▓рдордзреНрдпреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рдгреЗ
рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рдПрд╕рдХреНрдпреВрдПрд▓

INSERT INTO Music 
    (Artist, SongTitle, AlbumTitle, 
    Year, Price, Genre, CriticRating, 
    Tags)
VALUES(
    'No One You Know', 'Call Me Today', 'Somewhat Famous',
    2015, 2.14, 'Country', 7.8,
    '{"Composers": ["Smith", "Jones", "Davis"],"LengthInSeconds": 214}'
);
INSERT INTO Music 
    (Artist, SongTitle, AlbumTitle, 
    Price, Genre, CriticRating)
VALUES(
    'No One You Know', 'My Dog Spot', 'Hey Now',
    1.98, 'Country', 8.4
);
INSERT INTO Music 
    (Artist, SongTitle, AlbumTitle, 
    Price, Genre)
VALUES(
    'The Acme Band', 'Look Out, World', 'The Buck Starts Here',
    0.99, 'Rock'
);
INSERT INTO Music 
    (Artist, SongTitle, AlbumTitle, 
    Price, Genre, 
    Tags)
VALUES(
    'The Acme Band', 'Still In Love', 'The Buck Starts Here',
    2.47, 'Rock', 
    '{"radioStationsPlaying": ["KHCR", "KBQX", "WTNR", "WJJH"], "tourDates": { "Seattle": "20150625", "Cleveland": "20150630"}, "rotation": Heavy}'
);

рд╢рд░рд┐рд░рд╛рд╕рд╛рдареА рдЪрд╛рдВрдЧрд▓рдВ рдЕрд╕рддрдВ,

рдПрдХреВрдгрдЪ рдЕрднрд┐рд╡реНрдпрдХреНрддреА INSERT Cassandra рдордзреНрдпреЗ PostgreSQL рд╕рд╛рд░рдЦреЗрдЪ рджрд┐рд╕рддреЗ. рддрдерд╛рдкрд┐, рд╕рд┐рдореЗрдВрдЯрд┐рдХреНрд╕рдордзреНрдпреЗ рдПрдХ рдореЛрдард╛ рдлрд░рдХ рдЖрд╣реЗ. Cassandra рдордзреНрдпреЗ INSERT рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдПрдХ рдСрдкрд░реЗрд╢рди рдЖрд╣реЗ UPSERT, рдЬреЗрдереЗ рдкрдВрдХреНрддреА рдЖрдзреАрдкрд╛рд╕реВрди рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рд▓реНрдпрд╛рд╕ рд╢реЗрд╡рдЯрдЪреА рдореВрд▓реНрдпреЗ рдкрдВрдХреНрддреАрдордзреНрдпреЗ рдЬреЛрдбрд▓реА рдЬрд╛рддрд╛рдд.

рдбреЗрдЯрд╛ рдПрдВрдЯреНрд░реА рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ рд╕рд╛рд░рдЦреАрдЪ рдЖрд╣реЗ INSERT рдЙрдЪреНрдЪ

.

MongoDB

рдЬрд░реА рдореЛрдВрдЧреЛрдбреАрдмреА рд╣рд╛ рдХреЕрд╕реЕрдВрдбреНрд░рд╛рд╕рд╛рд░рдЦрд╛ NoSQL рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрд╕рд▓рд╛ рддрд░реА, рддреНрдпрд╛рдЪреНрдпрд╛ рдЗрдиреНрд╕рд░реНрдЯреЗрд╢рди рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ рдХреЕрд╕реЕрдиреНрдбреНрд░рд╛рдЪреНрдпрд╛ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╡рд░реНрддрдирд╛рд╢реА рдХрд╛рд╣реАрд╣реА рд╕рд╛рдореНрдп рдирд╛рд╣реА. рдореЛрдВрдЧреЛрдбреАрдмреА рдордзреНрдпреЗ рдШрд╛рд▓рд╛ () рд╕рдВрдзреА рдирд╛рд╣реАрдд UPSERT, рдЬреЗ рддреЗ PostgreSQL рд╕рд╛рд░рдЦреЗ рдмрдирд╡рддреЗ. рд╢рд┐рд╡рд╛рдп рдбреАрдлреЙрд▓реНрдЯ рдбреЗрдЯрд╛ рдЬреЛрдбрдд рдЖрд╣реЗ _idspecified рд╕рдВрдЧреНрд░рд╣рд╛рдордзреНрдпреЗ рдПрдХ рдирд╡реАрди рджрд╕реНрддрдРрд╡рдЬ рдЬреЛрдбрд▓рд╛ рдЬрд╛рдИрд▓.

db.music.insert( {
artist: "No One You Know",
songTitle: "Call Me Today",
albumTitle: "Somewhat Famous",
year: 2015,
price: 2.14,
genre: "Country",
tags: {
Composers: ["Smith", "Jones", "Davis"],
LengthInSeconds: 214
}
}
);
db.music.insert( {
artist: "No One You Know",
songTitle: "My Dog Spot",
albumTitle: "Hey Now",
price: 1.98,
genre: "Country",
criticRating: 8.4
}
);
db.music.insert( {
artist: "The Acme Band",
songTitle: "Look Out, World",
albumTitle:"The Buck Starts Here",
price: 0.99,
genre: "Rock"
}
);
db.music.insert( {
artist: "The Acme Band",
songTitle: "Still In Love",
albumTitle:"The Buck Starts Here",
price: 2.47,
genre: "Rock",
tags: {
radioStationsPlaying:["KHCR", "KBQX", "WTNR", "WJJH"],
tourDates: {
Seattle: "20150625",
Cleveland: "20150630"
},
rotation: "Heavy"
}
}
);

рдЯреЗрдмрд▓ рдХреНрд╡реЗрд░реА

рдХрджрд╛рдЪрд┐рдд рдХреНрд╡реЗрд░реА рдмрд╛рдВрдзрдХрд╛рдорд╛рдЪреНрдпрд╛ рджреГрд╖реНрдЯреАрдиреЗ SQL рдЖрдгрд┐ NoSQL рдордзреАрд▓ рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рдлрд░рдХ рдореНрд╣рдгрдЬреЗ рд╡рд╛рдкрд░рд▓реЗрд▓реА рднрд╛рд╖рд╛ FROM ╨╕ WHERE. рдПрд╕рдХреНрдпреВрдПрд▓ рдЕрднрд┐рд╡реНрдпрдХреНрддреА рдирдВрддрд░ рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ FROM рдПрдХрд╛рдзрд┐рдХ рд╕рд╛рд░рдгреНрдпрд╛ рдирд┐рд╡рдбрд╛ рдЖрдгрд┐ рдпрд╛рд╕рд╣ рдЕрднрд┐рд╡реНрдпрдХреНрддреА WHERE рдХреЛрдгрддреНрдпрд╛рд╣реА рдЬрдЯрд┐рд▓рддреЗрдЪреЗ рдЕрд╕реВ рд╢рдХрддреЗ (рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╣ JOIN рдЯреЗрдмрд▓ рджрд░рдореНрдпрд╛рди). рддрдерд╛рдкрд┐, NoSQL рд╡рд░ рдЧрдВрднреАрд░ рдорд░реНрдпрд╛рджрд╛ рд▓рд╛рджрддреЗ FROM, рдЖрдгрд┐ рдлрдХреНрдд рдПрдХрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЯреЗрдмрд▓рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рд╛ рдЖрдгрд┐ рдордзреНрдпреЗ WHERE, рдкреНрд░рд╛рдердорд┐рдХ рдХреА рдиреЗрд╣рдореА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣реЗ NoSQL рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдкреБрд╢рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ рдЬреНрдпрд╛рдмрджреНрджрд▓ рдЖрдореНрд╣реА рдЖрдзреА рдмреЛрд▓рд▓реЛ рд╣реЛрддреЛ. рдпрд╛ рдЗрдЪреНрдЫреЗрдореБрд│реЗ рдХреЛрдгрддреНрдпрд╛рд╣реА рдХреНрд░реЙрд╕-рдЯреЗрдмреНрдпреБрд▓рд░ рдЖрдгрд┐ рдХреНрд░реЙрд╕-рдХреА рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрднрд╛рд╡реНрдп рдШрдЯ рд╣реЛрдК рд╢рдХрддреЗ. рд╡рд┐рдирдВрддреАрд▓рд╛ рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрддрд╛рдирд╛ рдЖрдВрддрд░-рдиреЛрдб рд╕рдВрдкреНрд░реЗрд╖рдгрд╛рдордзреНрдпреЗ рдореЛрдард╛ рд╡рд┐рд▓рдВрдм рд╣реЛрдК рд╢рдХрддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдореБрд│реЗ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рдЯрд╛рд│рд▓реЗ рдЬрд╛рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдХреЕрд╕реЕрдиреНрдбреНрд░рд╛рд▓рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдкрд░реЗрдЯрд░реНрд╕рдкреБрд░рддреЗ рдорд░реНрдпрд╛рджрд┐рдд (рдХреЗрд╡рд│ =, IN, <, >, =>, <=) рд╡рд┐рднрд╛рдЬрди рдХреА рд╡рд░, рджреБрдпреНрдпрдо рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХрд╛рдЪреА рд╡рд┐рдирдВрддреА рдХреЗрд▓реНрдпрд╛рд╢рд┐рд╡рд╛рдп (рдпреЗрдереЗ рдлрдХреНрдд = рдСрдкрд░реЗрдЯрд░рд▓рд╛ рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ).

рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рдПрд╕рдХреНрдпреВрдПрд▓

рдЦрд╛рд▓реА рдХреНрд╡реЗрд░реАрдЪреА рддреАрди рдЙрджрд╛рд╣рд░рдгреЗ рджрд┐рд▓реА рдЖрд╣реЗрдд рдЬреА SQL рдбреЗрдЯрд╛рдмреЗрд╕рджреНрд╡рд╛рд░реЗ рд╕рд╣рдЬрдкрдгреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддрд╛рдд.

  • рдХрд▓рд╛рдХрд╛рд░рд╛рдЪреА рд╕рд░реНрд╡ рдЧрд╛рдгреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рд╛;
  • рд╢реАрд░реНрд╖рдХрд╛рдЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рднрд╛рдЧрд╛рд╢реА рдЬреБрд│рдгрд╛рд░реА рдХрд▓рд╛рдХрд╛рд░рд╛рдЪреА рд╕рд░реНрд╡ рдЧрд╛рдгреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рд╛;
  • рд╢реАрд░реНрд╖рдХрд╛рдд рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢рдмреНрдж рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЖрдгрд┐ 1.00 рдкреЗрдХреНрд╖рд╛ рдХрдореА рдХрд┐рдВрдордд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХрд▓рд╛рдХрд╛рд░рд╛рдЪреА рд╕рд░реНрд╡ рдЧрд╛рдгреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рд╛.
SELECT * FROM Music
WHERE Artist='No One You Know';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle LIKE 'Call%';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle LIKE '%Today%'
AND Price > 1.00;

рд╢рд░рд┐рд░рд╛рд╕рд╛рдареА рдЪрд╛рдВрдЧрд▓рдВ рдЕрд╕рддрдВ,

рд╡рд░ рд╕реВрдЪреАрдмрджреНрдз рдХреЗрд▓реЗрд▓реНрдпрд╛ PostgreSQL рдХреНрд╡реЗрд░реАрдВрдкреИрдХреА, рдлрдХреНрдд рдкрд╣рд┐рд▓реАрдЪ Cassandra рдордзреНрдпреЗ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрд▓, рдХрд╛рд░рдг рдСрдкрд░реЗрдЯрд░ LIKE рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рд╕реНрддрдВрднрд╛рдВрд╡рд░ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реА рдЬрд╕реЗ рдХреА SongTitle. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдХреЗрд╡рд│ рдСрдкрд░реЗрдЯрд░рдирд╛ рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ = ╨╕ IN.

SELECT * FROM Music
WHERE Artist='No One You Know';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle IN ('Call Me Today', 'My Dog Spot')
AND Price > 1.00;

MongoDB

рдорд╛рдЧреАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдВрдордзреНрдпреЗ рджрд░реНрд╢рд╡рд┐рд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рдореЛрдВрдЧреЛрдбреАрдмреАрдордзреНрдпреЗ рдХреНрд╡реЗрд░реА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдореБрдЦреНрдп рдкрджреНрдзрдд рдЖрд╣реЗ db.collection.find(). рдпрд╛ рдкрджреНрдзрддреАрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд╛рдЪреЗ рдирд╛рд╡ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ (music рдЦрд╛рд▓реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдордзреНрдпреЗ), рддреНрдпрд╛рдореБрд│реЗ рдПрдХрд╛рдзрд┐рдХ рд╕рдВрдЧреНрд░рд╣рд╛рдВрдЪреА рдЪреМрдХрд╢реА рдХрд░рдгреЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдЖрд╣реЗ.

db.music.find( {
  artist: "No One You Know"
 } 
);
db.music.find( {
  artist: "No One You Know",
  songTitle: /Call/
 } 
);

рдЯреЗрдмрд▓рдЪреНрдпрд╛ рд╕рд░реНрд╡ рдкрдВрдХреНрддреА рд╡рд╛рдЪрдгреЗ

рд╕рд░реНрд╡ рдкрдВрдХреНрддреА рд╡рд╛рдЪрдгреЗ рд╣реЗ рдЖрдореНрд╣реА рдЖрдзреА рдкрд╛рд╣рд┐рд▓реЗрд▓реНрдпрд╛ рдХреНрд╡реЗрд░реА рдкреЕрдЯрд░реНрдирдЪреЗ рдлрдХреНрдд рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд░рдг рдЖрд╣реЗ.

рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рдПрд╕рдХреНрдпреВрдПрд▓

SELECT * 
FROM Music;

рд╢рд░рд┐рд░рд╛рд╕рд╛рдареА рдЪрд╛рдВрдЧрд▓рдВ рдЕрд╕рддрдВ,

рд╡рд░реАрд▓ PostgreSQL рдЙрджрд╛рд╣рд░рдгрд╛рдкреНрд░рдорд╛рдгреЗрдЪ.

MongoDB

db.music.find( {} );

рдЯреЗрдмрд▓рдордзреАрд▓ рдбреЗрдЯрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдгреЗ

рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рдПрд╕рдХреНрдпреВрдПрд▓

PostgreSQL рд╕реВрдЪрдирд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ UPDATE рдбреЗрдЯрд╛ рдмрджрд▓рдгреНрдпрд╛рд╕рд╛рдареА. рддрд┐рд▓рд╛ рд╕рдВрдзреА рдирд╛рд╣реАрдд UPSERT, рддреНрдпрд╛рдореБрд│реЗ рдкрдВрдХреНрддреА рдпрд╛рдкреБрдвреЗ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдирд╕рд▓реНрдпрд╛рд╕ рд╣реЗ рд╡рд┐рдзрд╛рди рдЕрдпрд╢рд╕реНрд╡реА рд╣реЛрдИрд▓.

UPDATE Music
SET Genre = 'Disco'
WHERE Artist = 'The Acme Band' AND SongTitle = 'Still In Love';

рд╢рд░рд┐рд░рд╛рд╕рд╛рдареА рдЪрд╛рдВрдЧрд▓рдВ рдЕрд╕рддрдВ,

рдХреЕрд╕рд╛рдВрдбреНрд░рд╛рдХрдбреЗ рдЖрд╣реЗ UPDATE PostgreSQL рд╕рд╛рд░рдЦреЗ. UPDATE рд╕рдорд╛рди рд╢рдмреНрджрд╛рд░реНрде рдЖрд╣реЗ UPSERT, рд╕рдорд╛рди INSERT.

рд╡рд░реАрд▓ PostgreSQL рдЙрджрд╛рд╣рд░рдгрд╛рдкреНрд░рдорд╛рдгреЗрдЪ.

MongoDB
рдСрдкрд░реЗрд╢рди рдЕрджреНрдпрддрдирд┐рдд рдХрд░рд╛ () MongoDB рдордзреНрдпреЗ рд╡рд┐рджреНрдпрдорд╛рди рджрд╕реНрддрдРрд╡рдЬ рдкреВрд░реНрдгрдкрдгреЗ рдЕрджреНрдпрддрдирд┐рдд рдХрд░реВ рд╢рдХрддреЗ рдХрд┐рдВрд╡рд╛ рдХреЗрд╡рд│ рдХрд╛рд╣реА рдлреАрд▓реНрдб рдЕрджреНрдпрддрдирд┐рдд рдХрд░реВ рд╢рдХрддрд╛рдд. рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, рддреЗ рдлрдХреНрдд рдПрдХ рджрд╕реНрддрдРрд╡рдЬ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рддреЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рд╢рдмреНрджрд╛рд░реНрде рдЕрдХреНрд╖рдо рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд UPSERT. рдПрдХрд╛рдзрд┐рдХ рджрд╕реНрддрдРрд╡рдЬ рдЖрдгрд┐ рд╕рдорд╛рди рд╡рд░реНрддрди рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреЗ UPSERT рдСрдкрд░реЗрд╢рдирд╕рд╛рдареА рдЕрддрд┐рд░рд┐рдХреНрдд рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░реВрди рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЦрд╛рд▓реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдордзреНрдпреЗ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд▓рд╛рдХрд╛рд░рд╛рдЪреА рд╢реИрд▓реА рддреНрдпрд╛рдЪреНрдпрд╛ рдЧрд╛рдгреНрдпрд╛рдЪреНрдпрд╛ рдЖрдзрд╛рд░реЗ рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ.

db.music.update(
  {"artist": "The Acme Band"},
  { 
    $set: {
      "genre": "Disco"
    }
  },
  {"multi": true, "upsert": true}
);

рдЯреЗрдмрд▓рдордзреВрди рдбреЗрдЯрд╛ рдХрд╛рдвреВрди рдЯрд╛рдХрдд рдЖрд╣реЗ

рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рдПрд╕рдХреНрдпреВрдПрд▓

DELETE FROM Music
WHERE Artist = 'The Acme Band' AND SongTitle = 'Look Out, World';

рд╢рд░рд┐рд░рд╛рд╕рд╛рдареА рдЪрд╛рдВрдЧрд▓рдВ рдЕрд╕рддрдВ,

рд╡рд░реАрд▓ PostgreSQL рдЙрджрд╛рд╣рд░рдгрд╛рдкреНрд░рдорд╛рдгреЗрдЪ.

MongoDB

рдореЛрдВрдЧреЛрдбреАрдмреАрдХрдбреЗ рдХрд╛рдЧрджрдкрддреНрд░реЗ рд╣рдЯрд╡рдгреНрдпрд╛рд╕рд╛рдареА рджреЛрди рдкреНрд░рдХрд╛рд░рдЪреЗ рдСрдкрд░реЗрд╢рдиреНрд╕ рдЖрд╣реЗрдд - рд╣рдЯрд╡рд╛() /deleteMany() ╨╕ () рдХрд╛рдврд╛. рджреЛрдиреНрд╣реА рдкреНрд░рдХрд╛рд░ рджрд╕реНрддрдРрд╡рдЬ рд╣рдЯрд╡рддрд╛рдд рдкрд░рдВрддреБ рднрд┐рдиреНрди рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛рдд.

db.music.deleteMany( {
        artist: "The Acme Band"
    }
);

рдЯреЗрдмрд▓ рд╣рдЯрд╡рдд рдЖрд╣реЗ

рдкреЛрд╕реНрдЯрдЧреНрд░реЗ рдПрд╕рдХреНрдпреВрдПрд▓

DROP TABLE Music;

рд╢рд░рд┐рд░рд╛рд╕рд╛рдареА рдЪрд╛рдВрдЧрд▓рдВ рдЕрд╕рддрдВ,

рд╡рд░реАрд▓ PostgreSQL рдЙрджрд╛рд╣рд░рдгрд╛рдкреНрд░рдорд╛рдгреЗрдЪ.

MongoDB

db.music.drop();

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

рдПрд╕рдХреНрдпреВрдПрд▓ рдЖрдгрд┐ NoSQL рдордзреАрд▓ рдирд┐рд╡рдбреАрдмрджреНрджрд▓рдЪреА рдЪрд░реНрдЪрд╛ 10 рд╡рд░реНрд╖рд╛рдВрд╣реВрди рдЕрдзрд┐рдХ рдХрд╛рд│ рд╕реБрд░реВ рдЖрд╣реЗ. рдпрд╛ рд╡рд╛рджрд╛рдЪреЗ рджреЛрди рдореБрдЦреНрдп рдкреИрд▓реВ рдЖрд╣реЗрдд: рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрд┐рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ (рдореЛрдиреЛрд▓рд┐рдерд┐рдХ, рдЯреНрд░рд╛рдиреНрдЭреЕрдХреНрд╢рдирд▓ рдПрд╕рдХреНрдпреВрдПрд▓ рд╡рд┐рд░реБрджреНрдз рдбрд┐рд╕реНрдЯреНрд░рд┐рдмреНрдпреБрдЯреЗрдб, рдиреЙрди-рдЯреНрд░рд╛рдиреНрдЭреЕрдХреНрд╢рдирд▓ NoSQL) рдЖрдгрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЭрд╛рдЗрди рджреГрд╖реНрдЯрд┐рдХреЛрди (SQL рдордзреНрдпреЗ рддреБрдордЪреНрдпрд╛ рдбреЗрдЯрд╛рдЪреЗ рдореЙрдбреЗрд▓рд┐рдВрдЧ vs NoSQL рдордзреНрдпреЗ рддреБрдордЪреНрдпрд╛ рдХреНрд╡реЗрд░реАрдЪреЗ рдореЙрдбреЗрд▓рд┐рдВрдЧ).

рдпреБрдЧрд╛рдмрд╛рдЗрдЯ рдбреАрдмреА рд╕рд╛рд░рдЦреНрдпрд╛ рд╡рд┐рддрд░реАрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╣, рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рдмрджреНрджрд▓рдЪреНрдпрд╛ рд╡рд╛рджрд╡рд┐рд╡рд╛рджрд╛рд▓рд╛ рд╕рд╣рдЬрдкрдгреЗ рд╡рд┐рд╢реНрд░рд╛рдВрддреА рджрд┐рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ. рдбреЗрдЯрд╛ рд╡реНрд╣реЙрд▓реНрдпреВрдо рдПрдХрд╛ рдиреЛрдбрд╡рд░ рд▓рд┐рд╣рд┐рд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд рддреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдореЛрдард╛ рд╣реЛрдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рд╢рд╛рд░реНрдбрд┐рдВрдЧ/рд░рд┐рдмреЕрд▓реЗрдВрд╕рд┐рдВрдЧрд╕рд╣ рд░реЗрдЦреАрдп рд▓реЗрдЦрди рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреАрд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгрд╛рд░реЗ рдкреВрд░реНрдг рд╡рд┐рддрд░рд┐рдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ.

рдпрд╛рд╢рд┐рд╡рд╛рдп, рдПрдХрд╛ рд▓реЗрдЦрд╛рдд рдореНрд╣рдЯрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ Google рдореЗрдШ,рд╡реНрдпрд╡рд╣рд╛рд░реА, рдЬреЛрд░рджрд╛рд░ рд╕реБрд╕рдВрдЧрдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░реНрд╕ рдЖрддрд╛ рдЕрдзрд┐рдХ рдЖрд╣реЗрдд, рдЧреИрд░-рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдкреЗрдХреНрд╖рд╛ рдЪрд╛рдВрдЧрд▓реА рд╡рд┐рдХрд╛рд╕ рдЪрдкрд│рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддрд╛рдд, рдЕрдЦреЗрд░реАрд╕ рд╕реБрд╕рдВрдЧрдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░.

рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЭрд╛рдЗрди рдЪрд░реНрдЪреЗрдХрдбреЗ рдкрд░рдд рдпреЗрдд рдЕрд╕рддрд╛рдирд╛, рдХреЛрдгрддреНрдпрд╛рд╣реА рдЬрдЯрд┐рд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ-рдЬрд╛рдЧрддрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕рд╛рдареА рджреЛрдиреНрд╣реА рдбрд┐рдЭрд╛рдЗрди рджреГрд╖реНрдЯрд┐рдХреЛрди (SQL рдЖрдгрд┐ NoSQL) рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд рдЕрд╕реЗ рдореНрд╣рдгрдгреЗ рдпреЛрдЧреНрдп рдЖрд╣реЗ. SQL "рдбреЗрдЯрд╛ рдореЙрдбреЗрд▓рд┐рдВрдЧ" рджреГрд╖реНрдЯреАрдХреЛрди рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рдмрджрд▓рддреНрдпрд╛ рд╡реНрдпрд╡рд╕рд╛рдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдзрд┐рдХ рд╕рд╣рдЬрдкрдгреЗ рдкреВрд░реНрдг рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЛ, рддрд░ NoSQL "рдХреНрд╡реЗрд░реА рдореЙрдбреЗрд▓рд┐рдВрдЧ" рджреГрд╖реНрдЯреАрдХреЛрди рд╕рдорд╛рди рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рдХрдореА рд╡рд┐рд▓рдВрдмрддрд╛ рдЖрдгрд┐ рдЙрдЪреНрдЪ рдереНрд░реВрдкреБрдЯрд╕рд╣ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдбреЗрдЯрд╛рд╡рд░ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЛ. рдпрд╛ рдХрд╛рд░рдгрд╛рд╕реНрддрд╡ рдпреБрдЧрд╛рдмрд╛рдЗрдЯ рдбреАрдмреА рдПрдХрд╛ рдкрдзреНрджрддреАрдЪрд╛ рдкреНрд░рдЪрд╛рд░ рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА, рд╕рдорд╛рди рдХреЛрд░рдордзреНрдпреЗ SQL рдЖрдгрд┐ NoSQL API рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, PostgreSQL рдЖрдгрд┐ Cassandra рдпрд╛рд╕рд╣ рд▓реЛрдХрдкреНрд░рд┐рдп рдбреЗрдЯрд╛рдмреЗрд╕ рднрд╛рд╖рд╛рдВрд╕рд╣ рд╕реБрд╕рдВрдЧрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░реВрди, рдпреБрдЧрд╛рдмрд╛рдЗрдЯ DB рд╣реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рдХреА рд╡рд┐рдХрд╕рдХрд╛рдВрдирд╛ рд╡рд┐рддрд░рд┐рдд, рдЕрддреНрдпрдВрдд рд╕реБрд╕рдВрдЧрдд рдбреЗрдЯрд╛рдмреЗрд╕ рдЗрдВрдЬрд┐рдирд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреБрд╕рд░реА рднрд╛рд╖рд╛ рд╢рд┐рдХрдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА.

рдпрд╛ рд▓реЗрдЦрд╛рдд, рдЖрдореНрд╣реА PostgreSQL, Cassandra рдЖрдгрд┐ MongoDB рдордзреАрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдбрд┐рдЭрд╛рдЗрди рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреА рдХрд╢рд╛ рд╡реЗрдЧрд│реНрдпрд╛ рдЖрд╣реЗрдд рд╣реЗ рдкрд╛рд╣рд┐рд▓реЗ. рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ рд▓реЗрдЦрд╛рдВрдордзреНрдпреЗ, рдЖрдореНрд╣реА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛, рд╡реНрдпрд╡рд╣рд╛рд░, рдЬреЙрдЗрди, TTL рдирд┐рд░реНрджреЗрд╢ рдЖрдгрд┐ JSON рджрд╕реНрддрдРрд╡рдЬ рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдкреНрд░рдЧрдд рдбрд┐рдЭрд╛рдЗрди рд╕рдВрдХрд▓реНрдкрдирд╛рдВрдЪрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд░реВ.

рдЖрдореНрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдард╡рдбреНрдпрд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рд╡рд┐рд╢реНрд░рд╛рдВрддреАрдЪреА рд╢реБрднреЗрдЪреНрдЫрд╛ рджреЗрддреЛ рдЖрдгрд┐ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЛ рд╡рд┐рдирд╛рдореВрд▓реНрдп рд╡реЗрдмрд┐рдирд╛рд░, рдЬреЗ 14 рдореЗ рд░реЛрдЬреА рд╣реЛрдгрд╛рд░ рдЖрд╣реЗ.

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

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