"рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕" рдЕрдиреБрднрд╡

"рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕" рдЕрдиреБрднрд╡

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

рдФрд░ рдЪрд▓рд┐рдП рдпрд╣реАрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рд╕рд╛рдБрдк. "SQL рдмрдирд╛рдо ORM" рдкреНрд░рдХрд╛рд░ рдХреА рдкрд╣рд▓реА рд▓рдбрд╝рд╛рдЗрдпрд╛рдБ 1960 рдореЗрдВ рджреЗрдЦреА рдЧрдИрдВред рдкреНрд░реА-рдкреЗрдЯреНрд░рд┐рди рд░рд╕'.

рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧ

ORM рд╕рдорд░реНрдердХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐ рдФрд░ рдЖрд╕рд╛рдиреА, DBMS рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдФрд░ рд╕реНрд╡рдЪреНрдЫ рдХреЛрдб рдХреЛ рдорд╣рддреНрд╡ рджреЗрддреЗ рд╣реИрдВред рд╣рдо рдореЗрдВ рд╕реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ (рдФрд░ рдЕрдХреНрд╕рд░ рд╕реНрд╡рдпрдВ рдбреЗрдЯрд╛рдмреЗрд╕) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб

рдЖрдорддреМрд░ рдкрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ...

@Entity
@Table(name = "stock", catalog = "maindb", uniqueConstraints = {
        @UniqueConstraint(columnNames = "STOCK_NAME"),
        @UniqueConstraint(columnNames = "STOCK_CODE") })
public class Stock implements java.io.Serializable {

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "STOCK_ID", unique = true, nullable = false)
    public Integer getStockId() {
        return this.stockId;
    }
  ...

рдореЙрдбрд▓ рд╕реНрдорд╛рд░реНрдЯ рдПрдиреЛрдЯреЗрд╢рди рд╕реЗ рдЖрдЪреНрдЫрд╛рджрд┐рдд рд╣реИ, рдФрд░ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХрд╣реАрдВ, рдмрд╣рд╛рджреБрд░ ORM рдХреБрдЫ SQL рдХреЛрдб рдХрд╛ рдЯрди рдЙрддреНрдкрдиреНрди рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡реИрд╕реЗ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрд┐рд▓реЛрдореАрдЯрд░реЛрдВ рдХреА рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдЪреМрдВрдХрд╛ рджреЗрддрд╛ рд╣реИред "SQL рдирдлрд░рдд".

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

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рджреЛрдиреЛрдВ рджреБрдирд┐рдпрд╛рдУрдВ рдХрд╛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рд╣рд┐рд╕реНрд╕рд╛ рд▓реЗрдВ? рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдПрдХ рдЕрджреНрднреБрдд рдЙрдкрдХрд░рдг рдореЗрдВ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдЬреАрд╡рди-рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдпрд╕рдХреНрдпреВрдПрд▓. рдореИрдВ рдЕрдкрдиреЗ рдирд┐рдГрд╢реБрд▓реНрдХ рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рджреВрдВрдЧрд╛, рдФрд░ рдЖрдк рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣рд╛рдВ.

рдХреНрд▓реЛрдЬрд░ DSL рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рднрд╛рд╖рд╛ рд╣реИ, рд▓реЗрдХрд┐рди SQL рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрдЪреНрдЫреА DSL рд╣реИ рдФрд░ рд╣рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдПрд╕-рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдареАрдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдХреЛрд╖реНрдардХ рдХреЗ рд▓рд┐рдП рдХреЛрд╖реНрдардХ рдорд┐рд▓рддреЗ рд╣реИрдВред рд╕рд╣рдордд рдирд╣реАрдВ? рдлрд┐рд░ рдЙрд╕ рдХреНрд╖рдг рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдЬрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЕрдореВрд░реНрддрддрд╛ рд▓реАрдХ рд╣реЛрдиреЗ рд▓рдЧреЗ, рдФрд░ рдЖрдк рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд▓рдбрд╝рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВ (рд░реЙ-рдПрд╕рдХреНрдпреВрдПрд▓)

