"เจ•เฉ‹เจก เจฆเฉ‡ เจคเฉŒเจฐ เจคเฉ‡ เจกเจพเจŸเจพเจฌเฉ‡เจธ" เจ…เจจเฉเจญเจต

"เจ•เฉ‹เจก เจฆเฉ‡ เจคเฉŒเจฐ เจคเฉ‡ เจกเจพเจŸเจพเจฌเฉ‡เจธ" เจ…เจจเฉเจญเจต

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

เจ…เจคเฉ‡ เจ†เจ“ เจธเจนเฉ€ เจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเฉ€เจ เจ“เจ†เจฐเจเจฎ. "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 เจนเฉˆ, เจ…เจคเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจเจธ-เจเจ•เจธเจชเฉเจฐเฉˆเจธเจผเจจ เจตเจงเฉ€เจ† เจนเจจ, เจชเจฐ เจ‰เจน เจ‡เฉฑเจฅเฉ‡ เจ•เฉเจ เจจเจตเจพเจ‚ เจจเจนเฉ€เจ‚ เจœเฉ‹เฉœเจฆเฉ‡ เจนเจจเฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจ…เจธเฉ€เจ‚ เจฌเจฐเฉˆเจ•เจŸเจพเจ‚ เจฆเฉ€ เจ–เจผเจพเจคเจฐ เจฌเจฐเฉˆเจ•เจŸเจพเจ‚ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚. เจธเจนเจฟเจฎเจค เจจเจนเฉ€เจ‚ เจนเฉ‹? เจซเจฟเจฐ เจ‰เจธ เจชเจฒ เจฆเฉ€ เจ‰เจกเฉ€เจ• เจ•เจฐเฉ‹ เจœเจฆเฉ‹เจ‚ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ‰เฉฑเจคเฉ‡ เจเจฌเจธเจŸเจฐเฉˆเจ•เจธเจผเจจ เจฒเฉ€เจ• เจนเฉ‹เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจซเฉฐเจ•เจธเจผเจจ เจจเจพเจฒ เจฒเฉœเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹ (raw-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 เจธเจฎเจฐเจฅเจจ เจนเฉˆเฅค SQL เจจเฉ‚เฉฐ SQL เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจ•เฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค
  • เจŸเฉ€เจฎ เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพ. เจคเฉเจนเจพเจกเฉ‡ DBAs เจ‰เจธ SQL เจจเฉ‚เฉฐ เจชเฉœเฉเจน เจ…เจคเฉ‡ เจฒเจฟเจ– เจธเจ•เจฆเฉ‡ เจนเจจ เจœเฉ‹ เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ Clojure เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจตเจฐเจคเจฆเฉ‡ เจนเฉ‹เฅค
  • เจ†เจธเจพเจจ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจŸเจฟเจŠเจจเจฟเฉฐเจ—. เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจตเจพเจฒเฉ€ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจฒเจˆ เจ‡เฉฑเจ• เจฏเฉ‹เจœเจจเจพ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ? เจ‡เจน เจ•เฉ‹เจˆ เจธเจฎเฉฑเจธเจฟเจ† เจจเจนเฉ€เจ‚ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจคเฉเจนเจพเจกเฉ€ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ› เจจเจฟเจฏเจฎเจค 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'

เจฌเจนเฉเจคเฉ‡ เจนเฉ‹เจฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ เจธเจฎเจพเจจ เจธเจตเจพเจฒเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจตเฉ€ เจ† เจธเจ•เจฆเฉ‡ เจนเฉ‹ (เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจฎเฉ‹เจ‚เจ—เฉ‹ เจ•เฉ‹เจฒ เจตเฉ€ เจนเฉˆ เจตเจฟเจธเจผเฉ‡เจธเจผ เจธเจฟเจธเจŸเจฎ เจธเฉฐเจ—เฉเจฐเจนเจฟ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจฟเจธเจŸเจฎ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ‡ เจธเฉฐเจ—เฉเจฐเจนเจฟ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจธเจผเจพเจฎเจฒ เจนเฉˆ)เฅค

