"เช•เซ‹เชก เชคเชฐเซ€เช•เซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช" เช…เชจเซเชญเชต

"เช•เซ‹เชก เชคเชฐเซ€เช•เซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช" เช…เชจเซเชญเชต

SQL, เชถเซเช‚ เชธเชฐเชณ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡? เช†เชชเชฃเชพเชฎเชพเช‚เชจเชพ เชฆเชฐเซ‡เช• เชเช• เชธเชฐเชณ เชตเชฟเชจเช‚เชคเซ€ เชฒเช–เซ€ เชถเช•เซ‡ เช›เซ‡ - เช…เชฎเซ‡ เชŸเชพเช‡เชช เช•เชฐเซ€เช เช›เซ€เช เชชเชธเช‚เชฆ, เชชเช›เซ€ เชœเชฐเซ‚เชฐเซ€ เช•เซ‰เชฒเชฎเซเชธเชจเซ€ เชธเซ‚เชšเชฟ เชฌเชจเชพเชตเซ‹ เชฅเซ€, เช•เซ‹เชทเซเชŸเช•เชจเซเช‚ เชจเชพเชฎ, เชฎเชพเช‚ เช•เซ‡เชŸเชฒเซ€เช• เชถเชฐเชคเซ‹ เชœเซเชฏเชพเช‚ เช…เชจเซ‡ เชคเซ‡ เชฌเชงเซ เชœ เช›เซ‡ - เช‰เชชเชฏเซ‹เช—เซ€ เชกเซ‡เชŸเชพ เช…เชฎเชพเชฐเชพ เช–เชฟเชธเซเชธเชพเชฎเชพเช‚ เช›เซ‡, เช…เชจเซ‡ (เชฒเช—เชญเช—) เชคเซ‡ เชธเชฎเชฏเซ‡ DBMS เชนเซ‚เชก เชนเซ‡เช เชณ เช›เซ‡ เชคเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ€เชงเชพ เชตเชฟเชจเชพ (เช…เชฅเชตเชพ เช•เชฆเชพเชš เชฌเชฟเชฒเช•เซเชฒ DBMS เชจเชฅเซ€). เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชฒเช—เชญเช— เช•เซ‹เชˆเชชเชฃ เชกเซ‡เชŸเชพ เชธเซเชคเซเชฐเซ‹เชค เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ (เชธเช‚เชฌเช‚เชงเชฟเชค เช…เชจเซ‡ เชเชตเซเช‚ เชจเชฅเซ€) เช เชธเชพเชฎเชพเชจเซเชฏ เช•เซ‹เชกเชจเชพ เชฆเซƒเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆ เชถเช•เชพเชฏ เช›เซ‡ (เชคเซ‡ เชฌเชงเชพ เชธเชพเชฅเซ‡ - เชธเช‚เชธเซเช•เชฐเชฃ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ, เช•เซ‹เชก เชธเชฎเซ€เช•เซเชทเชพ, เชธเซเชฅเชฟเชฐ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ, เช‘เชŸเซ‹เชŸเซ‡เชธเซเชŸเซเชธ, เช…เชจเซ‡ เชคเซ‡ เชฌเชงเซ เชœ). เช…เชจเซ‡ เช† เชฎเชพเชคเซเชฐ เชกเซ‡เชŸเชพ, เชธเซเช•เซ€เชฎเชพ เช…เชจเซ‡ เชธเซเชฅเชณเชพเช‚เชคเชฐ เชชเชฐ เชœ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเชพ เชธเชฎเช—เซเชฐ เชœเซ€เชตเชจเชจเซ‡ เชฒเชพเช—เซ เชชเชกเซ‡ เช›เซ‡. เช† เชฒเซ‡เช–เชฎเชพเช‚ เช†เชชเชฃเซ‡ เชฐเซ‹เชœเชฟเช‚เชฆเชพ เช•เชพเชฐเซเชฏเซ‹ เช…เชจเซ‡ "เชกเซ‡เชŸเชพเชฌเซ‡เช เชเช เช•เซ‹เชก" เชจเชพ เชฒเซ‡เชจเซเชธ เชนเซ‡เช เชณ เชตเชฟเชตเชฟเชง เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เชธเชฎเชธเซเชฏเชพเช“ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚.

เช…เชจเซ‡ เชšเชพเชฒเซ‹ เช…เชนเซ€เช‚เชฅเซ€ เชœ เชถเชฐเซ‚เช†เชค เช•เชฐเซ€เช เช“เช†เชฐเชเชฎ. "SQL vs 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. เชนเซเช‚ เชฎเชพเชฐเชพ เชฎเชซเชค เช…เชจเซเชตเชพเชฆเชฎเชพเช‚ เชธเชพเชฎเชพเชจเซเชฏ เช–เซเชฏเชพเชฒเชฎเชพเช‚เชฅเซ€ เชฌเซ‡ เชฒเซ€เชŸเซ€เช“ เช†เชชเซ€เชถ, เช…เชจเซ‡ เชคเชฎเซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชตเชงเซ เชตเชฟเช—เชคเชตเชพเชฐ เชชเชฐเชฟเชšเชฟเชค เชฅเชˆ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚.

