"เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด•เต‹เดกเต" เด…เดจเตเดญเดตเด‚

"เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด•เต‹เดกเต" เด…เดจเตเดญเดตเด‚

SQL, เดŽเดจเตเดคเดพเดฃเต เด‡เดคเดฟเดฒเตเด‚ เดฒเดณเดฟเดคเดฎเดพเดฏเดคเต? เดจเดฎเตเด•เตเด•เต เด“เดฐเต‹เดฐเตเดคเตเดคเตผเด•เตเด•เตเด‚ เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดŽเดดเตเดคเดพเด‚ - เดžเด™เตเด™เตพ เดŸเตˆเดชเตเดชเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต เดคเต†เดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•, เด†เดตเดถเตเดฏเดฎเดพเดฏ เด•เต‹เดณเด™เตเด™เตพ เดฒเดฟเดธเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•, เดคเตเดŸเตผเดจเตเดจเต เดจเดฟเดจเตเดจเต, เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดชเต‡เดฐเต, เดšเดฟเดฒ เดตเตเดฏเดตเดธเตเดฅเด•เตพ เดŽเดตเดฟเดŸเต† เด…เดคเตเดฐเดฏเต‡เดฏเตเดณเตเดณเต‚ - เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดžเด™เตเด™เดณเตเดŸเต† เดชเต‹เด•เตเด•เดฑเตเดฑเดฟเตฝ เด‰เดฃเตเดŸเต, เด•เต‚เดŸเดพเดคเต† (เดเดคเดพเดฃเตเดŸเต) เด† เดธเดฎเดฏเดคเตเดคเต เดเดคเต DBMS เดนเตเดกเดฟเดจเต เด•เต€เดดเดฟเดฒเดพเดฃเต†เด™เตเด•เดฟเดฒเตเด‚ (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดšเดฟเดฒเดชเตเดชเต‹เตพ เด’เดฐเต DBMS เด…เดฒเตเดฒ). เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดŽเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑเดพ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเดฎเดพเดฏเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดธเดพเดงเดพเดฐเดฃ เด•เต‹เดกเดฟเดจเตเดฑเต† เดตเต€เด•เตเดทเดฃเด•เต‹เดฃเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดพเด‚ (เด…เดคเต เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดฒเตเดฒเดพเด‚ - เดชเดคเดฟเดชเตเดชเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด‚, เด•เต‹เดกเต เด…เดตเดฒเต‹เด•เดจเด‚, เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดตเดฟเดถเด•เดฒเดจเด‚, เด“เดŸเตเดŸเต‹เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ, เด…เดคเตเดฐเดฎเดพเดคเตเดฐเด‚). เด‡เดคเต เดกเดพเดฑเตเดฑเดฏเตเด•เตเด•เตเด‚ เดธเตเด•เต€เดฎเด•เตพเด•เตเด•เตเด‚ เดฎเตˆเด—เตเดฐเต‡เดทเดจเตเด•เตพเด•เตเด•เตเด‚ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดชเตŠเดคเตเดตเต† เดธเด‚เดญเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดฎเตเดดเตเดตเตป เดœเต€เดตเดฟเดคเดคเตเดคเดฟเดจเตเด‚ เดฌเดพเดงเด•เดฎเดพเดฃเต. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, "เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เด•เต‹เดกเต" เดŽเดจเตเดจ เดฒเต†เตปเดธเดฟเดจเต เด•เต€เดดเดฟเดฒเตเดณเตเดณ เดตเดฟเดตเดฟเดง เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเดฟเตฝ เดœเต‹เดฒเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดฆเตˆเดจเด‚เดฆเดฟเดจ เดœเต‹เดฒเดฟเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดชเตเดฐเดถเตเดจเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดจเดฎเตเดฎเตพ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚.

