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

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

рдПрд╕рдХреНрдпреВрдПрд▓, рдЗрд╕рд╕реЗ рд╕рд░рд▓ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рд╣рдо рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрдиреБрд░реЛрдз рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ - рд╣рдо рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ рдЪрдпрди, рдлрд┐рд░ рдЖрд╡рд╢реНрдпрдХ рдХреЙрд▓рдо рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ рд╕реЗ, рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдирд╛рдо, рдХреБрдЫ рд╢рд░реНрддреЗрдВ рдЬрд╣рд╛рдВ рдФрд░ рдмрд╕ рдЗрддрдирд╛ рд╣реА - рдЙрдкрдпреЛрдЧреА рдбреЗрдЯрд╛ рд╣рдорд╛рд░реА рдЬреЗрдм рдореЗрдВ рд╣реИ, рдФрд░ (рд▓рдЧрднрдЧ) рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐ рдЙрд╕ рд╕рдордп (рдпрд╛ рд╢рд╛рдпрдж) рдХреМрди рд╕рд╛ рдбреАрдмреАрдПрдордПрд╕ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рд╣реИ рдмрд┐рд▓реНрдХреБрд▓ рднреА 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;
    }
  ...

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

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

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

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

рддреЛ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдЖрдЗрдП 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 рдЕрдкрдиреЗ рдЖрдк рд╕реЗ, рдХреНрд▓реЛрдЬрд░ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ" рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ, рдЖрдкрдХреЛ рдорд┐рд▓рддрд╛ рд╣реИ:

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

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

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

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

рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдореИрдВ рдорд╛рдЙрд╕ рдХреЛ рдлреЗрдВрдХ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рдмрд╕ рдХреЛрдб рд▓рд┐рдЦ рджреЗрддрд╛ рд╣реВрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ рдХрд┐ "рдПрдЪрдЖрд░" рд╕реНрдХреАрдорд╛ рдореЗрдВ рдХреМрди рд╕реА рддрд╛рд▓рд┐рдХрд╛рдПрдВ (рдФрд░ рдХрд┐рди рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреАрдмреАрдПрдордПрд╕ рдореЗрдВ, рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо info_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'

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

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

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

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

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

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

drop table hr.persons

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

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

рдЕрдм рдЖрдЗрдП рдереЛрдбрд╝рд╛ рдЪрд┐рддреНрд░ рдмрдирд╛рдПрдВ

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

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

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

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

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'

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

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'

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

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

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

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

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

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

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

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