DSL เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ Clojure เช เชเช• เชธเชฐเชธ เชญเชพเชทเชพ เช›เซ‡, เชชเชฐเช‚เชคเซ SQL เชชเซ‹เชคเซ‡ เชเช• เชธเชฐเชธ DSL เช›เซ‡, เช…เชจเซ‡ เช…เชฎเชจเซ‡ เชฌเซ€เชœเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เชเชธ-เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเช“ เชฎเชนเชพเชจ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เช“ เช…เชนเซ€เช‚ เช•เช‚เชˆเชชเชฃ เชจเชตเซเช‚ เช‰เชฎเซ‡เชฐเชคเชพ เชจเชฅเซ€. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช…เชฎเซ‡ เช•เซŒเช‚เชธเชจเซ€ เช–เชพเชคเชฐ เช•เซŒเช‚เชธ เชฎเซ‡เชณเชตเซ€เช เช›เซ€เช. เชธเช‚เชฎเชค เชจเชฅเซ€? เชชเช›เซ€ เชคเซ‡ เช•เซเชทเชฃเชจเซ€ เชฐเชพเชน เชœเซเช“ เชœเซเชฏเชพเชฐเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชชเชฐเชจเซเช‚ เชเชฌเซเชธเซเชŸเซเชฐเซ‡เช•เซเชถเชจ เชฒเซ€เช• เชฅเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เชฅเชพเชฏ เช…เชจเซ‡ เชคเชฎเซ‡ เชซเช‚เช•เซเชถเชจ เชธเชพเชฅเซ‡ เชฒเชกเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‹. (ra-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 เชธเซเชŸเชพเชจเซเชกเชฐเซเชก เชธเชพเชฅเซ‡ 100% เชธเซเชธเช‚เช—เชค เชจเชฅเซ€ - เชชเชฐเช‚เชคเซ เช† Yesql เชฎเชพเชŸเซ‡ เชตเชพเช‚เชงเซ‹ เชจเชฅเซ€. เชคเชฎเซ‡ SQL เชธเชฎเช•เช•เซเชท เชตเชพเช•เซเชฏเชฐเชšเชจเชพ เชธเชพเชฅเซ‡ เช•เชพเชฐเซเชฏเซ‹ เชฎเชพเชŸเซ‡ เชถเชฟเช•เชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเชฎเชฏ เชฌเช—เชพเชกเซ‹ เชจเชนเซ€เช‚. เชคเชฎเชพเชฐเซ‡ เช•เซเชฏเชพเชฐเซ‡เชฏ เชซเช‚เช•เซเชถเชจ เชชเชฐ เชชเชพเช›เชพ เชซเชฐเชตเซเช‚ เชชเชกเชถเซ‡ เชจเชนเซ€เช‚ (raw-sql "some('funky'::SYNTAX)")).
  • เชถเซเชฐเซ‡เชทเซเช  เชธเช‚เชชเชพเชฆเช• เชธเชชเซ‹เชฐเซเชŸ. เชคเชฎเชพเชฐเชพ เชธเช‚เชชเชพเชฆเช•เชฎเชพเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช‰เชคเซเชคเชฎ SQL เชธเชชเซ‹เชฐเซเชŸ เช›เซ‡. เชเชธเช•เซเชฏเซเชเชฒเชจเซ‡ เชเชธเช•เซเชฏเซเชเชฒ เชคเชฐเซ€เช•เซ‡ เชธเชพเชšเชตเซ€เชจเซ‡ เชคเชฎเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.
  • เชŸเซ€เชฎ เชธเซเชธเช‚เช—เชคเชคเชพ. เชคเชฎเชพเชฐเชพ DBAs เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ Clojure เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช›เซ‹ เชคเซ‡ SQL เชตเชพเช‚เชšเซ€ เช…เชจเซ‡ เชฒเช–เซ€ เชถเช•เซ‡ เช›เซ‡.
  • เชธเชฐเชณ เชชเซเชฐเชฆเชฐเซเชถเชจ เชŸเซเชฏเซเชจเชฟเช‚เช—. เชธเชฎเชธเซเชฏเชพเชฐเซ‚เชช เช•เซเชตเซ‡เชฐเซ€ เชฎเชพเชŸเซ‡ เชฏเซ‹เชœเชจเชพ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡? เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเชพเชฐเซ€ เช•เซเชตเซ‡เชฐเซ€ เชจเชฟเชฏเชฎเชฟเชค SQL เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เช† เช•เซ‹เชˆ เชธเชฎเชธเซเชฏเชพ เชจเชฅเซ€.
  • เช•เซเชตเซ‡เชฐเซ€เชจเซ‹ เชซเชฐเซ€เชฅเซ€ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช. เชคเซ‡ เชœ SQL เชซเชพเช‡เชฒเซ‹เชจเซ‡ เช…เชจเซเชฏ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธเชฎเชพเช‚ เช–เซ‡เช‚เชšเซ‹ เช…เชจเซ‡ เช›เซ‹เชกเซ‹ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชฎเชพเชคเซเชฐ เชธเชพเชฆเชพ เชœเซ‚เชจเชพ SQL เช›เซ‡ - เชซเช•เซเชค เชคเซ‡เชจเซ‡ เชถเซ‡เชฐ เช•เชฐเซ‹.