рдЗрд╕рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рдЖрдЗрдП SQL рдХреЛ рд╕рд╛рдорд╛рдиреНрдп SQL рдХреЗ рд░реВрдк рдореЗрдВ рд╣реА рд░рд╣рдиреЗ рджреЗрдВ - рдкреНрд░рддрд┐ рдХреНрд╡реЗрд░реА рдПрдХ рдлрд╝рд╛рдЗрд▓:

-- name: users-by-country
select *
  from users
 where country_code = :country_code

тАжрдФрд░ рдлрд┐рд░ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝реЗрдВ, рдЙрд╕реЗ рдПрдХ рдирд┐рдпрдорд┐рдд рдХреНрд▓реЛрдЬрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрджрд▓ рджреЗрдВ:

(defqueries "some/where/users_by_country.sql"
   {:connection db-spec})

;;; A function with the name `users-by-country` has been created.
;;; Let's use it:
(users-by-country {:country_code "GB"})
;=> ({:name "Kris" :country_code "GB" ...} ...)

"SQL рдЕрд▓рдЧ, рдХреНрд▓реЛрдЬрд░ рдЕрд▓рдЧ" рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдЯрд┐рдХреЗ рд░рд╣рдиреЗ рд╕реЗ, рдЖрдкрдХреЛ рдорд┐рд▓рддрд╛ рд╣реИ:

  • рдХреЛрдИ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕рдВрдмрдВрдзреА рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВред рдЖрдкрдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ (рдХрд┐рд╕реА рдЕрдиреНрдп рдХреА рддрд░рд╣) 100% SQL рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ - рд▓реЗрдХрд┐рди Yessql рдХреЗ рд▓рд┐рдП рдпрд╣ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ред рдЖрдк SQL рд╕рдорддреБрд▓реНрдп рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЦреЛрдЬ рдореЗрдВ рдХрднреА рднреА рд╕рдордп рдмрд░реНрдмрд╛рдж рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЖрдкрдХреЛ рдХрднреА рднреА рдЙрд╕ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА (raw-sql "рдХреБрдЫ('funky'::SYNTAX)")).
  • рдмреЗрд╣рддрд░ рд╕рдВрдкрд╛рджрдХ рд╕рдорд░реНрдерди. рдЖрдкрдХреЗ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрдХреГрд╖реНрдЯ SQL рд╕рдорд░реНрдерди рд╣реИред SQL рдХреЛ SQL рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрдХрд░, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  • рдЯреАрдо рдЕрдиреБрдХреВрд▓рддрд╛. рдЖрдкрдХреЗ DBA рдЖрдкрдХреЗ рдХреНрд▓реЛрдЬрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд SQL рдХреЛ рдкрдврд╝ рдФрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
  • рдЖрд╕рд╛рди рдкреНрд░рджрд░реНрд╢рди рдЯреНрдпреВрдирд┐рдВрдЧ. рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдкреНрд░рд╢реНрди рдХреЗ рд▓рд┐рдП рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЬрдм рдЖрдкрдХреА рдХреНрд╡реЗрд░реА рдирд┐рдпрдорд┐рдд SQL рд╣реИ рддреЛ рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
  • рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдкреБрдирдГ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛. рдЗрдиреНрд╣реАрдВ SQL рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЦреАрдВрдЪреЗрдВ рдФрд░ рдЫреЛрдбрд╝реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдЪреНрдЫреА рдкреБрд░рд╛рдиреА SQL рд╣реИ - рдмрд╕ рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдмрд╣реБрдд рд╕рд░рд▓ рднреА рд╣реИ, рдЬрд┐рд╕рдХреА рдмрджреМрд▓рдд рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдорд┐рд▓реА рд╣реИ рдЕрдиреБрдпрд╛рдпрд┐рдпреЛрдВ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ. рдФрд░ рд╣рдо рдЖрдЧреЗ рднреА ORM рд╕реЗ рдкрд░реЗ SQL рдХреЛрдб рдХреЛ рдмрд╛рдХреА рд╕рднреА рдЪреАрдЬреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рджрд░реНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред

рдЖрдИрдбреАрдИ рдФрд░ рдбреАрдмреА рдкреНрд░рдмрдВрдзрдХ

рдЖрдЗрдпреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд░реЛрдЬрдорд░реНрд░рд╛ рдХреЗ рдХрд╛рдо рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВред рдЕрдХреНрд╕рд░ рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХреБрдЫ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдЦреЛрдЬ рдХрд░рдиреА рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдХреАрдорд╛ рдореЗрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдвреВрдВрдврдирд╛ рдФрд░ рдЙрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ (рдХреМрди рд╕реЗ рдХреЙрд▓рдо, рдХреБрдВрдЬрд┐рдпрд╛рдБ, рдЗрдВрдбреЗрдХреНрд╕, рдмрд╛рдзрд╛рдПрдБ, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдФрд░ рдХрд┐рд╕реА рднреА рдЧреНрд░рд╛рдлрд┐рдХрд▓ IDE рдпрд╛ рдХрд┐рд╕реА рднреА DB рдореИрдиреЗрдЬрд░ рд╕реЗ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдареАрдХ рдЗрдиреНрд╣реАрдВ рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рддрд╛рдХрд┐ рдпрд╣ рддреЗрдЬрд╝ рд╣реЛ рдЬрд╛рдП рдФрд░ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдЦреБрд▓рдиреЗ рддрдХ рдЖрдзреЗ рдШрдВрдЯреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рди рдХрд░рдирд╛ рдкрдбрд╝реЗ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджреВрд░рд╕реНрде рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдзреАрдореЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде), рдФрд░ рд╕рд╛рде рд╣реА рддрд╛рдХрд┐ рдкреНрд░рд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рддрд╛рдЬрд╝рд╛ рдФрд░ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ, рди рдХрд┐ рдкреБрд░рд╛рдиреА рд╕рд╛рдордЧреНрд░реА рдХреИрд╢ рдХреА рдЧрдИ рд╣реЛред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрдЯрд╛рдмреЗрд╕ рдЬрд┐рддрдирд╛ рдЬрдЯрд┐рд▓ рдФрд░ рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛ рддрдерд╛ рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рд╣реЛрдЧреА, рдРрд╕рд╛ рдХрд░рдирд╛ рдЙрддрдирд╛ рд╣реА рдХрдард┐рди рд╣реЛрдЧрд╛ред

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

select table_name
     , ...
  from information_schema.tables
 where schema = 'HR'

рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ, рдРрд╕реА рд╕рдВрджрд░реНрдн рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рддреНрдпреЗрдХ DBMS рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИред рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MySQL рдХреЗ рд▓рд┐рдП, рдЗрд╕реА рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрдХ рд╕реЗ рдЖрдк рдЗрд╕ DBMS рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд╛рд▓рд┐рдХрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

select table_name
     , storage_engine -- ╨Ш╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╡╨╝╤Л╨╣ "╨┤╨▓╨╕╨╢╨╛╨║" ("MyISAM", "InnoDB" etc)
     , row_format     -- ╨д╨╛╤А╨╝╨░╤В ╤Б╤В╤А╨╛╨║╨╕ ("Fixed", "Dynamic" etc)
     , ...
  from information_schema.tables
 where schema = 'HR'

Oracle рдХреЛ information_schema рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рдкрд╛рд╕ рд╣реИ рдУрд░реЗрдХрд▓ рдореЗрдЯрд╛рдбреЗрдЯрд╛, рдФрд░ рдХреЛрдИ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ:

select table_name
     , pct_free       -- ╨Ь╨╕╨╜╨╕╨╝╤Г╨╝ ╤Б╨▓╨╛╨▒╨╛╨┤╨╜╨╛╨│╨╛ ╨╝╨╡╤Б╤В╨░ ╨▓ ╨▒╨╗╨╛╨║╨╡ ╨┤╨░╨╜╨╜╤Л╤Е (%)
     , pct_used       -- ╨Ь╨╕╨╜╨╕╨╝╤Г╨╝ ╨╕╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╡╨╝╨╛╨│╨╛ ╨╝╨╡╤Б╤В╨░ ╨▓ ╨▒╨╗╨╛╨║╨╡ ╨┤╨░╨╜╨╜╤Л╤Е (%)
     , last_analyzed  -- ╨Ф╨░╤В╨░ ╨┐╨╛╤Б╨╗╨╡╨┤╨╜╨╡╨│╨╛ ╤Б╨▒╨╛╤А╨░ ╤Б╤В╨░╤В╨╕╤Б╤В╨╕╨║╨╕
     , ...
  from all_tables
 where owner = 'HR'

рдХреНрд▓рд┐рдХрд╣рд╛рдЙрд╕ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИ:

select name
     , engine -- ╨Ш╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╡╨╝╤Л╨╣ "╨┤╨▓╨╕╨╢╨╛╨║" ("MergeTree", "Dictionary" etc)
     , ...
  from system.tables
 where database = 'HR'

рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХреИрд╕рдВрдбреНрд░рд╛ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬрд╣рд╛рдБ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдХреЙрд▓рдордлрд╝реИрдорд┐рд▓реА рдФрд░ рд╕реНрдХреАрдорд╛ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдХреАрд╕реНрдкреЗрд╕ рд╣реЛрддреЗ рд╣реИрдВ):

select columnfamily_name
     , compaction_strategy_class  -- ╨б╤В╤А╨░╤В╨╡╨│╨╕╤П ╤Б╨▒╨╛╤А╨║╨╕ ╨╝╤Г╤Б╨╛╤А╨░
     , gc_grace_seconds           -- ╨Т╤А╨╡╨╝╤П ╨╢╨╕╨╖╨╜╨╕ ╨╝╤Г╤Б╨╛╤А╨░
     , ...
  from system.schema_columnfamilies
 where keyspace_name = 'HR'

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

рдмреЗрд╢рдХ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рди рдХреЗрд╡рд▓ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдмрд▓реНрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдордп-рд╕рдордп рдкрд░, рджрдпрд╛рд▓реБ рд▓реЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╣реИрдмрд░ рд▓реЗрдЦреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ "рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди" (рдЕрдпрдм, рдмреЗрди, рдЬрд┐рдо). рдмреЗрд╢рдХ, рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЗрди рдвреЗрд░реЛрдВ рдХреЛ рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рд░рдЦрдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдЯрд╛рдЗрдк рдХрд░рдирд╛ "рдЗрддрдирд╛" рдордЬреЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╕рдВрджреАрджрд╛ рдЖрдИрдбреАрдИ/рдПрдбрд┐рдЯрд░ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдХреНрд╕рд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдирд┐рдкреЗрдЯ рдХрд╛ рдПрдХ рдкреВрд░реНрд╡-рддреИрдпрд╛рд░ рд╕реЗрдЯ рд╣реИ, рдФрд░ рдмрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдирд╛рдо рдЯрд╛рдЗрдк рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИред

рдирддреАрдЬрддрди, рдиреЗрд╡рд┐рдЧреЗрд╢рди рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рдЦреЛрдЬ рдХреА рдпрд╣ рд╡рд┐рдзрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реА рд╣реИ, рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛рддреА рд╣реИ, рдЖрдкрдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдЙрд╕ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЕрднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреЛрд╕реНрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ "рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛: IntelliJ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ IDE рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ").

рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди

рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдвреВрдВрдв рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рд╕рд╛рде рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд╡рд╣ рднреА рдХреАрдмреЛрд░реНрдб рд╕реЗ рдЕрдкрдиреА рдЙрдВрдЧрд▓рд┐рдпрд╛рдВ рдЙрдард╛рдП рдмрд┐рдирд╛ред

рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдорд╛рддреНрд░ рд╕реЗ рд╡рд╣ рд▓рдЧрднрдЧ рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдЬреИрд╕реА рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

drop table hr.persons