เด•เต‚เดŸเดพเดคเต† เดจเดฎเตเด•เตเด•เต เด†เดฆเตเดฏเด‚ เดฎเตเดคเตฝ เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚ ORM. "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 เด†เดฃเต, เดžเด™เตเด™เตพเด•เตเด•เต เดฎเดฑเตเดฑเตŠเดจเตเดจเต เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ. เดŽเดธเต-เดŽเด•เตโ€Œเดธเตโ€Œเดชเตเดฐเดทเดจเตเด•เตพ เดฎเดฟเด•เดšเตเดšเดคเดพเดฃเต, เดชเด•เตเดทเต‡ เด…เดต เด‡เดตเดฟเดŸเต† เดชเตเดคเดฟเดฏเดคเตŠเดจเตเดจเตเด‚ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดฌเตเดฐเดพเด•เตเด•เดฑเตเดฑเตเด•เตพเด•เตเด•เต เดตเต‡เดฃเตเดŸเดฟ เดจเดฎเตเด•เตเด•เต เดฌเตเดฐเดพเด•เตเด•เดฑเตเดฑเตเด•เตพ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเต. เดฏเต‡เดพเดœเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ? เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเตเดฑเต† เด…เดฎเต‚เตผเดคเตเดคเต€เด•เดฐเดฃเด‚ เดšเต‹เดฐเดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจ เดจเดฟเดฎเดฟเดทเดคเตเดคเดฟเดจเดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเด•, เดจเดฟเด™เตเด™เตพ เดซเด‚เด—เตเดทเดจเตเดฎเดพเดฏเดฟ เดชเต‹เดฐเดพเดŸเดพเตป เดคเตเดŸเด™เตเด™เตเด‚. (เดฑเต‹-เดš.เดฒเดฟ.)

เด…เดชเตเดชเต‡เดพเตพ เดžเดพเตป เดŽเดจเตเดคเต เดšเต†เดฏเตเดฏเดฃเด‚? เดจเดฎเตเด•เตเด•เต 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 เดชเดฟเดจเตเดคเตเดฃเดฏเตเดฃเตเดŸเต. SQL-เดจเต† SQL เด†เดฏเดฟ เดธเต‡เดตเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.
  • เดŸเต€เด‚ เด…เดจเตเดฏเต‹เดœเตเดฏเดค. เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เตเดฒเต‹เดœเต‚เตผ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตฝ เดจเดฟเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ SQL เดตเดพเดฏเดฟเด•เตเด•เดพเดจเตเด‚ เดŽเดดเตเดคเดพเดจเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† DBA-เด•เตพเด•เตเด•เต เด•เดดเดฟเดฏเตเด‚.
  • เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเตเดฐเด•เดŸเดจ เดŸเตเดฏเต‚เดฃเดฟเด‚เด—เต. เดชเตเดฐเดถเตเดจเดฎเตเดณเตเดณ เด’เดฐเต เดšเต‹เดฆเตเดฏเดคเตเดคเดฟเดจเต เด’เดฐเต เดชเตเดฒเดพเตป เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต‹? เดจเดฟเด™เตเด™เดณเตเดŸเต† เด…เดจเตเดตเต‡เดทเดฃเด‚ เดธเดพเดงเดพเดฐเดฃ SQL เด†เดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด‡เดคเต เด’เดฐเต เดชเตเดฐเดถเตเดจเดฎเดฒเตเดฒ.
  • เดšเต‹เดฆเตเดฏเด™เตเด™เตพ เดตเต€เดฃเตเดŸเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเต‡ SQL เดซเดฏเดฒเตเด•เตพ เดฎเดฑเตเดฑเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดตเดฒเดฟเดšเตเดšเดฟเดŸเตเด•, เด•เดพเดฐเดฃเด‚ เด‡เดคเต เดตเต†เดฑเตเด‚ เดชเดดเดฏ SQL เด†เดฃเต - เด…เดคเต เดชเด™เตเด•เดฟเดŸเตเด•.

เดŽเดจเตเดฑเต† เด…เดญเดฟเดชเตเดฐเดพเดฏเดคเตเดคเดฟเตฝ, เด†เดถเดฏเด‚ เดตเดณเดฐเต† เดฐเดธเด•เดฐเดตเตเด‚ เด…เดคเต‡ เดธเดฎเดฏเด‚ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดตเตเดฎเดพเดฃเต, เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดชเดฒเดฐเต†เดฏเตเด‚ เดจเต‡เดŸเดฟเดฏเดคเดฟเดจเต เดจเดจเตเดฆเดฟ เด…เดจเตเดฏเดพเดฏเดฟเด•เตพ เดตเดฟเดตเดฟเดง เดญเดพเดทเด•เดณเดฟเตฝ. ORM-เดจเต เด…เดชเตเดชเตเดฑเดคเตเดคเตเดณเตเดณ เดŽเดฒเตเดฒเดพเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ SQL เด•เต‹เดกเต เดตเต‡เตผเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดธเดฎเดพเดจเดฎเดพเดฏ เด’เดฐเต เดคเดคเตเดตเดถเดพเดธเตเดคเตเดฐเด‚ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เดถเตเดฐเดฎเดฟเด•เตเด•เตเด‚.