เชฎเชพเชฐเชพ เชฎเชคเซ‡, เช† เชตเชฟเชšเชพเชฐ เช–เซ‚เชฌ เชœ เชธเชฐเชธ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชœ เชธเชฎเชฏเซ‡ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เช›เซ‡, เชœเซ‡เชจเชพ เช•เชพเชฐเชฃเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‡ เช˜เชฃเชพ เชฒเชพเชญ เชฎเชณเซเชฏเชพ เช›เซ‡ เช…เชจเซเชฏเชพเชฏเซ€เช“ เชตเชฟเชตเชฟเชง เชญเชพเชทเชพเช“เชฎเชพเช‚. เช…เชจเซ‡ เช…เชฎเซ‡ เช†เช—เชณ เช“เช†เชฐเชเชฎเชฅเซ€ เช†เช—เชณเชจเซ€ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซเชฅเซ€ SQL เช•เซ‹เชกเชจเซ‡ เช…เชฒเช— เช•เชฐเชตเชพเชจเซ€ เชธเชฎเชพเชจ เชซเชฟเชฒเชธเซ‚เชซเซ€ เชฒเชพเช—เซ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เชถเซเช‚.

IDE เช…เชจเซ‡ DB เชฎเซ‡เชจเซ‡เชœเชฐ

เชšเชพเชฒเซ‹ เชเช• เชธเชฐเชณ เชฐเซ‹เชœเชฟเช‚เชฆเชพ เช•เชพเชฐเซเชฏเชฅเซ€ เชถเชฐเซ‚เช†เชค เช•เชฐเซ€เช. เช˜เชฃเซ€ เชตเชพเชฐ เช†เชชเชฃเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เช…เชฎเซเช• เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ เชถเซ‹เชงเชตเชพเชจเชพ เชนเซ‹เชฏ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเซเช•เซ€เชฎเชพเชฎเชพเช‚ เชŸเซ‡เชฌเชฒ เชถเซ‹เชงเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชฐเชšเชจเชพเชจเซ‹ เช…เชญเซเชฏเชพเชธ เช•เชฐเซ‹ (เช•เชฏเชพ เช•เซ‰เชฒเชฎ, เช•เซ€, เช‡เชจเซเชกเซ‡เช•เซเชธ, เช…เชตเชฐเซ‹เชงเซ‹ เชตเช—เซ‡เชฐเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡). เช…เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เช—เซเชฐเชพเชซเชฟเช•เชฒ IDE เช…เชฅเชตเชพ เชฅเซ‹เชกเชพ DB-เชฎเซ‡เชจเซ‡เชœเชฐ เชชเชพเชธเซ‡เชฅเซ€, เชธเซŒ เชชเซเชฐเชฅเชฎ, เช…เชฎเซ‡ เช† เช•เซเชทเชฎเชคเชพเช“เชจเซ€ เชฌเชฐเชพเชฌเชฐ เช…เชชเซ‡เช•เซเชทเชพ เชฐเชพเช–เซ€เช เช›เซ€เช. เชœเซ‡เชฅเซ€ เชคเซ‡ เชเชกเชชเซ€ เชนเซ‹เชฏ เช…เชจเซ‡ เชœเชฐเซ‚เชฐเซ€ เชฎเชพเชนเชฟเชคเซ€ เชธเชพเชฅเซ‡เชจเซ€ เชตเชฟเชจเซเชกเซ‹ เชฆเซ‹เชฐเชตเชพเชฎเชพเช‚ เชจ เช†เชตเซ‡ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชคเชฎเชพเชฐเซ‡ เช…เชกเชงเซ‹ เช•เชฒเชพเช• เชฐเชพเชน เชœเซ‹เชตเซ€ เชจ เชชเชกเซ‡ (เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชฐเชฟเชฎเซ‹เชŸ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เชงเซ€เชฎเชพ เชœเซ‹เชกเชพเชฃ เชธเชพเชฅเซ‡), เช…เชจเซ‡ เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เชชเซเชฐเชพเชชเซเชค เชฎเชพเชนเชฟเชคเซ€ เชคเชพเชœเซ€ เช…เชจเซ‡ เชธเซเชธเช‚เช—เชค เชนเซ‹เชฏ, เช…เชจเซ‡ เช•เซ‡เชถเซเชก เชœเช‚เช• เชจเชฅเซ€. เชคเชฆเซเชชเชฐเชพเช‚เชค, เชตเชงเซ เชœเชŸเชฟเชฒ เช…เชจเซ‡ เชตเชฟเชถเชพเชณ เชกเซ‡เชŸเชพเชฌเซ‡เช เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เชธเช‚เช–เซเชฏเชพ เชœเซ‡เชŸเชฒเซ€ เชตเชงเชพเชฐเซ‡ เช›เซ‡, เช† เช•เชฐเชตเชพเชจเซเช‚ เชตเชงเซ เชฎเซเชถเซเช•เซ‡เชฒ เช›เซ‡.

เชชเชฐเช‚เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชนเซเช‚ เชฎเชพเช‰เชธเชจเซ‡ เชซเซ‡เช‚เช•เซ€ เชฆเช‰เช‚ เช›เซเช‚ เช…เชจเซ‡ เชฎเชพเชคเซเชฐ เช•เซ‹เชก เชฒเช–เซเช‚ เช›เซเช‚. เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เชคเชฎเชพเชฐเซ‡ "HR" เชธเซเช•เซ€เชฎเชพเชฎเชพเช‚ เช•เชฏเชพ เช•เซ‹เชทเซเชŸเช•เซ‹ (เช…เชจเซ‡ เช•เชฏเชพ เช—เซเชฃเชงเชฐเซเชฎเซ‹ เชธเชพเชฅเซ‡) เชธเชฎเชพเชฏเซ‡เชฒ เช›เซ‡ เชคเซ‡ เชถเซ‹เชงเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ DBMS เชฎเชพเช‚, เชฎเชพเชนเชฟเชคเซ€_เชธเซเช•เซ‡เชฎเชพเชจเซ€ เช† เชธเชฐเชณ เช•เซเชตเซ‡เชฐเซ€ เชฆเซเชตเชพเชฐเชพ เช‡เชšเซเช›เชฟเชค เชชเชฐเชฟเชฃเชพเชฎ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡:

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'