рд▓реЗрдХрд┐рди рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдирд╛ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рд▓рдЧрднрдЧ рдХреЛрдИ рднреА DBMS (рдХрдИ NoSQL рд╕рд╣рд┐рдд) рдХрд┐рд╕реА рди рдХрд┐рд╕реА рд░реВрдк рдореЗрдВ "рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ", рдФрд░ рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рднреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рдирд╛рдо, рд╕реНрддрдВрднреЛрдВ рдХреА рд╕реВрдЪреА, рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░), рд▓реЗрдХрд┐рди рдЕрдиреНрдп рд╡рд┐рд╡рд░рдг рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ DBMS рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рдЙрджрд╛рд╣рд░рдг рдпрд╣ рд╣реИ рдХрд┐ Oracle рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ "create table" рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ "рдирдВрдЧреЗ" BNFs рд╣реИрдВред 31 рдкреГрд╖реНрда. рдЕрдиреНрдп рдбреАрдмреАрдПрдордПрд╕ рдореЗрдВ рдЕрдзрд┐рдХ рдорд╛рдореВрд▓реА рдХреНрд╖рдорддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЕрдиреВрдареА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рднреА рд╣реЛрддреА рд╣реИрдВ (postgres, MySQL, рддрд┐рд▓рдЪрдЯреНрдЯрд╛, рдХреИрд╕реЗрдВрдбреНрд░рд╛). рдпрд╣ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп IDE (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ) рдХрд╛ рдХреЛрдИ рднреА рдЧреНрд░рд╛рдлрд┐рдХрд▓ "рд╡рд┐рдЬрд╝рд╛рд░реНрдб" рдЗрди рд╕рднреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реЛ рднреА, рддреЛ рдпрд╣ рдХрдордЬреЛрд░ рджрд┐рд▓ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рджреГрд╢реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕рд╛рде рд╣реА рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╕рд╣реА рдФрд░ рд╕рдордп рдкрд░ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдЖрдкрдХреЛ рдЙрди рд╕рднреА рдХрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рднрдВрдбрд╛рд░рдг рдФрд░ рдкрд╣реБрдВрдЪ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп, рдЗрд╖реНрдЯрддрдо рдФрд░ рдпрдерд╛рд╕рдВрднрд╡ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╣реЛ рдЬрд╛рдПрдЧреАред

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

рдЕрдм рдЪрд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рд╛ рдЪрд┐рддреНрд░ рдмрдирд╛рддреЗ рд╣реИрдВ

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

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

PlantUML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ PostgreSQL рдХреЗ рд▓рд┐рдП рдбреЗрдореЛ рдбреЗрдЯрд╛рдмреЗрд╕ (рдмрд╛рдИрдВ рдУрд░ SQL рдХреНрд╡реЗрд░реА рд╣реИ рдЬреЛ PlantUML рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрджреЗрд╢ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧреА, рдФрд░ рджрд╛рдИрдВ рдУрд░ рдкрд░рд┐рдгрд╛рдо рд╣реИ):

"рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕" рдЕрдиреБрднрд╡

select '@startuml'||chr(10)||'hide methods'||chr(10)||'hide stereotypes' union all
select distinct ccu.table_name || ' --|> ' ||
       tc.table_name as val
  from table_constraints as tc
  join key_column_usage as kcu
    on tc.constraint_name = kcu.constraint_name
  join constraint_column_usage as ccu
    on ccu.constraint_name = tc.constraint_name
 where tc.constraint_type = 'FOREIGN KEY'
   and tc.table_name ~ '.*' union all
select '@enduml'

рдФрд░ рдЕрдЧрд░ рдЖрдк рдереЛрдбрд╝реА рд╕реА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рддреЛ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ PlantUML рдХреЗ рд▓рд┐рдП ER рдЯреЗрдореНрдкрд▓реЗрдЯ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдИрдЖрд░ рдЖрд░реЗрдЦ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

SQL рдХреНрд╡реЗрд░реА рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ

-- ╨и╨░╨┐╨║╨░
select '@startuml
        !define Table(name,desc) class name as "desc" << (T,#FFAAAA) >>
        !define primary_key(x) <b>x</b>
        !define unique(x) <color:green>x</color>
        !define not_null(x) <u>x</u>
        hide methods
        hide stereotypes'
 union all
-- ╨в╨░╨▒╨╗╨╕╤Ж╤Л
select format('Table(%s, "%s n information about %s") {'||chr(10), table_name, table_name, table_name) ||
       (select string_agg(column_name || ' ' || upper(udt_name), chr(10))
          from information_schema.columns
         where table_schema = 'public'
           and table_name = t.table_name) || chr(10) || '}'
  from information_schema.tables t
 where table_schema = 'public'
 union all
-- ╨б╨▓╤П╨╖╨╕ ╨╝╨╡╨╢╨┤╤Г ╤В╨░╨▒╨╗╨╕╤Ж╨░╨╝╨╕
select distinct ccu.table_name || ' "1" --> "0..N" ' || tc.table_name || format(' : "A %s may haven many %s"', ccu.table_name, tc.table_name)
  from information_schema.table_constraints as tc
  join information_schema.key_column_usage as kcu on tc.constraint_name = kcu.constraint_name
  join information_schema.constraint_column_usage as ccu on ccu.constraint_name = tc.constraint_name
 where tc.constraint_type = 'FOREIGN KEY'
   and ccu.constraint_schema = 'public'
   and tc.table_name ~ '.*'
 union all
-- ╨Я╨╛╨┤╨▓╨░╨╗
select '@enduml'

"рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕" рдЕрдиреБрднрд╡

рдпрджрд┐ рдЖрдк рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦреЗрдВ рддреЛ рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдХрдИ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЯреВрд▓ рднреА рдЗрд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдХреНрд╡реЗрд░реАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╕рдЪ рд╣реИ, рдпреЗ рдЕрдиреБрд░реЛрдз рдЖрдорддреМрд░ рдкрд░ рдмрд╣реБрдд рдЧрд╣рд░реЗ рд╣реЛрддреЗ рд╣реИрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреЛрдб рдореЗрдВ рд╣реА "рд╣рд╛рд░реНрдбрд╡рд╛рдпрд░реНрдб" рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдХрдард┐рди рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрд╢реЛрдзрди рдХреА рдмрд╛рдд рддреЛ рджреВрд░ рдХреА рд╣реИред

рдореАрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдирд┐рдЧрд░рд╛рдиреА

рдЖрдЗрдпреЗ рдЕрдм рдкрд╛рд░рдВрдкрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╡рд┐рд╖рдп рдкрд░ рдЖрддреЗ рд╣реИрдВ - рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рджрд░реНрд╢рди рдХреА рдирд┐рдЧрд░рд╛рдиреАред рдореБрдЭреЗ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рдЪреНрдЪреА рдХрд╣рд╛рдиреА рдпрд╛рдж рд╣реИ рдЬреЛ рдореБрдЭреЗ "рдореЗрд░реЗ рдПрдХ рдорд┐рддреНрд░" рдиреЗ рд╕реБрдирд╛рдИ рдереАред рдЕрдЧрд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░, рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдбреАрдмреАрдП рд░рд╣рддрд╛ рдерд╛, рдФрд░ рдХреБрдЫ рд╣реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЙрд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЬрд╛рдирддреЗ рдереЗ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрд╕реЗ рдЖрдВрдЦреЛрдВ рдореЗрдВ рднреА рдирд╣реАрдВ рджреЗрдЦрддреЗ рдереЗ (рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐, рдЕрдлрд╡рд╛рд╣реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡рд╣ рдкрдбрд╝реЛрд╕реА рдЗрдорд╛рд░рдд рдореЗрдВ рдХрд╣реАрдВ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛)ред "X" рдШрдВрдЯреЗ рдкрд░, рдЬрдм рдПрдХ рдмрдбрд╝реЗ рд░рд┐рдЯреЗрд▓рд░ рдХреА рдЙрддреНрдкрд╛рджрди рдкреНрд░рдгрд╛рд▓реА рдПрдХ рдмрд╛рд░ рдлрд┐рд░ "рдЦрд░рд╛рдм" рд▓рдЧрдиреЗ рд▓рдЧреА, рддреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЪреБрдкрдЪрд╛рдк Oracle Enterprise Manager рд╕реЗ рдЧреНрд░рд╛рдл рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рднреЗрдЬреЗ, рдЬрд┐рди рдкрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ "рд╕реНрдкрд╖реНрдЯрддрд╛" рдХреЗ рд▓рд┐рдП рд▓рд╛рд▓ рдорд╛рд░реНрдХрд░ рдХреЗ рд╕рд╛рде рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ (рдпрд╣, рдЗрд╕реЗ рд╣рд▓реНрдХреЗ рдврдВрдЧ рд╕реЗ рдХрд╣реЗрдВ рддреЛ, рдмрд╣реБрдд рдХрдо рдорджрдж рдХрд░рддрд╛ рдерд╛)ред рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЗрд╕ тАЬрдлреЛрдЯреЛрдЧреНрд░рд╛рдлтАЭ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдореЗрдВ рдЗрд▓рд╛рдЬ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рд╕рд╛рде рд╣реА, рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдмрд╣реБрдореВрд▓реНрдп (рд╢рдмреНрдж рдХреЗ рджреЛрдиреЛрдВ рдЕрд░реНрдереЛрдВ рдореЗрдВ) рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рдореИрдиреЗрдЬрд░ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рдереА, рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЬрдЯрд┐рд▓ рдФрд░ рдорд╣рдВрдЧрд╛ рд╣реИ, рдЕрдЪрд╛рдирдХ "рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд┐рд╕реА рдЪреАрдЬ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдПрдВрдЧреЗ рдФрд░ рд╕рдм рдХреБрдЫ рддреЛрдбрд╝ рджреЗрдВрдЧреЗред" рдЗрд╕рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ "рдЕрдиреБрднрд╡рдЬрдиреНрдп рд░реВрдк рд╕реЗ" рдордВрджреА рдХрд╛ рд╕реНрдерд╛рди рдФрд░ рдХрд╛рд░рдг рдвреВрдВрдв рд▓рд┐рдпрд╛ рдФрд░ рдПрдХ рдкреИрдЪ рдЬрд╛рд░реА рдХрд┐рдпрд╛ред рдпрджрд┐ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдбреАрдмреАрдП рд╕реЗ рдзрдордХреА рднрд░рд╛ рдкрддреНрд░ рджреЛрдмрд╛рд░рд╛ рдирд╣реАрдВ рдЖрдпрд╛ рддреЛ рд╕рднреА рдиреЗ рд░рд╛рд╣рдд рдХреА рд╕рд╛рдВрд╕ рд▓реА рдФрд░ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд▓реМрдЯ рдЧрдП (рдЕрдЧрд▓реЗ рдкрддреНрд░ рддрдХ)ред

рд▓реЗрдХрд┐рди рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдзрд┐рдХ рдордЬрд╝реЗрджрд╛рд░ рдФрд░ рдореИрддреНрд░реАрдкреВрд░реНрдг рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рдФрд░ рдкрд╛рд░рджрд░реНрд╢реА рд╣реЛ рд╕рдХрддреА рд╣реИред рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХрд╛ рдореВрд▓ рднрд╛рдЧ, рдореБрдЦреНрдп рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд (рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ рдФрд░ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдкреВрд░рдгреАрдп рд╣реИ)ред рдХреЛрдИ рднреА рдбреАрдмреАрдПрдордПрд╕ рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдФрд░ рдкреВрд░реНрдгрддрдпрд╛ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рдЙрд╕реА "рдЦреВрдиреА" Oracle DB рдореЗрдВ, рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рдЬрд╛рдирдХрд╛рд░реА рд╕рд┐рд╕реНрдЯрдо рджреГрд╢реНрдпреЛрдВ рд╕реЗ, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рд╕рддреНрд░реЛрдВ рд╕реЗ рд▓реЗрдХрд░ рдмрдлрд░ рдХреИрд╢ рдХреА рд╕реНрдерд┐рддрд┐ рддрдХ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреАрдмреАрдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЕрдиреБрднрд╛рдЧ "рдирд┐рдЧрд░рд╛рдиреА"). Postgresql рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕рдореВрд╣ рднреА рд╣реИ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдирд┐рдЧрд░рд╛рдиреА, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реЗ рдЬреЛ рдХрд┐рд╕реА рднреА рдбреАрдмреАрдП рдХреЗ рджреИрдирд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИрдВ, рдЬреИрд╕реЗ pg_stat_activity, pg_stat_рдбреЗрдЯрд╛рдмреЗрд╕, pg_stat_bgwriter. MySQL рдореЗрдВ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реНрдХреАрдорд╛ рднреА рд╣реИред Performance_schema. рдФрд░ рдореЛрдВрдЧреЛ рдореЗрдВ рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдкреНрд░рджрд░реНрд╢рди рдбреЗрдЯрд╛ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рд╕рд┐рд╕реНрдЯрдо.рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓.

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХрд▓реЗрдХреНрдЯрд░ (рдЯреЗрд▓реАрдЧреНрд░рд╛рдл, рдореЗрдЯреНрд░рд┐рдХрдмреАрдЯ, рдХрд▓реЗрдХреНрдЯрдбреА) рд╕реЗ рд▓реИрд╕ рд╣реЛрдХрд░, рдЬреЛ рдХрд╕реНрдЯрдо SQL рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрди рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдПрдХ рд╕реНрдЯреЛрд░реЗрдЬ (рдЗрдиреНрдлреНрд▓рдХреНрд╕рдбреАрдмреА, рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕рд░реНрдЪ, рдЯрд╛рдЗрдорд╕реНрдХреЗрд▓рдбреАрдмреА) рдФрд░ рдПрдХ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ (рдЧреНрд░рд╛рдлрд╝рд╛рдирд╛, рдХрд┐рдмрд╛рдирд╛), рдЖрдк рдПрдХ рдХрд╛рдлреА рд╣рд▓реНрдХрд╛ рдФрд░ рд▓рдЪреАрд▓рд╛ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рд╕рд┐рд╕реНрдЯрдо-рд╡рд╛рдЗрдб рдореЗрдЯреНрд░рд┐рдХреНрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рд╕реЗ, рдУрдПрд╕ рд╕реЗ, рдЖрджрд┐ рд╕реЗ рдкреНрд░рд╛рдкреНрдд) рдХреЗ рд╕рд╛рде рдХрд╕рдХрд░ рдПрдХреАрдХреГрдд рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ pgwatch2 рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ InfluxDB + Grafana рдХрд╛ рд╕рдВрдпреЛрдЬрди рдФрд░ рд╕рд┐рд╕реНрдЯрдо рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реАрдЬрд╝ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХреНрд╕реЗрд╕ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд╕реНрдЯрдо рдХреНрд╡реЗрд░реАрдЬрд╝ рдЬреЛрдбрд╝реЗрдВ.

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░

рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреБрдорд╛рдирд┐рдд рд╕реВрдЪреА рд╣реИ рдХрд┐ рдирд┐рдпрдорд┐рдд SQL рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдФрд░ рднреА рдХрдИ рдЙрдкрдпреЛрдЧ рд╣реИрдВ, рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред рдФрд░ рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ (рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ) рдпрд╣ рд╕рдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░ рдЗрд╕реЗ рдЕрдкрдиреА CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред

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

DDoS рд╕реБрд░рдХреНрд╖рд╛, VPS VDS рд╕рд░реНрд╡рд░ рд╡рд╛рд▓реА рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЦрд░реАрджреЗрдВ ЁЯФе рдбреАрдбреАрдУрдПрд╕ рд╕реБрд░рдХреНрд╖рд╛, рд╡реАрдкреАрдПрд╕ рдФрд░ рд╡реАрдбреАрдПрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЦрд░реАрджреЗрдВ | ProHoster