IDE & DB เดฎเดพเดจเต‡เดœเตผเดฎเดพเตผ

เดฒเดณเดฟเดคเดฎเดพเดฏ เดฆเตˆเดจเด‚เดฆเดฟเดจ เดœเต‹เดฒเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฎเตเด•เตเด•เต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚. เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เดจเดฎเตเดฎเตพ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดšเดฟเดฒ เด’เดฌเตเดœเด•เตเดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดธเตเด•เต€เดฎเดฏเดฟเตฝ เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เด•เดฃเตเดŸเต†เดคเตเดคเดฟ เด…เดคเดฟเดจเตเดฑเต† เด˜เดŸเดจ เดชเด เดฟเด•เตเด•เตเด• (เดเดคเต เดจเดฟเดฐเด•เตพ, เด•เต€เด•เตพ, เดธเต‚เดšเดฟเด•เด•เตพ, เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ เดฎเตเดคเดฒเดพเดฏเดต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต). เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด—เตเดฐเดพเดซเดฟเด•เตเด•เตฝ IDE เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดฐเต เดšเต†เดฑเดฟเดฏ DB-เดฎเดพเดจเต‡เดœเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต, เด’เดจเตเดจเดพเดฎเดคเดพเดฏเดฟ, เดˆ เด•เดดเดฟเดตเตเด•เตพ เดžเด™เตเด™เตพ เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเดฟเดจเดพเตฝ เด‡เดคเต เดตเต‡เด—เดคเดฏเตเดณเตเดณเดคเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฏ เดตเดฟเดตเดฐเด™เตเด™เดณเตเดณเตเดณ เด’เดฐเต เดตเดฟเตปเดกเต‹ เดตเดฐเตเดจเตเดจเดคเตเดตเดฐเต† เดจเดฟเด™เตเด™เตพ เด…เดฐ เดฎเดฃเดฟเด•เตเด•เต‚เตผ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ (เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเต เด’เดฐเต เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดตเต‡เด—เดค เด•เตเดฑเดžเตเดž เด•เดฃเด•เตเดทเตป), เด…เดคเต‡ เดธเดฎเดฏเด‚, เดฒเดญเดฟเดšเตเดš เดตเดฟเดตเดฐเด™เตเด™เตพ เดชเตเดคเดฟเดฏเดคเตเด‚ เดชเตเดฐเดธเด•เตเดคเดตเตเดฎเดพเดฃเต, เด•เต‚เดŸเดพเดคเต† เด•เดพเดทเต† เดšเต†เดฏเตเดค เดœเด™เตเด•เต เด…เดฒเตเดฒ. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เด•เต‚เดŸเตเดคเตฝ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดตเตเด‚ เดตเดฒเตเดคเตเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด‚ เด…เดตเดฏเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด•เต‚เดŸเตเดจเตเดจเดคเดฟเดจเดจเตเดธเดฐเดฟเดšเตเดšเต เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด•เต‚เดŸเตเดคเตฝ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเดฃเต.

เดŽเดจเตเดจเดพเตฝ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดžเดพเตป เดฎเต—เดธเต เดตเดฒเดฟเดšเตเดšเต†เดฑเดฟเดžเตเดžเต เด•เต‹เดกเต เดŽเดดเตเดคเตเดจเตเดจเต. "HR" เดธเตเด•เต€เดฎเดฏเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเดŸเตเดŸเดฟเด•เด•เตพ (เดเดคเตŠเด•เตเด•เต† เดชเตเดฐเต‹เดชเตเดชเตผเดŸเตเดŸเดฟเด•เตพ เด‰เดณเตเดณเดคเต) เดจเดฟเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดชเดฑเดฏเดพเด‚. เดฎเดฟเด•เตเด• DBMS-เด•เดณเดฟเดฒเตเด‚, information_schema-เดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดˆ เดฒเดณเดฟเดคเดฎเดพเดฏ เดšเต‹เดฆเตเดฏเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดซเดฒเด‚ เดจเต‡เดŸเดพเดจเดพเด•เตเด‚:

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

เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดฎเตเดคเตฝ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดตเดฐเต†, เด…เดคเตเดคเดฐเด‚ เดฑเดซเดฑเตปเดธเต เดŸเต‡เดฌเดฟเดณเตเด•เดณเตเดŸเต† เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เตพ เด“เดฐเต‹ เดกเดฟเดฌเดฟเดŽเด‚เดŽเดธเดฟเดจเตเดฑเต†เดฏเตเด‚ เด•เดดเดฟเดตเตเด•เดณเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต เดตเตเดฏเดคเตเดฏเดพเดธเดชเตเดชเต†เดŸเตเดจเตเดจเต. เด•เต‚เดŸเดพเดคเต†, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, 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'

เดฎเดฑเตเดฑเต เดฎเดฟเด•เตเด• เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เตพเด•เตเด•เตเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเดฎเดพเดจเดฎเดพเดฏ เดšเต‹เดฆเตเดฏเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดตเดฐเดพเด‚ (เดฎเต‹เด‚เด—เต‹เดฏเตเด•เตเด•เต เดชเต‹เดฒเตเด‚ เดชเตเดฐเดคเตเดฏเต‡เด• เดธเดฟเดธเตเดฑเตเดฑเด‚ เดถเต‡เด–เดฐเดฃเด‚, เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดถเต‡เด–เดฐเด™เตเด™เดณเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เด‡เดคเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต).

เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดˆ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเดŸเตเดŸเดฟเด•เด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดชเตŠเดคเตเดตเดพเดฏเดฟ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดตเดธเตเดคเตเดตเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดฒเดญเดฟเด•เตเด•เตเด‚. เด•เดพเดฒเดพเด•เดพเดฒเด™เตเด™เดณเดฟเตฝ, เดฆเดฏเดฏเตเดณเตเดณ เด†เดณเตเด•เตพ เดตเตเดฏเดคเตเดฏเดธเตเดค เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เตพเด•เตเด•เดพเดฏเดฟ เด…เดคเตเดคเดฐเด‚ เด•เต‹เดกเต เดชเด™เตเด•เดฟเดŸเตเดจเตเดจเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดนเดฌเตเดฐ เดฒเต‡เด–เดจเด™เตเด™เดณเตเดŸเต† เดชเดฐเดฎเตเดชเดฐเดฏเดฟเตฝ "PostgreSQL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เตพ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ" (เด…เดฏเตเดฌเต, เดฌเต†เตป, เดœเดฟเด‚). เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดˆ เดฎเตเดดเตเดตเตป เดšเต‹เดฆเตเดฏเด™เตเด™เดณเตเด‚ เดŽเดจเตเดฑเต† เดคเดฒเดฏเดฟเตฝ เดธเต‚เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เด…เดต เดจเดฟเดฐเดจเตเดคเดฐเด‚ เดŸเตˆเดชเตเดชเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเตเด‚ เดตเดณเดฐเต† เดธเดจเตเดคเต‹เดทเด•เดฐเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เดŽเดจเตเดฑเต† เดชเตเดฐเดฟเดฏเดชเตเดชเต†เดŸเตเดŸ เดเดกเดฟเด‡/เดŽเดกเดฟเดฑเตเดฑเดฑเดฟเตฝ เดชเดคเดฟเดตเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดšเต‹เดฆเตเดฏเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดฎเตเตปเด•เต‚เดŸเตเดŸเดฟ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เดฟเดฏ เดธเตโ€Œเดจเดฟเดชเตเดชเต†เดฑเตเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เดธเต†เดฑเตเดฑเต เดŽเดจเตเดฑเต† เดชเด•เตเด•เดฒเตเดฃเตเดŸเต, เด‡เดจเดฟ เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŸเตˆเดชเตเดชเต เดšเต†เดฏเตเดฏเตเด• เดฎเดพเดคเตเดฐเดฎเดพเดฃเต. เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เด’เดฌเตเดœเด•เตเดฑเตเดฑเต เดชเต‡เดฐเตเด•เตพ.

เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เตพ เดจเดพเดตเดฟเด—เต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดคเดฟเดฐเดฏเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดˆ เดฐเต€เดคเดฟ เด•เต‚เดŸเตเดคเตฝ เดตเดดเด•เตเด•เดฎเตเดณเตเดณเดคเตเด‚ เดงเดพเดฐเดพเดณเด‚ เดธเดฎเดฏเด‚ เดฒเดพเดญเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เด‡เดชเตเดชเต‹เตพ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดฐเต‚เดชเดคเตเดคเดฟเตฝ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเด™เตเด™เตพ เดจเต‡เดŸเดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดชเต‹เดธเตเดฑเตเดฑเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต† "เดเดคเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดฟเดฒเตเด‚ เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดŽเด•เตโ€Œเดธเตโ€Œเดชเต‹เตผเดŸเตเดŸเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต: IntelliJ เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดฟเตฝ IDE-เด•เตพเด•เตเด•เต เดŽเดจเตเดคเตเดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚").

เดตเดธเตเดคเตเด•เตเด•เดณเตเดฎเดพเดฏเตเดณเตเดณ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ

เด†เดตเดถเตเดฏเดฎเดพเดฏ เดตเดธเตเดคเตเด•เตเด•เตพ เดžเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดฟ เดชเด เดฟเดšเตเดš เดถเต‡เดทเด‚, เด…เดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดšเต†เดฏเตเดฏเดพเตป เดธเดฎเดฏเดฎเดพเดฏเดฟ. เดธเตเดตเดพเดญเดพเดตเดฟเด•เดฎเดพเดฏเตเด‚, เด•เต€เดฌเต‹เตผเดกเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดฟเดฐเดฒเตเด•เตพ เดŽเดŸเตเด•เตเด•เดพเดคเต† เดคเดจเตเดจเต†.

เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเดคเต เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดŽเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเดฟเดฒเตเด‚ เด’เดฐเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเดฎเต†เดจเตเดจเดคเต เดฐเดนเดธเตเดฏเดฎเดฒเตเดฒ:

drop table hr.persons