เช“เชฐเซ‡เช•เชฒ เชฎเชพเชนเชฟเชคเซ€_เชธเซเช•เซ‡เชฎเชพเชจเซ‡ เชœเชพเชฃเชคเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡เชจเซ€ เชชเชพเชธเซ‡ เช›เซ‡ เช“เชฐเซ‡เช•เชฒ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ, เช…เชจเซ‡ เช•เซ‹เชˆ เชฎเซ‹เชŸเซ€ เชธเชฎเชธเซเชฏเชพเช“ เชŠเชญเซ€ เชฅเชคเซ€ เชจเชฅเซ€:

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'

เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เช…เชจเซเชฏ เชกเซ‡เชŸเชพเชฌเซ‡เชธเซ‡เชธ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ เชธเชฎเชพเชจ เชชเซเชฐเชถเซเชจเซ‹ เชธเชพเชฅเซ‡ เชชเชฃ เช†เชตเซ€ เชถเช•เซ‹ เช›เซ‹ (เชฎเซ‹เช‚เช—เซ‹ เชชเชพเชธเซ‡ เชชเชฃ เช›เซ‡ เช–เชพเชธ เชธเชฟเชธเซเชŸเชฎ เชธเช‚เช—เซเชฐเชน, เชœเซ‡ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚เชจเชพ เชคเชฎเชพเชฎ เชธเช‚เช—เซเชฐเชนเซ‹ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชงเชฐเชพเชตเซ‡ เช›เซ‡).

เช…เชฒเชฌเชคเซเชค, เช† เชฐเซ€เชคเซ‡ เชคเชฎเซ‡ เชฎเชพเชคเซเชฐ เช•เซ‹เชทเซเชŸเช•เซ‹ เชตเชฟเชถเซ‡ เชœ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เซ‹เชˆเชชเชฃ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชตเชฟเชถเซ‡ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เชธเชฎเชฏ เชธเชฎเชฏ เชชเชฐ, เชฆเชฏเชพเชณเซ เชฒเซ‹เช•เซ‹ เชตเชฟเชตเชฟเชง เชกเซ‡เชŸเชพเชฌเซ‡เช เชฎเชพเชŸเซ‡ เช†เชตเชพ เช•เซ‹เชก เชถเซ‡เชฐ เช•เชฐเซ‡ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชนเซ‡เชฌเซเชฐเชพ เชฒเซ‡เช–เซ‹เชจเซ€ เชถเซเชฐเซ‡เชฃเซ€เชฎเชพเช‚ "PostgreSQL เชกเซ‡เชŸเชพเชฌเซ‡เชธเซ‡เชธเชจเชพ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เชฎเชพเชŸเซ‡เชจเชพเช‚ เช•เชพเชฐเซเชฏเซ‹" (เช…เชฏเชฌ, เชฌเซ‡เชจ, เชœเชฟเชฎ). เช…เชฒเชฌเชคเซเชค, เชชเซเชฐเชถเซเชจเซ‹เชจเชพ เช† เช†เช–เชพ เชชเชนเชพเชกเชจเซ‡ เชฎเชพเชฐเชพ เชฎเชพเชฅเชพเชฎเชพเช‚ เชฐเชพเช–เชตเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชธเชคเชค เชŸเชพเช‡เชช เช•เชฐเชตเซเช‚ เช เช–เซ‚เชฌ เชœ เช†เชจเช‚เชฆเชจเซ€ เชตเชพเชค เช›เซ‡, เชคเซ‡เชฅเซ€ เชฎเชพเชฐเชพ เชฎเชจเชชเชธเช‚เชฆ IDE/เชเชกเชฟเชŸเชฐเชฎเชพเช‚ เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชตเชพเชฐเช‚เชตเชพเชฐ เชตเชชเชฐเชพเชคเซ€ เช•เซเชตเซ‡เชฐเซ€เช เชฎเชพเชŸเซ‡ เชธเซเชจเชฟเชชเซ‡เชŸเซเชธเชจเซ‹ เชชเซ‚เชฐเซเชต-เชคเซˆเชฏเชพเชฐ เชธเซ‡เชŸ เช›เซ‡, เช…เชจเซ‡ เชœเซ‡ เชฌเชพเช•เซ€ เช›เซ‡ เชคเซ‡ เชŸเชพเชˆเชช เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡. เชจเชฎเซ‚เชจเชพเชฎเชพเช‚ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชจเชพเชฎเซ‹.

เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชจเซ‡เชตเชฟเช—เซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชถเซ‹เชงเชตเชพเชจเซ€ เช† เชชเชฆเซเชงเชคเชฟ เชตเชงเซ เชฒเชตเชšเซ€เช• เช›เซ‡, เช˜เชฃเซ‹ เชธเชฎเชฏ เชฌเชšเชพเชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเชฎเชจเซ‡ เชคเซ‡ เชซเซ‹เชฐเซเชฎเชฎเชพเช‚ เชฌเชฐเชพเชฌเชฐ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชคเซ‡ เชนเชตเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ (เชœเซ‡เชฎ เช•เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเซ‹เชธเซเชŸเชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เช›เซ‡. "เช•เซ‹เชˆเชชเชฃ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชจเชฟเช•เชพเชธ เช•เชฐเชตเซ‹: IDEs IntelliJ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชชเชฐ เชถเซเช‚ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡").

เชตเชธเซเชคเซเช“ เชธเชพเชฅเซ‡ เช•เชพเชฎเช—เซ€เชฐเซ€

เช…เชฎเซ‡ เชœเชฐเซ‚เชฐเซ€ เชตเชธเซเชคเซเช“ เชถเซ‹เชงเซ€ เช…เชจเซ‡ เช…เชญเซเชฏเชพเชธ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชคเซ‡เชฎเชจเซ€ เชธเชพเชฅเซ‡ เช•เช‚เชˆเช• เช‰เชชเชฏเซ‹เช—เซ€ เช•เชฐเชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡. เชธเซเชตเชพเชญเชพเชตเชฟเช• เชฐเซ€เชคเซ‡, เช•เซ€เชฌเซ‹เชฐเซเชก เชชเชฐเชฅเซ€ เชคเชฎเชพเชฐเซ€ เช†เช‚เช—เชณเซ€เช“ เชฒเซ€เชงเชพ เชตเชฟเชจเชพ เชชเชฃ.

เชคเซ‡ เช•เซ‹เชˆ เชฐเชนเชธเซเชฏ เชจเชฅเซ€ เช•เซ‡ เชซเช•เซเชค เช•เซ‹เชทเซเชŸเช•เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฅเซ€ เชฒเช—เชญเช— เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพเชฌเซ‡เชธเซ‡เชธเชฎเชพเช‚ เชธเชฎเชพเชจ เชฆเซ‡เช–เชพเชถเซ‡:

drop table hr.persons

