рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рд╣реИрдВ рдЬреЛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдлрд▓ рдореБрдЦреНрдпрдзрд╛рд░рд╛ рдмрди рдЧрдП рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдХреНрд╕реЗрд▓ / рдПрд▓рд┐рдЯрд┐рдХреНрд╕рд░реНрдЪред рдЕрдиреНрдп, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░реЗрдерд┐рдирдмреЗрдХ, рдмрд╛рдЬрд╛рд░ рдЦреЛ рджрд┐рдпрд╛ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реБрдЖ рдПрдХ рдПрдореНрдмреЗрдбреЗрдб рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ H2 рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрдкрдиреЗ рдЖрд▓рд╛ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рд░рд╣ рд░рд╣рд╛ рд╣реИред

рд╕реЛрдирд╛рд░рдХреНрдпреВрдм, рдЬреАрд░рд╛, рдХреЙрдиреНрдлреНрд▓реБрдПрдВрд╕ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реА рд╢реБрд░реБрдЖрдд рдореЗрдВ H2 рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред H2 рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА JVM рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ SQL рдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдЖрдзрд╛рд░ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХрдо рдЬреНрдЮрд╛рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ - рдпрд╣ рд╡рд┐рддрд░рд┐рдд рдЗрдЧреНрдирд╛рдЗрдЯ-рдПрд╕рдХреНрдпреВрдПрд▓ рдореЗрдВ рдПрдЪ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдкрд╛рджрди рддреИрдпрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдПрдХ рдорд╣реАрдиреЗ рд╕реЗ рднреА рдХрдо рд╕рдордп рдкрд╣рд▓реЗ, рд╕рдВрд╕реНрдХрд░рдг
1.4.199 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдЕрдм рдЖрдк рдХрд╛рдлреА рдЬрдЯрд┐рд▓ SQL рдХреНрд╡реЗрд░реА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдореИрдВрдиреЗ рдХрднреА рднреА рдбрд┐рд╕реНрдХ рдХреЛ рдбреЗрдЯрд╛ рдХреА рдмрдЪрдд рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ H2 рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдмрд▓реНрдХрд┐, рдЕрдЪреНрдЫреЗ SQL рд╕рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде JVM рдореЗрдореЛрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП, рдпрд╣
рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди рдХреА рдХрдореА рд╕реЗ рдмрд╣реБрдд рд╕реАрдорд┐рдд рдерд╛ред рдФрд░ рдЕрдм,
рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж рд╕реЗ рдЖрдзреЗ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрд╖ рдХреЗ рдмрд╛рдж, рдЕрдм H2database рдиреЗ
SQLite рдХреЗ рд╕рд╛рде рдкрдХрдбрд╝ рд▓рд┐рдпрд╛ рд╣реИред рдФрд░ рдпрд╣ рдЗрд░рдХреБрддреНрд╕реНрдХ рд╕реЗ
рдпреЗрд╡рдЧреЗрдиреА рд░рд┐рдпрд╛рдЬрд╝рд╛рдиреЛрд╡ рдХреА рдорд╣рд╛рди рдпреЛрдЧреНрдпрддрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реИ - рдореИрдВрдиреЗ рдЧреИрд░-рд▓рд╛рднрдХрд╛рд░реА рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдЙрдирдХреА рдкрд╣рд▓реЗ рдЬреИрд╕реА рд╡рд┐рдХрд╛рд╕ рдЧрддрд┐ рдирд╣реАрдВ рджреЗрдЦреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреНрдп рд░реВрд╕реА рднрд╛рд╖реА рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рдФрд░ рд░рд┐рд▓реАрдЬ рдХреЗ рдХреНрд╖рдгреЛрдВ рдореЗрдВ - рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрд╕реНрдерд╛рдкрдХ
рдереЙрдорд╕ рдореБрд▓рд░ ред
H2 рдореЗрдВ
рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреНрд░рд╢реНрдиреЛрдВ (CTE) рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИред рдпрд╣ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдХреНрд╡реЗрд░реА рдЕрдкрдШрдЯрди рдореЗрдВ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SQL рдореЗрдВ рдорд╛рдирдХ рддрд░реАрдХрд╛ рд╣реИ (рдпрд╣рд╛рдВ рдЖрдк рдЕрдиреБрд╕реВрдЪрдХ рдХреА рд░реЗрдХ рдкрд░ рдХрджрдо рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ)ред рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдЙрджрд╛рд╣рд░рдг рд╕рд╣рд┐рдд
рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рд╡рд░реНрдгрд┐рдд
рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
рдЦрд░рд╛рдм рд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
SQL / JSON рдорд╛рдирдХ рдХрд╛ рдЖрдЧрд╛рдореА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЗрд╕ рдмреАрдЪ, рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдиреЗ
рдмреЗрд╕ 2 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХрд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди XQuery 3.1 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдорджрдж рд╕реЗ H2 рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред рдХреЛрдб github
H2XQueryAdapter рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред рдпрд╣ рдПрдХ рдЯреЗрдмрд▓ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдПрдХреНрд╕рдПрдордЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ XML рдпрд╛ JSON рдлреЙрд░реНрдореЗрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рдирд╣реАрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдкреНрд░рддрд┐рдмрдВрдз рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрд╕рдХреНрдпреВрдПрд▓ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдХреА рдкреВрд░реА рд╢рдХреНрддрд┐ рдЬреЗрд╡реАрдПрдо рдкреНрд░реЛрд╕реЗрд╕ рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХ XQuery рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред
рддрд╛рд▓рд┐рдХрд╛ рдлрд╝рдВрдХреНрд╢рди xquery () рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реИ рдФрд░ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ - рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ xQuery рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рдФрд░ рдПрдХ xQuery рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рдФрд░ рджреВрд╕рд░рд╛- sql рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ xQuery рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
рдПрдХ
рдмрд╛рдпреЛрдореЗрдбрд┐рдХрд▓ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рдХреА рдПрдХ рдкреЗрдЯрд╛рдмрд╛рдЗрдЯ рдорд╛рддреНрд░рд╛ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрддреНрдХреГрд╖реНрдЯ рд╕рд╛рдмрд┐рдд рд╣реБрдЖред
create table xresult (GR VARCHAR(500) not null,AR varchar, VER VARCHAR(50)) as select * from xquery('declare variable $getHeader as xs:boolean external := false(); declare variable $getData as xs:boolean external := true(); <csv> { if($getHeader) then( <record><mavengr>VARCHAR(500) not null</mavengr><artifactname>varchar</artifactname><versionname>VARCHAR(50)</versionname></record> ), if($getData) then(( for $row in doc("http://central.maven.org/maven2/org/springframework/spring-context/5.1.4.RELEASE/spring-context-5.1.4.RELEASE.pom")//*:dependency return <record><mavengr>{$row/*:groupId/text()}</mavengr><artifactname>{$row/*:artifactId/text()}</artifactname><versionname>{$row/*:version/text()}</versionname></record> )) } </csv>')
рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ xquery рдХреНрд╡реЗрд░реА рдХреЗ рдкреНрд░рд╛рд░реВрдк рдкрд░ рд╕реАрдорд╛рдПрдБ рд╣реИрдВред
рд╕реНрддрдВрдн рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдПрдЪ 2 рд╕реЗ рдПрд╕рдХреНрдпреВрдПрд▓ рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЗрддрдиреА рджреГрдврд╝рддрд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдерд╛ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рд╕рддреНрд░ рдмрдирд╛рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдореИрдВ рдЦреБрдж рдХреЛ рдЗрд╕ рд╕реЛрдЪ рдХреЗ рд╕рд╛рде рд╕рд╛рдВрддреНрд╡рдирд╛ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЖрд╡реЗрджрди рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХрд┐рд╕реА рднреА рдмреАрдПрдирдПрдл рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд░реНрд╕рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд┐рдпрд╛ред
рдЖрдк
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЬрд╛рд╡рд╛ рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдирдП рдкрд░рд┐рд╡рд░реНрддрди рдирд┐рдпрдо рдкрд░рд┐рдЪрд┐рдд xquery рд╕рдВрдкрд╛рджрдХ рдпрд╛ рдУрдкрди рд╕реЛрд░реНрд╕
рдмреЗрд╕рдПрдХреНрд╕ GUI рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЬрд╛рд╡рд╛ рд╕рдВрдЧреНрд░рд╣ рдпрд╛ POJO рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ H2 рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИред
G2ub рдкрд░
H2POJOTable рдкреНрд░реЛрдЬреЗрдХреНрдЯ
рдХреЛрдб ред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рдВрджрд░реНрдн рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдЖрдзрд╛рд░рд┐рдд рдореЗрдореЛрд░реА рдореИрдирдЬрд░рдореИрдХреНрд╕рдмреАрдиреНрд╕ рдПрдХ рдПрдЪ 2 рдЯреЗрдмрд▓ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЖрд░рд╛рдо рд╣реЛрдЧрд╛ рдЬреЛ LINQ рдХреА рдХрдореА рд╕реЗ рджреБрдЦреА рд╣реИрдВ рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реЗрдЯ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред
try (Statement statement = connection.createStatement()) { String pojoTableAlias = "create alias MemoryManagerMXBeans as $$ \n" + "import java.lang.management.ManagementFactory;\n" + "import java.lang.management.MemoryManagerMXBean;\n" + "import org.h2.expression.function.pojo.*;\n" + "import java.sql.*;\n" + "import java.util.Collections;\n" + "@CODE\n" + " ResultSet getRuntimeStat(Connection connection) throws Exception{\n" + " return H2PojoAdapter.toTable(connection, new CollectionWraper<>(MemoryManagerMXBean.class," + " ManagementFactory::getMemoryManagerMXBeans, Collections.emptyMap()));\n" + " }\n" + "\n$$"; statement.executeUpdate(pojoTableAlias); } try (Statement statement = connection.createStatement()) { try (ResultSet resultSet = statement.executeQuery("select * from MemoryManagerMXBeans()")) { int columnCount = assertResultSet(resultSet, new String[]{"memoryPoolNames", "name", "valid"}); assertThat(columnCount).isGreaterThan(1); } }
рдХрднреА-рдХрднреА рдПрдЪ 2 рдореЗрдВ рдкреБрд░рд╛рдиреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЯреВрдЯ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреА рдорд╛рдВрдЧ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореЗрд░реА рдХрд╛рд░реНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдо
AWS S3 URL рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЬреНрдЮрд╛рдд рддреНрд░реБрдЯрд┐
рдЕрднреА рднреА рдореЗрд░реЗ
рдЕрдиреБрд░реЛрдз рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдХреЗ
рддрдп рдХреА рдЬрд╛рдПрдЧреА ред рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдЯреАрдПрд▓рдПрд╕ рдХреЗ рд▓рд┐рдП рдЕрд╕реНрдерд┐рд░ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ, рдЬреЛ рдЬрд╛рд╡рд╛ 11 рдХреЗ рддрд╣рдд рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
H2 рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реБрдП
ODBC рдбреНрд░рд╛рдЗрд╡рд░ PostgreSQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЬреЛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдЖрдкрдХреЛ PostgreSQL рдореЗрдВ FDW рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдмрд╛рдВрдзрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛, H2 рдХреЗ рд╡рд┐рддрд░рдг рдореЗрдВ рд╕рдВрдкрд╛рджрди, рд╕рд░реНрд╡рд▓реЗрдЯ рдпрд╛ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдСрдЯреЛ-рдкреВрд░реНрдгрддрд╛ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рдиреНрдпреВрдирддрдо рд╡реЗрдм рдХрдВрд╕реЛрд▓ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред H2 рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП "рд╕реНрд╡рд┐рд╕ рдЪрд╛рдХреВ" рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ - рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдФрд░ рдмрд╣реБрдореБрдЦреА рдЙрдкрдХрд░рдг рдпрджрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреЗрд╡реАрдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдЬрдм рдЗрд╕ рдХрдВрд╕реЛрд▓ рдХреЛ "рдЯреЗрдврд╝реЗ" jdbc рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, DBMS Redshift рдиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛
рд░реЗрдб-рдЖрдЗрдб рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ред
рдиреЛрдПрд▓ рдЧреНрд░рд╛рдВрдбрд┐рди , рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рдиреЗ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдореЗрд░реА рдорджрдж рдХреА рдФрд░ рд╕реБрдзрд╛рд░реЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ред
рдпрджрд┐ рдЖрдкрдХреЛ рдмрд░реНрдХрд▓реЗ рдбреАрдмреА рдЬрд╛рд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдПрдирд╛рд▓реЙрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ
рдПрдорд╡реАрд╕реНрдЯреЛрд░ рд╣реИ - рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рддрдд рднрдВрдбрд╛рд░рдг рдФрд░, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ MVCC, "рдЗрдВрдЬрди" рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВред рдпрд╣ рд╣рдбрд╝рддрд╛рд▓реА рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ
рдЬрд┐рдпреЛрдлрдВрдХреНрд╢рди рдФрд░
рдкреВрд░реНрдг-рдкрд╛рда рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рдорд░реНрдерди рднреА рд╣реИред
H2database рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рд░ рдХреЛрдИ рдЗрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ! H2 рдбреЗрдЯрд╛рдмреЗрд╕ 2005 рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЕрдм рд╡рд┐рдВрдбреЛ рдлрд╝рдВрдХреНрд╢рди, рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ JVM рдореЗрдореЛрд░реА рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА SQL "рдЗрдВрдЬрди" рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдФрд░ рд╢рд┐рдерд┐рд▓ рд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдмрд▓ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИред