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

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

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

рд░ рдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реМрдВ ORMред "SQL рдмрдирд╛рдо ORM" рдкреНрд░рдХрд╛рд░рдХреЛ рдкрд╣рд┐рд▓реЛ рд▓рдбрд╛рдЗрд╣рд░реВ рдлрд┐рд░реНрддрд╛ рджреЗрдЦрд┐рдП рдкреНрд░рд┐-рдкреЗрдЯреНрд░рд┐рди рд░рд╕'.

рд╡рд╕реНрддреБ-рд╕рдореНрдмрдиреНрдзрд┐рдд рдореНрдпрд╛рдкрд┐рдЩ

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

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

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

рддреНрдпрд╕реЛрднрдП рдореИрд▓реЗ рдХреЗ рдЧрд░реНрдиреБрдкрд░реНрдЫ? рдирд┐рдпрдорд┐рдд 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 рдорд╛рдирдХрд╕рдБрдЧ резрежреж% рдЕрдиреБрд░реВрдк рдЫреИрди - рддрд░ рдпрд╕рд▓реЗ Yesql рдХреЛ рд▓рд╛рдЧрд┐ рдлрд░рдХ рдкрд░реНрджреИрдиред рддрдкрд╛рдИрд▓реЗ SQL рд╕рдорддреБрд▓реНрдп рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рдХреЛ рд╕рд╛рде рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╢рд┐рдХрд╛рд░ рдЧрд░реНрди рд╕рдордп рдмрд░реНрдмрд╛рдж рдЧрд░реНрдиреБрд╣реБрдиреЗ рдЫреИрдиред рддрдкрд╛рдИрдВрд▓реЗ рдХрд╣рд┐рд▓реНрдпреИ рд╕рдорд╛рд░реЛрд╣рдорд╛ рдлрд░реНрдХрд┐рдиреБ рдкрд░реНрджреИрди (raw-sql "some('funky'::SYNTAX)")).
  • рдЙрддреНрддрдо рд╕рдореНрдкрд╛рджрдХ рд╕рдорд░реНрдердиред рддрдкрд╛рдИрдВрдХреЛ рд╕рдореНрдкрд╛рджрдХрд╕рдБрдЧ рдкрд╣рд┐рд▓реЗ рдиреИ рдЙрддреНрдХреГрд╖реНрдЯ SQL рд╕рдорд░реНрдерди рдЫред SQL рдХреЛ рд░реВрдкрдорд╛ SQL рдмрдЪрдд рдЧрд░реЗрд░ рддрдкрд╛рдИрдВ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
  • рдЯреЛрд▓реА рдЕрдиреБрдХреВрд▓рддрд╛ред рддрдкрд╛рдИрдВрдХрд╛ DBA рд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ Clojure рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрднрдПрдХреЛ SQL рдкрдвреНрди рд░ рд▓реЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
  • рд╕рдЬрд┐рд▓реЛ рдкреНрд░рджрд░реНрд╢рди рдЯреНрдпреБрдирд┐рдВрдЧред рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдкреНрд░рд╢реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдпреЛрдЬрдирд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ? рддрдкрд╛рдИрдХреЛ рдХреНрд╡реЗрд░реА рдирд┐рдпрдорд┐рдд SQL рд╣реБрдБрджрд╛ рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЗрдиред
  • рдкреНрд░рд╢реНрдирд╣рд░реВ рдкреБрди: рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИред рддреА рд╕рдорд╛рди SQL рдлрд╛рдЗрд▓рд╣рд░реВрд▓рд╛рдИ рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛ рддрд╛рдиреНрдиреБрд╣реЛрд╕реН рд░ рдЫреЛрдбреНрдиреБрд╣реЛрд╕реН рдХрд┐рдирднрдиреЗ рдпреЛ рдХреЗрд╡рд▓ рд╕рд╛рджрд╛ рдкреБрд░рд╛рдиреЛ SQL рд╣реЛ - рдпрд╕рд▓рд╛рдИ рд╕рд╛рдЭреЗрджрд╛рд░реА рдЧрд░реНрдиреБрд╣реЛрд╕реНред

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