เชชเชฐเช‚เชคเซ เช•เซ‹เชทเซเชŸเช•เชจเซ€ เชฐเชšเชจเชพ เชธเชพเชฅเซ‡ เชคเซ‡ เชตเชงเซ เชฐเชธเชชเซเชฐเชฆ เชฌเชจเซ‡ เช›เซ‡. เชฒเช—เชญเช— เช•เซ‹เชˆเชชเชฃ DBMS (เช˜เชฃเชพ NoSQL เชธเชนเชฟเชค) เชเช• เช…เชฅเชตเชพ เชฌเซ€เชœเชพ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ "เชŸเซ‡เชฌเชฒ เชฌเชจเชพเชตเซ€" เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เชฎเซเช–เซเชฏ เชญเชพเช— เชฅเซ‹เชกเซ‹ เช…เชฒเช— เชชเชฃ เชนเชถเซ‡ (เชจเชพเชฎ, เช•เซ‰เชฒเชฎเชจเซ€ เชธเซ‚เชšเชฟ, เชกเซ‡เชŸเชพ เชชเซเชฐเช•เชพเชฐเซ‹), เชชเชฐเช‚เชคเซ เช…เชจเซเชฏ เชตเชฟเช—เชคเซ‹ เชจเชพเชŸเช•เซ€เชฏ เชฐเซ€เชคเซ‡ เช…เชฒเช— เชชเชกเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡. เช†เช‚เชคเชฐเชฟเช• เช‰เชชเช•เชฐเชฃ เช…เชจเซ‡ เชšเซ‹เช•เซเช•เชธ DBMS เชจเซ€ เช•เซเชทเชฎเชคเชพเช“. เชฎเชพเชฐเซเช‚ เชฎเชจเชชเชธเช‚เชฆ เช‰เชฆเชพเชนเชฐเชฃ เช เช›เซ‡ เช•เซ‡ เช“เชฐเซ‡เช•เชฒ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃเชฎเชพเช‚ "เชŸเซ‡เชฌเชฒ เชฌเชจเชพเชตเซ‹" เชตเชพเช•เซเชฏเชฐเชšเชจเชพ เชฎเชพเชŸเซ‡ เชฎเชพเชคเซเชฐ "เชจเช—เซเชจ" BNF เช›เซ‡ 31 เชชเซƒเชทเซเช เซ‹ เชซเชพเชณเชตเซ‹. เช…เชจเซเชฏ เชกเซ€เชฌเซ€เชเชฎเชเชธเชฎเชพเช‚ เชตเชงเซ เชธเชพเชงเชพเชฐเชฃ เช•เซเชทเชฎเชคเชพเช“ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชพเช‚เชจเชพ เชฆเชฐเซ‡เช•เชฎเชพเช‚ เช•เซ‹เชทเซเชŸเช•เซ‹ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช˜เชฃเซ€ เชฐเชธเชชเซเชฐเชฆ เช…เชจเซ‡ เช…เชจเชจเซเชฏ เชธเซเชตเชฟเชงเชพเช“ เชชเชฃ เช›เซ‡ (เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ, 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'

"เช•เซ‹เชก เชคเชฐเซ€เช•เซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช" เช…เชจเซเชญเชต

เชœเซ‹ เชคเชฎเซ‡ เชจเชœเซ€เช•เชฅเซ€ เชœเซเช“, เชคเซ‹ เชนเซ‚เชก เชนเซ‡เช เชณ เช˜เชฃเชพ เชตเชฟเชเซเชฏเซเชฒเชพเช‡เชเซ‡เชถเชจ เชŸเซ‚เชฒเซเชธ เชชเชฃ เชธเชฎเชพเชจ เชชเซเชฐเชถเซเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เชธเชพเชšเซเช‚, เช† เชตเชฟเชจเช‚เชคเซ€เช“ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชŠเช‚เชกเซ‡ เช›เซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เช•เซ‹เชกเชฎเชพเช‚ เชœ "เชนเชพเชฐเซเชกเชตเชพเชฏเชฐ" เช…เชจเซ‡ เชธเชฎเชœเชตเซเช‚ เชฎเซเชถเซเช•เซ‡เชฒ เช›เซ‡, เชคเซ‡เชฎเชพเช‚เชจเชพ เช•เซ‹เชˆเชชเชฃ เชซเซ‡เชฐเชซเชพเชฐเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เชจ เช•เชฐเชตเซ‹.

เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เช…เชจเซ‡ เชฎเซ‹เชจเซ€เชŸเชฐเซ€เช‚เช—

เชšเชพเชฒเซ‹ เชชเชฐเช‚เชชเชฐเชพเช—เชค เชฐเซ€เชคเซ‡ เชœเชŸเชฟเชฒ เชตเชฟเชทเชฏ เชชเชฐ เช†เช—เชณ เชตเชงเซ€เช - เชกเซ‡เชŸเชพเชฌเซ‡เช เชชเซเชฐเชฆเชฐเซเชถเชจ เชฎเซ‹เชจเซ€เชŸเชฐเซ€เช‚เช—. เชฎเชจเซ‡ "เชฎเชพเชฐเชพ เชเช• เชฎเชฟเชคเซเชฐ" เชฆเซเชตเชพเชฐเชพ เช•เชนเซ‡เชฒเซ€ เชเช• เชจเชพเชจเซ€ เชธเชคเซเชฏ เช˜เชŸเชจเชพ เชฏเชพเชฆ เช›เซ‡. เช…เชจเซเชฏ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเชฐ เชคเซเชฏเชพเช‚ เชเช• เชšเซ‹เช•เซเช•เชธ เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เชกเซ€เชฌเซ€เช เชฐเชนเซ‡เชคเซ‹ เชนเชคเซ‹, เช…เชจเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชคเซ‡เชฎเชจเซ‡ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชฐเซ‚เชชเซ‡ เชœเชพเชฃเชคเชพ เชนเชคเชพ, เช…เชฅเชตเชพ เชคเซ‡เชฎเชจเซ‡ เช•เซเชฏเชพเชฐเซ‡เชฏ เชฐเซ‚เชฌเชฐเซ‚เชฎเชพเช‚ เชœเซ‹เชฏเชพ เชนเชคเชพ (เชคเซ‡ เชนเช•เซ€เช•เชค เชนเซ‹เชตเชพ เช›เชคเชพเช‚ เช•เซ‡, เช…เชซเชตเชพเช“ เช…เชจเซเชธเชพเชฐ, เชคเซ‡เชฃเซ‡ เช†เช—เชฒเซ€ เชฌเชฟเชฒเซเชกเชฟเช‚เช—เชฎเชพเช‚ เช•เซเชฏเชพเช‚เช• เช•เชพเชฎ เช•เชฐเซเชฏเซเช‚ เชนเชคเซเช‚). เช•เชฒเชพเช• โ€œXโ€ เชชเชฐ, เชœเซเชฏเชพเชฐเซ‡ เชฎเซ‹เชŸเชพ เชฐเชฟเชŸเซ‡เชฒเชฐเชจเซ€ เชชเซ‹เชกเช•เซเชถเชจ เชธเชฟเชธเซเชŸเชฎ เชซเชฐเซ€ เชเช•เชตเชพเชฐ โ€œเช–เชฐเชพเชฌ เชฒเชพเช—เชตเชพ เชฒเชพเช—เซ€โ€, เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡เชฃเซ‡ เชถเชพเช‚เชคเชฟเชชเซ‚เชฐเซเชตเช• เช“เชฐเซ‡เช•เชฒ เชเชจเซเชŸเชฐเชชเซเชฐเชพเช‡เช เชฎเซ‡เชจเซ‡เชœเชฐ เชชเชพเชธเซ‡เชฅเซ€ เช—เซเชฐเชพเชซเชจเชพ เชธเซเช•เซเชฐเซ€เชจเชถเซ‰เชŸเซเชธ เชฎเซ‹เช•เชฒเซเชฏเชพ, เชœเซ‡เชจเชพ เชชเชฐ เชคเซ‡เชฃเซ‡ โ€œเชธเชฎเชœเชฃเช•เซเชทเชฎเชคเชพโ€ เชฎเชพเชŸเซ‡ เชฒเชพเชฒ เชฎเชพเชฐเซเช•เชฐ เชธเชพเชฅเซ‡ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชธเซเชฅเชพเชจเซ‹เชจเซ‡ เช•เชพเชณเชœเซ€เชชเซ‚เชฐเซเชตเช• เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซเชฏเชพ ( เช†, เชคเซ‡เชจเซ‡ เชนเชณเชตเชพเชถเชฅเซ€ เช•เชนเซ€เช เชคเซ‹, เชฌเชนเซ เชฎเชฆเชฆ เช•เชฐเซ€ เชจเชฅเซ€). เช…เชจเซ‡ เช† "เชซเซ‹เชŸเซ‹ เช•เชพเชฐเซเชก" เชจเชพ เช†เชงเชพเชฐเซ‡ เชฎเชพเชฐเซ‡ เชธเชพเชฐเชตเชพเชฐ เช•เชฐเชตเซ€ เชชเชกเซ€. เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เช•เชฟเช‚เชฎเชคเซ€ (เชถเชฌเซเชฆเชจเชพ เชฌเช‚เชจเซ‡ เช…เชฐเซเชฅเชฎเชพเช‚) เชเชจเซเชŸเชฐเชชเซเชฐเชพเช‡เช เชฎเซ‡เชจเซ‡เชœเชฐ เชธเซเชงเซ€ เช•เซ‹เชˆเชจเซ€ เชชเชนเซ‹เช‚เชš เชจเชนเซ‹เชคเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เชธเชฟเชธเซเชŸเชฎ เชœเชŸเชฟเชฒ เช…เชจเซ‡ เช–เชฐเซเชšเชพเชณ เช›เซ‡, เช…เชšเชพเชจเช• "เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เช•เช‚เชˆเช• เชชเชฐ เช เซ‹เช•เชฐ เช–เชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชฌเชงเซเช‚ เชคเซ‹เชกเซ€ เชจเชพเช–เซ‡ เช›เซ‡." เชคเซ‡เชฅเซ€, เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เช "เช…เชจเซเชญเชพเชตเชฟเช• เชฐเซ€เชคเซ‡" เชฌเซเชฐเซ‡เช•เซเชธเชจเซเช‚ เชธเซเชฅเชพเชจ เช…เชจเซ‡ เช•เชพเชฐเชฃ เชถเซ‹เชงเซ€ เช•เชพเชขเซเชฏเซเช‚ เช…เชจเซ‡ เชชเซ‡เชš เชฌเชนเชพเชฐ เชชเชพเชกเซเชฏเซ‹. เชœเซ‹ เชจเชœเซ€เช•เชจเชพ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ DBA เชคเชฐเชซเชฅเซ€ เชญเชฏเชœเชจเช• เชชเชคเซเชฐ เชซเชฐเซ€เชฅเซ€ เชจ เช†เชตเซ‡, เชคเซ‹ เชฆเชฐเซ‡เช• เชตเซเชฏเช•เซเชคเชฟ เชฐเชพเชนเชคเชจเซ‹ เชถเซเชตเชพเชธ เชฒเซ‡เชถเซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เชตเชฐเซเชคเชฎเชพเชจ เช•เชพเชฐเซเชฏเซ‹ เชชเชฐ เชชเชพเช›เชพ เชซเชฐเชถเซ‡ (เชจเชตเชพ เชชเชคเซเชฐ เชธเซเชงเซ€).

เชชเชฐเช‚เชคเซ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชตเชงเซ เชฎเชจเซ‹เชฐเช‚เชœเช• เช…เชจเซ‡ เชฎเซˆเชคเซเชฐเซ€เชชเซ‚เชฐเซเชฃ เชฆเซ‡เช–เชพเชˆ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เชธเซŒเชฅเซ€ เช…เช—เชคเซเชฏเชจเซเช‚, เชฆเชฐเซ‡เช• เชฎเชพเชŸเซ‡ เชธเซเชฒเชญ เช…เชจเซ‡ เชชเชพเชฐเชฆเชฐเซเชถเช• เช›เซ‡. เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชคเซ‡เชจเซ‹ เชฎเซ‚เชณเชญเซ‚เชค เชญเชพเช—, เชฎเซเช–เซเชฏ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเซเชธเชฎเชพเช‚ เชตเชงเชพเชฐเชพ เชคเชฐเซ€เช•เซ‡ (เชœเซ‡ เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡ เช…เชจเซ‡ เช˜เชฃเชพ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚ เชฌเชฆเชฒเซ€ เชจ เชถเช•เชพเชฏ เชคเซ‡เชตเซเช‚ เช›เซ‡). เช•เซ‹เชˆเชชเชฃ DBMS เชคเซ‡เชจเซ€ เชตเชฐเซเชคเชฎเชพเชจ เชธเซเชฅเชฟเชคเชฟ เช…เชจเซ‡ เช•เชพเชฎเช—เซ€เชฐเซ€ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชถเซ‡เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซเช•เซเชคเชชเชฃเซ‡ เช…เชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชฎเชซเชค เช›เซ‡. เชธเชฎเชพเชจ "เชฒเซ‹เชนเชฟเชฏเชพเชณ" เช“เชฐเซ‡เช•เชฒ เชกเซ€เชฌเซ€เชฎเชพเช‚, เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เชตเชฟเชถเซ‡เชจเซ€ เชฒเช—เชญเช— เช•เซ‹เชˆเชชเชฃ เชฎเชพเชนเชฟเชคเซ€ เชธเชฟเชธเซเชŸเชฎ เชฆเซƒเชถเซเชฏเซ‹เชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชณเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เช…เชจเซ‡ เชธเชคเซเชฐเซ‹เชฅเซ€ เชฒเชˆเชจเซ‡ เชฌเชซเชฐ เช•เซ‡เชถเชจเซ€ เชธเซเชฅเชฟเชคเชฟ เชธเซเชงเซ€ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, DBA เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธ, เชตเชฟเชญเชพเช— "เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช—"). Postgresql เชชเชฃ เชฎเชพเชŸเซ‡ เชธเชฟเชธเซเชŸเชฎ เชฆเซƒเชถเซเชฏเซ‹เชจเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเชฎเซ‚เชน เชงเชฐเชพเชตเซ‡ เช›เซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เช เชฎเซ‹เชจเซ€เชŸเชฐเซ€เช‚เช—, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชœเซ‡ เช•เซ‹เชˆเชชเชฃ DBA เชจเชพ เชฐเซ‹เชœเชฟเช‚เชฆเชพ เชœเซ€เชตเชจเชฎเชพเช‚ เช…เชจเชฟเชตเชพเชฐเซเชฏ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ pg_stat_activity, pg_stat_database, pg_stat_bgwriter. MySQL เชชเชพเชธเซ‡ เช† เชฎเชพเชŸเซ‡ เชเช• เช…เชฒเช— เชธเซเช•เซ€เชฎเชพ เชชเชฃ เช›เซ‡. เชชเซเชฐเชฆเชฐเซเชถเชจ_เชธเซเช•เซ€เชฎเชพ. A In Mongo เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฐ เชธเชฟเชธเซเชŸเชฎ เชธเช‚เช—เซเชฐเชนเชฎเชพเช‚ เชชเซเชฐเชฆเชฐเซเชถเชจ เชกเซ‡เชŸเชพเชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเซ‡ เช›เซ‡ system.profile.