เดŽเดจเตเดจเดพเตฝ เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดธเตƒเดทเตเดŸเดฟเดฏเต‹เดŸเต† เด…เดคเต เด•เต‚เดŸเตเดคเตฝ เดฐเดธเด•เดฐเดฎเดพเดฃเต. เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดŽเดฒเตเดฒเดพ DBMS-เดจเตเด‚ (เดจเดฟเดฐเดตเดงเดฟ NoSQL เด‰เตพเดชเตเดชเต†เดŸเต†) เด’เดฐเต เดฐเต‚เดชเดคเตเดคเดฟเตฝ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเดฑเตเดฑเตŠเดจเตเดจเดฟเตฝ "เดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเตป" เด•เดดเดฟเดฏเตเด‚, เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เด…เดคเดฟเดจเตเดฑเต† เดชเตเดฐเดงเดพเดจ เดญเดพเด—เด‚ เด…เดฒเตเดชเด‚ เดชเต‹เดฒเตเด‚ เดตเตเดฏเดคเตเดฏเดพเดธเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเด‚ (เดชเต‡เดฐเต, เดจเดฟเดฐเด•เดณเตเดŸเต† เดชเดŸเตเดŸเดฟเด•, เดกเดพเดฑเตเดฑ เดคเดฐเด™เตเด™เตพ), เดŽเดจเตเดจเดพเตฝ เดฎเดฑเตเดฑเต เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เดจเดพเดŸเด•เต€เดฏเดฎเดพเดฏเดฟ เดตเตเดฏเดคเตเดฏเดพเดธเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเด‚ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดกเดฟเดฌเดฟเดŽเด‚เดŽเดธเดฟเดจเตเดฑเต† เด†เดจเตเดคเดฐเดฟเด• เด‰เดชเด•เดฐเดฃเดตเตเด‚ เด•เดดเดฟเดตเตเด•เดณเตเด‚. เด’เดฑเดพเด•เตเด•เดฟเตพ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต‡เดทเดจเดฟเตฝ "เดŸเต‡เดฌเดฟเตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•" เดŽเดจเตเดจ เดตเดพเด•เตเดฏเด˜เดŸเดจเดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ "เดจเด—เตเดจ" BNF-เด•เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เด‰เดณเตเดณเต‚ เดŽเดจเตเดจเดคเดพเดฃเต เดŽเดจเตเดฑเต† เดชเตเดฐเดฟเดฏเดชเตเดชเต†เดŸเตเดŸ เด‰เดฆเดพเดนเดฐเดฃเด‚. 31 เดชเต‡เดœเตเด•เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจเต. เดฎเดฑเตเดฑเต DBMS-เด•เตพเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดฎเดฟเดคเดฎเดพเดฏ เด•เดดเดฟเดตเตเด•เดณเตเดฃเตเดŸเต, เดŽเดจเตเดจเดพเตฝ เด…เดตเดฏเดฟเตฝ เด“เดฐเต‹เดจเตเดจเดฟเดจเตเด‚ เดชเดŸเตเดŸเดฟเด•เด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฐเดธเด•เดฐเดตเตเด‚ เด…เดคเตเดฒเตเดฏเดตเตเดฎเดพเดฏ เดจเดฟเดฐเดตเดงเดฟ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เด‰เดฃเตเดŸเต (เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต†เดธเต, เด•เตเดฏเต, เดชเดพเดฑเตเดฑ, เด•เดพเดธเดจเตเดฆเตเดฐ). เดฎเดฑเตเดฑเตŠเดฐเต เดเดกเดฟเด‡เดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ (เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเต เดธเดพเตผเดตเดคเตเดฐเดฟเด•เดฎเดพเดฏเดคเต) เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด—เตเดฐเดพเดซเดฟเด•เตเด•เตฝ "เดตเดฟเดธเดพเตผเดกเดฟเดจเต" เดˆ เด•เดดเดฟเดตเตเด•เดณเต†เดฒเตเดฒเดพเด‚ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเดฟ เด‰เตพเด•เตเด•เตŠเดณเตเดณเดพเตป เด•เดดเดฟเดฏเดพเตป เดธเดพเดงเตเดฏเดคเดฏเดฟเดฒเตเดฒ, เด…เดคเดฟเดจเต เด•เดดเดฟเดฏเตเดฎเต†เด™เตเด•เดฟเดฒเตเด‚, เด…เดคเต เดนเตƒเดฆเดฏเดคเตเดคเดฟเดจเตเดฑเต† เดคเดณเตผเดšเตเดšเดฏเตเด•เตเด•เต เด’เดฐเต เด•เดพเดดเตเดšเดฏเดฒเตเดฒ. เด…เดคเต‡ เดธเดฎเดฏเด‚, เด•เตƒเดคเตเดฏเดตเตเด‚ เดธเดฎเดฏเดฌเดจเตเดงเดฟเดคเดตเตเดฎเดพเดฏ เดฐเต‡เด–เดพเดฎเต‚เดฒเดฎเตเดณเตเดณ เดชเตเดฐเดธเตเดคเดพเดตเดจ เดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• เด…เดตเดฏเต†เดฒเตเดฒเดพเด‚ เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดจเตเด‚ เดธเด‚เดญเดฐเดฃเดตเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเตเดฐเดตเต‡เดถเดจเดตเตเด‚ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดตเตเด‚ เด’เดชเตเดฑเตเดฑเดฟเดฎเดฒเตเด‚ เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเดฎเดพเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚.

เด•เต‚เดŸเดพเดคเต†, เดชเดฒ 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-เดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดญเต€เดทเดฃเดฟเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจ เด•เดคเตเดคเต เดธเดฎเต€เดชเดญเดพเดตเดฟเดฏเดฟเตฝ เดตเต€เดฃเตเดŸเตเด‚ เดตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดŽเดฒเตเดฒเดพเดตเดฐเตเด‚ เด†เดถเตเดตเดพเดธเดคเตเดคเดฟเดจเตเดฑเต† เดจเต†เดŸเตเดตเต€เตผเดชเตเดชเดฟเดŸเตเดŸเต เด…เดตเดฐเตเดŸเต† เดจเดฟเดฒเดตเดฟเดฒเต† เดœเต‹เดฒเดฟเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเด‚ (เดชเตเดคเดฟเดฏ เด•เดคเตเดคเต เดตเดฐเต†).