IDE рд░ DB рдкреНрд░рдмрдиреНрдзрдХрд╣рд░реВ

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

рддрд░ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдо рдорд╛рдЙрд╕ рдЯрд╛рдврд╛ рдлрд╛рд▓реНрдЫреБ рд░ рдХреЛрдб рд▓реЗрдЦреНрдЫреБред рдорд╛рдиреМрдВ рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ "HR" рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдХреБрди рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ (рд░ рдХреБрди рдЧреБрдгрд╣рд░реВ) рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдзреЗрд░реИ рдЬрд╕реЛ DBMSs рдорд╛, рдЬрд╛рдирдХрд╛рд░реА_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'

ClickHouse рдХреБрдиреИ рдЕрдкрд╡рд╛рдж рдЫреИрди:

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'

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

рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдпрд╕ рддрд░рд┐рдХрд╛рд▓реЗ рддрдкрд╛рдИрд▓реЗ рдЯреЗрдмрд▓рдХреЛ рдмрд╛рд░реЗрдорд╛ рдорд╛рддреНрд░ рд╣реЛрдЗрди, рддрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛ рдХреБрдиреИ рдкрдирд┐ рд╡рд╕реНрддреБрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╕рдордп-рд╕рдордпрдорд╛, рджрдпрд╛рд▓реБ рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рддреНрдпрд╕реНрддрд╛ рдХреЛрдбрд╣рд░реВ рд╕рд╛рдЭреЗрджрд╛рд░реА рдЧрд░реНрдЫрдиреН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, habra рд▓реЗрдЦрд╣рд░реВрдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛рдорд╛ "PostgreSQL рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВ рдХрд╛рдЧрдЬрд╛рдд рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрд╣рд░реВ" (рдЖрдЗрдм, рдмреЗрди, рдЬрд┐рдо)ред рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдпреЛ рд╕рдореНрдкреВрд░реНрдг рдкрд╣рд╛рдб рдореЗрд░реЛ рдЯрд╛рдЙрдХреЛрдорд╛ рд░рд╛рдЦреНрдиреБ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд▓рдЧрд╛рддрд╛рд░ рдЯрд╛рдЗрдк рдЧрд░реНрдиреБ рдПрдХ рдЦреБрд╢реАрдХреЛ рдХреБрд░рд╛ рд╣реЛ, рддреНрдпрд╕реИрд▓реЗ рдореЗрд░реЛ рдордирдкрд░реНрдиреЗ IDE/рд╕рдореНрдкрд╛рджрдХрдорд╛ рдорд╕рдБрдЧ рдкреНрд░рд╛рдп: рдкреНрд░рдпреЛрдЧ рд╣реБрдиреЗ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдирд┐рдкреЗрдЯрд╣рд░реВрдХреЛ рдкреВрд░реНрд╡-рддрдпрд╛рд░ рд╕реЗрдЯ рдЫ, рд░ рдмрд╛рдБрдХреА рд╕рдмреИ рдЯрд╛рдЗрдк рдЧрд░реНрди рд╣реЛред рдЯреЗрдореНрдкреНрд▓реЗрдЯрдорд╛ рд╡рд╕реНрддреБ рдирд╛рдорд╣рд░реВред

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

рд╡рд╕реНрддреБрд╣рд░реБ рд╕рдВрдЧ рд╕рдЮреНрдЪрд╛рд▓рди

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

рдпреЛ рдХреБрдиреИ рдЧреЛрдкреНрдп рдХреБрд░рд╛ рдЫреИрди рдХрд┐ рдХреЗрд╡рд▓ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдЯрд╛рдЙрдБрджрд╛ рд▓рдЧрднрдЧ рд╕рдмреИ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд╕рдорд╛рди рджреЗрдЦрд┐рдиреНрдЫ:

drop table hr.persons

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

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

рдЕрдм рдереЛрд░реИ рдХреЛрд░реНрди рдЧрд░реМрдВ

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