เช†เชฎ, เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเชพ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เช•เชฒเซ‡เช•เซเชŸเชฐ (เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชซ, เชฎเซ‡เชŸเซเชฐเชฟเช•เชฌเซ€เชŸ, เช•เชฒเซ‡เช•เซเชŸเซ‡เชก)เชฅเซ€ เชธเชœเซเชœ เช•เซ‡ เชœเซ‡ เช•เชธเซเชŸเชฎ sql เช•เซเชตเซ‡เชฐเซ€ เช•เชฐเซ€ เชถเช•เซ‡, เช† เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธเชจเซ‹ เชธเช‚เช—เซเชฐเชน (InfluxDB, Elasticsearch, Timescaledb) เช…เชจเซ‡ เชตเชฟเชเซเชฏเซเชฒเชพเชˆเชเชฐ (Grafana, Kibana), เชคเชฎเซ‡ เชเช•เชฆเชฎ เชธเชฐเชณ เชฐเซ€เชคเซ‡ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เช…เชจเซ‡ เชเช• เชฒเชตเชšเซ€เช• เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เช•เซ‡ เชœเซ‡ เช…เชจเซเชฏ เชธเชฟเชธเซเชŸเชฎ-เชตเซเชฏเชพเชชเซ€ เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธ เชธเชพเชฅเซ‡ เชจเชœเซ€เช•เชฅเซ€ เชธเช‚เช•เชฒเชฟเชค เชนเชถเซ‡ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชฐเซเชตเชฐเชฎเชพเช‚เชฅเซ€, OS, เชตเช—เซ‡เชฐเซ‡เชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชณเชตเซ‡เชฒ). เชœเซ‡เชฎ เช•เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช† pgwatch2 เชฎเชพเช‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ InfluxDB + Grafana เช•เซ‹เชฎเซเชฌเชฟเชจเซ‡เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชธเชฟเชธเซเชŸเชฎ เชตเซเชฏเซ‚ เชฎเชพเชŸเซ‡ เช•เซเชตเซ‡เชฐเซ€เชจเซ‹ เชธเชฎเซ‚เชน เชตเชพเชชเชฐเซ‡ เช›เซ‡, เชœเซ‡เชจเซ‡ เชเช•เซเชธเซ‡เชธ เชชเชฃ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช•เชธเซเชŸเชฎ เชชเซเชฐเชถเซเชจเซ‹ เช‰เชฎเซ‡เชฐเซ‹.