เจฌเฉ‡เจธเจผเฉฑเจ•, เจ‡เจธ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจคเฉเจธเฉ€เจ‚ เจจเจพ เจธเจฟเจฐเจซเจผ เจŸเฉ‡เจฌเจฒเจพเจ‚ เจฌเจพเจฐเฉ‡, เจชเจฐ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจตเจธเจคเฉ‚ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹. เจธเจฎเฉ‡เจ‚-เจธเจฎเฉ‡เจ‚ 'เจคเฉ‡, เจฆเจฟเจ†เจฒเฉ‚ เจฒเฉ‹เจ• เจตเฉฑเจ–-เจตเฉฑเจ– เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฒเจˆ เจ…เจœเจฟเจนเฉ‡ เจ•เฉ‹เจก เจธเจพเจ‚เจเฉ‡ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจนเฉˆเจฌเจฐเจพ เจฒเฉ‡เจ–เจพเจ‚ เจฆเฉ€ เจฒเฉœเฉ€ เจตเจฟเฉฑเจš "เจชเฉ‹เจธเจŸเจ—เจฐเฉ‡เจเจธเจ•เจฏเฉ‚เจเจฒ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจซเฉฐเจ•เจธเจผเจจ" (เจ…เจฏเจฌ, เจฌเฉˆเจจ, เจตเจฐเจœเจฟเจธเจผเจ–เจพเจจเจพ). เจฌเฉ‡เจธเจผเฉฑเจ•, เจธเจตเจพเจฒเจพเจ‚ เจฆเฉ‡ เจ‡เจธ เจชเฉ‚เจฐเฉ‡ เจชเจนเจพเฉœ เจจเฉ‚เฉฐ เจฎเฉ‡เจฐเฉ‡ เจธเจฟเจฐ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฃเจพ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจ—เจพเจคเจพเจฐ เจŸเจพเจˆเจช เจ•เจฐเจจเจพ เจฌเจนเฉเจค เจ–เฉเจธเจผเฉ€ เจฆเฉ€ เจ—เฉฑเจฒ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจฎเฉ‡เจฐเฉ‡ เจฎเจจเจชเจธเฉฐเจฆ IDE/เจธเฉฐเจชเจพเจฆเจ• เจตเจฟเฉฑเจš เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจ…เจ•เจธเจฐ เจตเจฐเจคเฉ‡ เจœเจพเจฃ เจตเจพเจฒเฉ‡ เจธเจตเจพเจฒเจพเจ‚ เจฒเจˆ เจธเจจเจฟเฉฑเจชเจŸ เจฆเจพ เจ‡เฉฑเจ• เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจคเจฟเจ†เจฐ เจธเฉˆเฉฑเจŸ เจนเฉˆ, เจ…เจคเฉ‡ เจœเฉ‹ เจฌเจพเจ•เฉ€ เจฐเจนเจฟเฉฐเจฆเจพ เจนเฉˆ เจ‰เจน เจŸเจพเจˆเจช เจ•เจฐเจจเจพ เจนเฉˆเฅค เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸ เจตเจฟเฉฑเจš เจตเจธเจคเฉ‚ เจฆเฉ‡ เจจเจพเจฎ.

เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจจเฉˆเจตเฉ€เจ—เฉ‡เจŸ เจ•เจฐเจจ เจ…เจคเฉ‡ เจตเจธเจคเฉ‚เจ†เจ‚ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เจฐเจจ เจฆเจพ เจ‡เจน เจคเจฐเฉ€เจ•เจพ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจฒเจšเจ•เจฆเจพเจฐ เจนเฉˆ, เจฌเจนเฉเจค เจธเจพเจฐเจพ เจธเจฎเจพเจ‚ เจฌเจšเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจธ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฌเจฟเจฒเจ•เฉเจฒ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ‡เจน เจนเฉเจฃ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ (เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจชเฉ‹เจธเจŸ เจตเจฟเฉฑเจš เจฆเฉฑเจธเจฟเจ† เจ—เจฟเจ† เจนเฉˆ "เจ•เจฟเจธเฉ‡ เจตเฉ€ เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจคเฉ‹เจ‚ เจกเฉ‡เจŸเจพ เจจเจฟเจฐเจฏเจพเจค เจ•เจฐเจจเจพ: IDEs IntelliJ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ 'เจคเฉ‡ เจ•เฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจ").

เจตเจธเจคเฉ‚เจ†เจ‚ เจจเจพเจฒ เจธเฉฐเจšเจพเจฒเจจ