เดŽเดจเตเดจเดพเตฝ เดฎเต‹เดฃเดฟเดฑเตเดฑเดฑเดฟเด‚เด—เต เดชเตเดฐเด•เตเดฐเดฟเดฏ เด•เต‚เดŸเตเดคเตฝ เดฐเดธเด•เดฐเดตเตเด‚ เดธเต—เดนเตƒเดฆเดชเดฐเดตเตเด‚, เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดฎเดพเดฏเดฟ, เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจเดคเตเด‚ เดธเตเดคเดพเดฐเตเดฏเดตเตเดฎเดพเดฃเต. เดชเตเดฐเดงเดพเดจ เดฎเต‹เดฃเดฟเดฑเตเดฑเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เด…เดงเดฟเด•เดฎเดพเดฏเดฟ เด…เดคเดฟเดจเตเดฑเต† เด…เดŸเดฟเดธเตเดฅเดพเดจ เดญเดพเด—เดฎเต†เด™เตเด•เดฟเดฒเตเด‚ (เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดตเตเด‚ เดชเดฒ เด•เต‡เดธเตเด•เดณเดฟเดฒเตเด‚ เดฎเดพเดฑเตเดฑเดพเดจเดพเด•เดพเดคเตเดคเดคเตเดฎเดพเดฃเต). เดเดคเตŠเดฐเต เดกเดฟเดฌเดฟเดŽเด‚เดŽเดธเตเด‚ เด…เดคเดฟเดจเตเดฑเต† เดจเดฟเดฒเดตเดฟเดฒเต† เด…เดตเดธเตเดฅเดฏเต†เดฏเตเด‚ เดชเตเดฐเด•เดŸเดจเดคเตเดคเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดชเด™เตเด•เดฟเดŸเตเดจเตเดจเดคเดฟเดจเต เดธเต—เดœเดจเตเดฏเดฎเดพเดฏเตเด‚ เดคเดฟเด•เดšเตเดšเตเด‚ เดธเต—เดœเดจเตเดฏเดตเตเดฎเดพเดฃเต. เด…เดคเต‡ "เดฌเตเดฒเดกเดฟ" เด’เดฑเดพเด•เตเด•เดฟเตพ เดกเดฟเดฌเดฟเดฏเดฟเตฝ, เดชเตเดฐเต‹เดธเดธเตเดธเตเด•เดณเตเด‚ เดธเต†เดทเดจเตเด•เดณเตเด‚ เดฎเตเดคเตฝ เดฌเดซเตผ เด•เดพเดทเต†เดฏเตเดŸเต† เด…เดตเดธเตเดฅ เดตเดฐเต† (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เดพเดดเตเดšเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเด•เดŸเดจเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดฎเดฟเด•เตเด•เดตเดพเดฑเตเด‚ เดŽเดฒเตเดฒเดพ เดตเดฟเดตเดฐเด™เตเด™เดณเตเด‚ เดฒเดญเดฟเด•เตเด•เตเด‚. DBA เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ, เดตเดฟเดญเดพเด—เด‚ "เดฎเต‹เดฃเดฟเดฑเตเดฑเดฑเดฟเด‚เด—เต"). Postgresql-เดจเต เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เดพเดดเตเดšเด•เดณเตเด‚ เด‰เดฃเตเดŸเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดจเดฟเดฐเต€เด•เตเดทเดฃเด‚, เดชเตเดฐเดคเตเดฏเต‡เด•เดฟเดšเตเดšเต เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ DBA-เดฏเตเดŸเต† เดฆเตˆเดจเด‚เดฆเดฟเดจ เดœเต€เดตเดฟเดคเดคเตเดคเดฟเตฝ เด’เดดเดฟเดšเตเดšเตเด•เต‚เดŸเดพเดจเดพเดตเดพเดคเตเดคเดต pg_stat_activity, pg_stat_database, pg_stat_bgwriter. MySQL-เดจเต เด‡เดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดธเตเด•เต€เดฎ เดชเต‹เดฒเตเด‚ เด‰เดฃเตเดŸเต. เดชเตเดฐเด•เดŸเดจเด‚_เดธเตโ€Œเด•เต€เดฎ. เดŽ เด‡เตป เดฎเต‹เด‚เด—เต‹ เดฌเดฟเตฝเดฑเตเดฑเต-เด‡เตป เดชเตเดฐเตŠเดซเตˆเดฒเตผ เด’เดฐเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเด•เดŸเดจ เดกเดพเดฑเตเดฑ เดธเดฎเดพเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเต system.profile.