рддрд░ рдпреЛ рд╕рдорд╕реНрдпрд╛ рдзреЗрд░реИ рд╕рд░рд▓, рдердк рд▓рдЪрд┐рд▓реЛ рд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг, рд░ рдкрдХреНрдХреИ рдкрдирд┐ рдХреЛрдб рдХреЛ рдорджреНрджрддрд▓реЗ рд╣рд▓ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдХреБрдиреИ рдкрдирд┐ рдЬрдЯрд┐рд▓рддрд╛рдХреЛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди, рд╣рд╛рдореАрд╕рдБрдЧ рдзреЗрд░реИ рд╡рд┐рд╢реЗрд╖ рдорд╛рд░реНрдХрдЕрдк рднрд╛рд╖рд╛рд╣рд░реВ (DOT, GraphML рдЖрджрд┐) рдЫрдиреН, рд░ рддрд┐рдиреАрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рд╕рдореНрдкреВрд░реНрдг рдмрд┐рдЦрд░реНрдиреЗ (GraphViz, PlantUML, Mermaid) рдЬрд╕рд▓реЗ рддреНрдпрд╕реНрддрд╛ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкрдвреНрди рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡рд┐рднрд┐рдиреНрди рдврд╛рдБрдЪрд╛рд╣рд░реВрдорд╛ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫред ред рдард┐рдХ рдЫ, рд╣рд╛рдореАрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рдХрд╕рд░реА рд╡рд╕реНрддреБрд╣рд░реВ рд░ рддрд┐рдиреАрд╣рд░реВ рдмреАрдЪрдХреЛ рдЬрдбрд╛рдирд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗред

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 рдЯреЗрдореНрдкреНрд▓реЗрдЯ рддрдкрд╛рдИрд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ 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'

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

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

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

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

рддрд░ рдЕрдиреБрдЧрдорди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдзреЗрд░реИ рд░рдорд╛рдЗрд▓реЛ рд░ рдореИрддреНрд░реАрдкреВрд░реНрдг рджреЗрдЦрд┐рди рд╕рдХреНрдЫ, рд░ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг, рд╕рдмреИрдХрд╛ рд▓рд╛рдЧрд┐ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рд░ рдкрд╛рд░рджрд░реНрд╢реАред рдХрдореНрддрд┐рдорд╛ рдпрд╕рдХреЛ рдЖрдзрд╛рд░рднреВрдд рднрд╛рдЧ, рдореБрдЦреНрдп рдЕрдиреБрдЧрдорди рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рдердкрдХреЛ рд░реВрдкрдорд╛ (рдЬреБрди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ рдЙрдкрдпреЛрдЧреА рдЫрдиреН рд░ рдзреЗрд░реИ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЫрдиреН)ред рдХреБрдиреИ рдкрдирд┐ DBMS рдпрд╕рдХреЛ рд╣рд╛рд▓рдХреЛ рдЕрд╡рд╕реНрдерд╛ рд░ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╛рдЭрд╛ рдЧрд░реНрди рд╕реНрд╡рддрдиреНрддреНрд░ рд░реВрдкрдорд╛ рд░ рдмрд┐рд▓реНрдХреБрд▓ рдирд┐: рд╢реБрд▓реНрдХ рдЫред рдЙрд╣реА "рд░рдХреНрддрд░реВрдкреА" рдУрд░реЗрдХрд▓ DB рдорд╛, рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирдХреЛ рдмрд╛рд░реЗрдорд╛ рд▓рдЧрднрдЧ рдХреБрдиреИ рдкрдирд┐ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рдгрд╛рд▓реА рджреГрд╢реНрдпрд╣рд░реВрдмрд╛рдЯ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд░ рд╕рддреНрд░рд╣рд░реВрджреЗрдЦрд┐ рдмрдлрд░ рдХреНрдпрд╛рд╕рдХреЛ рдЕрд╡рд╕реНрдерд╛рд╕рдореНрдо (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, DBA рд▓рд┐рдкрд┐рд╣рд░реВ, рдЦрдгреНрдб "рдирд┐рдЧрд░рд╛рдиреА")ред Postgresql рд╕рдБрдЧ рдкрдирд┐ рдкреНрд░рдгрд╛рд▓реА рджреГрд╢реНрдпрд╣рд░реВрдХреЛ рд╕рдореНрдкреВрд░реНрдг рдЧреБрдЪреНрдЫрд╛ рдЫ рдбрд╛рдЯрд╛рдмреЗрд╕ рдирд┐рдЧрд░рд╛рдиреА, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдЬреБрди рдХреБрдиреИ рдкрдирд┐ DBA рдХреЛ рджреИрдирд┐рдХ рдЬреАрд╡рдирдорд╛ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рдЫ, рдЬрд╕реНрддреИ pg_stat_activity, pg_stat_database, pg_stat_bgwriterред MySQL рд╕рдБрдЧ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЫреБрдЯреНрдЯреИ рд╕реНрдХреАрдорд╛ рдкрдирд┐ рдЫред рдкреНрд░рджрд░реНрд╢рди_рд╕реНрдХреАрдорд╛ред A In Mongo рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдкреНрд░рдгрд╛рд▓реА рд╕рдЩреНрдХрд▓рдирдорд╛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдбреЗрдЯрд╛ рдЬрдореНрдорд╛ рдЧрд░реНрдЫ system.profile.