เจœเจฆเฉ‹เจ‚ เจ…เจธเฉ€เจ‚ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€เจ†เจ‚ เจตเจธเจคเฉ‚เจ†เจ‚ เจจเฉ‚เฉฐ เจฒเฉฑเจญ เจฒเจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเจพ เจ…เจงเจฟเจเจจ เจ•เจฐ เจฒเจฟเจ† เจนเฉˆ, เจ‡เจน เจ‰เจนเจจเจพเจ‚ เจจเจพเจฒ เจ•เฉเจ เจฒเจพเจญเจฆเจพเจ‡เจ• เจ•เจฐเจจ เจฆเจพ เจธเจฎเจพเจ‚ เจนเฉˆเฅค เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡, เจคเฉเจนเจพเจกเฉ€เจ†เจ‚ เจ‰เจ‚เจ—เจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉ€เจฌเฉ‹เจฐเจก เจคเฉ‹เจ‚ เจนเจŸเจพเจ เจฌเจฟเจจเจพเจ‚ เจตเฉ€เฅค

เจ‡เจน เจ•เฉ‹เจˆ เจญเฉ‡เจค เจจเจนเฉ€เจ‚ เจนเฉˆ เจ•เจฟ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพเจ‰เจฃเจพ เจฒเจ—เจญเจ— เจธเจพเจฐเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเจพ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เจพ:

drop table hr.persons