เด…เดคเดฟเดจเดพเตฝ, เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค sql เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เตพ เดจเดŸเดคเตเดคเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดšเดฟเดฒเดคเดฐเด‚ เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดธเต เด•เดณเด•เตเดŸเตผ (เดŸเต†เดฒเดฟเด—เตเดฐเดพเดซเต, เดฎเต†เดŸเตเดฐเดฟเด•เตโ€Œเดฌเต€เดฑเตเดฑเต, เด•เดณเด•เตโ€Œเดฑเตเดฑเดกเต), เดˆ เดฎเต†เดŸเตเดฐเดฟเด•เตเด•เตเด•เดณเตเดŸเต† เดธเด‚เดญเดฐเดฃเด‚ (เด‡เตปเดซเตโ€Œเดฒเด•เตโ€Œเดธเต เดกเดฟเดฌเดฟ, เด‡เดฒเดพเดธเตเดฑเตเดฑเดฟเด•เตโ€Œเดธเต†เตผเดšเตเดšเต, เดŸเตˆเด‚เดธเตโ€Œเด•เต†เดฒเต†เดกเตโ€Œเดฌเดฟ), เด’เดฐเต เดตเดฟเดทเตเดตเดฒเตˆเดธเตผ (เด—เตเดฐเดพเดซเดพเดจ, เด•เดฟเดฌเดพเดจ) เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเดณเดฐเต† เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดฒเดญเดฟเด•เตเด•เตเด‚. เดฎเดฑเตเดฑเต เดธเดฟเดธเตเดฑเตเดฑเด‚-เดตเตˆเดกเต เดฎเต†เดŸเตเดฐเดฟเด•เตเด•เตเด•เดณเตเดฎเดพเดฏเดฟ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเต†เตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต, OS-เตฝ เดจเดฟเดจเตเดจเต เดฎเตเดคเดฒเดพเดฏเดต) เด…เดŸเตเดคเตเดคเต เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดซเตเดฒเต†เด•เตเดธเดฟเดฌเดฟเตพ เดฎเต‹เดฃเดฟเดฑเตเดฑเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเดตเตเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด‡เดคเต pgwatch2-เดฒเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต, เด‡เดคเต InfluxDB + Grafana เด•เต‹เดฎเตเดชเดฟเดจเต‡เดทเดจเตเด‚ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เดพเดดเตโ€Œเดšเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด…เดตเดฏเตเด‚ เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚. เด‡เดทเตโ€ŒเดŸเดพเดจเตเดธเตƒเดค เดšเต‹เดฆเตเดฏเด™เตเด™เตพ เดšเต‡เตผเด•เตเด•เตเด•.

เด†เด•เต†

เดธเดพเดงเดพเดฐเดฃ SQL เด•เต‹เดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเตฝ เดŽเดจเตเดคเตเดšเต†เดฏเตเดฏเดพเดจเดพเด•เตเดฎเต†เดจเตเดจเดคเดฟเดจเตเดฑเต† เดเด•เดฆเต‡เดถ เดฒเดฟเดธเตเดฑเตเดฑเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเดฟเดคเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เด‰เดชเดฏเต‹เด—เด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เด‰เดฑเดชเตเดชเตเดฃเตเดŸเต, เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเดฟเตฝ เดŽเดดเตเดคเตเด•. เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดŽเด™เตเด™เดจเต† (เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดฎเดพเดฏเดฟ เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต) เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเดฎเต†เดจเตเดจเตเด‚ เด…เดŸเตเดคเตเดค เดคเดตเดฃ เดจเดฟเด™เตเด™เดณเตเดŸเต† CI/CD เดชเตˆเดชเตเดชเตโ€Œเดฒเตˆเดจเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดฎเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•