рдпрд╕рд░реА, рдХрд╕реНрдЯрдо sql рдХреНрд╡реЗрд░реАрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рд╕рдХреНрдиреЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХрд▓реЗрдХреНрдЯрд░ (Telegraf, Metricbeat, Collectd) рдХреЛ рдХреЗрд╣реА рдкреНрд░рдХрд╛рд░рд▓реЗ рд╕рд╢рд╕реНрддреНрд░, рдпреА рдореЗрдЯреНрд░рд┐рдХреНрд╕рдХреЛ рднрдгреНрдбрд╛рд░рдг (InfluxDB, Elasticsearch, Timescaledb) рд░ рдПрдХ рднрд┐рдЬреБрдЕрд▓рд╛рдЗрдЬрд░ (Grafana, Kibana), рддрдкрд╛рдИрдВ рдПрдХрджрдо рд╕рдЬрд┐рд▓реЛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд░ рдПрдХ рд▓рдЪрд┐рд▓реЛ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рдЬреБрди рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓реА-рд╡реНрдпрд╛рдкреА рдореЗрдЯреНрд░рд┐рдХреНрд╕ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд░реНрднрд░рдмрд╛рдЯ, OS рдмрд╛рдЯ, рдЗрддреНрдпрд╛рджрд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░рд┐рдПрдХреЛ) рд╕рдБрдЧ рдирдЬрд┐рдХрдмрд╛рдЯ рдПрдХреАрдХреГрдд рд╣реБрдиреЗрдЫред рдЬрд╕реНрддреИ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпреЛ pgwatch2 рдорд╛ рдЧрд░рд┐рдиреНрдЫ, рдЬрд╕рд▓реЗ InfluxDB + Grafana рд╕рдВрдпреЛрдЬрди рд░ рдкреНрд░рдгрд╛рд▓реА рджреГрд╢реНрдпрд╣рд░реВрдорд╛ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рд╕реЗрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рдЬреБрди рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЕрдиреБрдХреВрд▓рди рдкреНрд░рд╢реНрдирд╣рд░реВ рдердкреНрдиреБрд╣реЛрд╕реН.

рдХреБрд▓

рд░ рдпреЛ рдирд┐рдпрдорд┐рдд SQL рдХреЛрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣рд╛рдореНрд░реЛ рдбрд╛рдЯрд╛рдмреЗрд╕рд╕рдБрдЧ рдХреЗ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рднрдиреНрдиреЗ рдЕрдиреБрдорд╛рдирд┐рдд рд╕реВрдЪреА рдорд╛рддреНрд░ рд╣реЛред рдо рдкрдХреНрдХрд╛ рдЫреБ рдХрд┐ рддрдкрд╛рдИрд▓реЗ рдзреЗрд░реИ рдкреНрд░рдпреЛрдЧрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВрдорд╛ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред рд░ рд╣рд╛рдореА рдХрд╕рд░реА (рд░ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХреБрд░рд╛ рдХрд┐рди) рдпреА рд╕рдмреИрд▓рд╛рдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрдиреЗ рд░ рдЕрд░реНрдХреЛ рдкрдЯрдХ рддрдкрд╛рдИрдВрдХреЛ CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреМрдВред

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

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