เจชเจฐ เจธเจพเจฐเจฃเฉ€ เจฆเฉ€ เจธเจฟเจฐเจœเจฃเจพ เจฆเฉ‡ เจจเจพเจฒ เจ‡เจน เจนเฉ‹เจฐ เจฆเจฟเจฒเจšเจธเจช เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ. เจฒเจ—เจญเจ— เจ•เฉ‹เจˆ เจตเฉ€ DBMS (เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ NoSQL เจธเจฎเฉ‡เจค) เจ‡เฉฑเจ• เจœเจพเจ‚ เจฆเฉ‚เจœเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš "เจธเจพเจฐเจฃเฉ€ เจฌเจฃเจพ" เจธเจ•เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธเจฆเจพ เจฎเฉเฉฑเจ– เจนเจฟเฉฑเจธเจพ เจฅเฉ‹เฉœเฉเจนเจพ เจตเฉฑเจ–เจฐเจพ เจตเฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพ (เจจเจพเจฎ, เจ•เจพเจฒเจฎเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€, เจกเฉ‡เจŸเจพ เจ•เจฟเจธเจฎ), เจชเจฐ เจนเฉ‹เจฐ เจตเฉ‡เจฐเจตเฉ‡ เจจเจพเจŸเจ•เฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเฉฑเจ–เจฐเฉ‡ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ‡เจธ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจกเจฟเจตเจพเจˆเจธ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจ–เจพเจธ DBMS เจฆเฉ€เจ†เจ‚ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚เฅค เจฎเฉ‡เจฐเฉ€ เจฎเจจเจชเจธเฉฐเจฆ เจ‰เจฆเจพเจนเจฐเจจ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ“เจฐเฉ‡เจ•เจฒ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจตเจฟเฉฑเจš "เจŸเฉ‡เจฌเจฒ เจฌเจฃเจพเจ“" เจธเฉฐเจŸเฉˆเจ•เจธ เจฒเจˆ เจธเจฟเจฐเจซ "เจจเฉฐเจ—เฉ‡" BNF เจนเจจ 31 เจชเฉฐเจจเจฟเจ†เจ‚ 'เจคเฉ‡ เจ•เจฌเจœเจผเจพ เจ•เจฐเฉ‹. เจนเฉ‹เจฐ DBMS เจตเจฟเฉฑเจš เจตเจงเฉ‡เจฐเฉ‡ เจฎเจพเจฎเฉ‚เจฒเฉ€ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ‚ เจนเจจ, เจชเจฐ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐเฉ‡เจ• เจตเจฟเฉฑเจš เจŸเฉ‡เจฌเจฒ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจฆเจฟเจฒเจšเจธเจช เจ…เจคเฉ‡ เจตเจฟเจฒเฉฑเจ–เจฃ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจนเจจ (เจกเจพเจ•เจ–เจพเจจเฉ‡, MySQL, เจ•เจพเจ•เจฐเฉ‹เจš, cassandra). เจ‡เจน เจ…เจธเฉฐเจญเจต เจนเฉˆ เจ•เจฟ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ 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 เจ†เจชเจฃเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฅเจฟเจคเฉ€ เจ…เจคเฉ‡ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฌเจพเจฐเฉ‡ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจธเจพเจ‚เจเฉ€ เจ•เจฐเจจ เจฒเจˆ เจธเฉเจคเฉฐเจคเจฐ เจ…เจคเฉ‡ เจฌเจฟเจฒเจ•เฉเจฒ เจฎเฉเจซเจค เจนเฉˆเฅค เจ‰เจธเฉ‡ "เจ–เฉ‚เจจเฉ€" เจ“เจฐเฉ‡เจ•เจฒ เจกเฉ€เจฌเฉ€ เจตเจฟเฉฑเจš, เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ เจฌเจพเจฐเฉ‡ เจฒเจ—เจญเจ— เจ•เฉ‹เจˆ เจตเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจธเจฟเจธเจŸเจฎ เจฆเฉเจฐเจฟเจธเจผเจพเจ‚ เจคเฉ‹เจ‚ เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ, เจชเฉเจฐเจ•เจฟเจฐเจฟเจ†เจตเจพเจ‚ เจ…เจคเฉ‡ เจธเฉˆเจธเจผเจจเจพเจ‚ เจคเฉ‹เจ‚ เจฒเฉˆ เจ•เฉ‡ เจฌเจซเจฐ เจ•เฉˆเจธเจผ เจฆเฉ€ เจธเจฅเจฟเจคเฉ€ เจคเฉฑเจ• (เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, DBA เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚, เจญเจพเจ— "เจจเจฟเจ—เจฐเจพเจจเฉ€"). Postgresql เจ•เฉ‹เจฒ เจธเจฟเจธเจŸเจฎ เจฆเฉเจฐเจฟเจธเจผเจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจชเฉ‚เจฐเจพ เจธเจฎเฉ‚เจน เจตเฉ€ เจนเฉˆ เจกเจพเจŸเจพเจฌเฉ‡เจธ เจจเจฟเจ—เจฐเจพเจจเฉ€, เจ–เจพเจธ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‰เจน เจœเฉ‹ เจ•เจฟเจธเฉ‡ เจตเฉ€ DBA เจฆเฉ‡ เจฐเฉ‹เจœเจผเจพเจจเจพ เจœเฉ€เจตเจจ เจตเจฟเฉฑเจš เจฒเจพเจœเจผเจฎเฉ€ เจนเจจ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ pg_stat_activity, pg_stat_database, pg_stat_bgwriter. MySQL เจ•เฉ‹เจฒ เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจธเจ•เฉ€เจฎเจพ เจตเฉ€ เจนเฉˆเฅค เจชเฉเจฐเจฆเจฐเจธเจผเจจ_เจธเจ•เฉ€เจฎเจพ. เจ เจ‡เจจ เจฎเฉ‹เจ‚เจ—เฉ‹ เจฌเจฟเจฒเจŸ-เจ‡เจจ เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒเจฐ เจ‡เฉฑเจ• เจธเจฟเจธเจŸเจฎ เจธเฉฐเจ—เฉเจฐเจนเจฟ เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจฆเจพ เจนเฉˆ system.profile.

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

เจ•เฉเฉฑเจฒ

เจ…เจคเฉ‡ เจ‡เจน เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจ…เจจเฉเจฎเจพเจจเจฟเจค เจธเฉ‚เจšเฉ€ เจนเฉˆ เจœเฉ‹ เจจเจฟเจฏเจฎเจค SQL เจ•เฉ‹เจก เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจพเจกเฉ‡ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจจเจพเจฒ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจฎเฉˆเจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจ เจนเฉˆ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจนเฉ‹เจฐ เจ‰เจชเจฏเฉ‹เจ— เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจฒเจฟเจ–เฉ‹. เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจ•เจฟเจตเฉ‡เจ‚ (เจ…เจคเฉ‡ เจธเจญ เจคเฉ‹เจ‚ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจ•เจฟเจ‰เจ‚) เจ‡เจธ เจธเจญ เจจเฉ‚เฉฐ เจธเจตเฉˆเจšเจฒเจฟเจค เจ•เจฐเจจเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ…เจ—เจฒเฉ€ เจตเจพเจฐ เจคเฉเจนเจพเจกเฉ€ CI/CD เจชเจพเจˆเจชเจฒเจพเจˆเจจ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เจฐเจจเจพ เจนเฉˆเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