เช•เซเชฒ

เช…เชจเซ‡ เชจเชฟเชฏเชฎเชฟเชค SQL เช•เซ‹เชกเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชฎเชพเชฐเชพ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เชถเซเช‚ เช•เชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡เชจเซ€ เช† เชฎเชพเชคเซเชฐ เช…เช‚เชฆเชพเชœเชฟเชค เชธเซ‚เชšเชฟ เช›เซ‡. เชฎเชจเซ‡ เช–เชพเชคเชฐเซ€ เช›เซ‡ เช•เซ‡ เชคเชฎเซ‡ เช˜เชฃเชพ เชตเชงเซ เช‰เชชเชฏเซ‹เช—เซ‹ เชถเซ‹เชงเซ€ เชถเช•เชถเซ‹, เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚ เชฒเช–เซ‹. เช…เชจเซ‡ เช…เชฎเซ‡ เช† เชฌเชงเซเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ (เช…เชจเซ‡ เชธเซŒเชฅเซ€ เช…เช—เชคเซเชฏเชจเซเช‚ เชถเชพ เชฎเชพเชŸเซ‡) เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช†เช—เชฒเซ€ เชตเช–เชคเซ‡ เชคเชฎเชพเชฐเซ€ CI/CD เชชเชพเช‡เชชเชฒเชพเช‡เชจเชฎเชพเช‚ เชถเชพเชฎเซ‡เชฒ เช•เชฐเชตเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