āĻāĻ¸āĻāĻŋāĻāĻāĻ˛, āĻāĻŋ āĻ¸āĻšāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§? āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§āĻā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ - āĻāĻŽāĻ°āĻž āĻāĻžāĻāĻĒ āĻāĻ°āĻŋ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻž, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻ˛āĻžāĻŽ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻ°ā§āĻ¨ āĻĨā§āĻā§, āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¨āĻžāĻŽ, āĻāĻŋāĻā§ āĻļāĻ°ā§āĻ¤ āĻā§āĻĨāĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻāĻŋāĻ āĻ¸āĻŦ - āĻĻāĻ°āĻāĻžāĻ°ā§ āĻĄā§āĻāĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻā§āĻā§ āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ (āĻĒā§āĻ°āĻžāĻ¯āĻŧ) āĻ¨āĻŋāĻ°ā§āĻŦāĻŋāĻļā§āĻˇā§ āĻ¯ā§ DBMS āĻ¸ā§āĻ āĻ¸āĻŽāĻ¯āĻŧā§ āĻšā§āĻĄā§āĻ° āĻ¨ā§āĻā§ āĻāĻŋāĻ˛ (āĻŦāĻž āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻāĻŦāĻ āĻāĻ° āĻĄāĻžāĻ¨ āĻĨā§āĻā§ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻ¯āĻžāĻ
āĻ¤ā§āĻ˛āĻ¨āĻžāĻŽā§āĻ˛āĻ āĻŽā§āĻ¯āĻžāĻĒāĻŋāĻ āĻ āĻŦāĻā§āĻā§āĻ
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;
}
...
āĻŽāĻĄā§āĻ˛āĻāĻŋ āĻāĻ¤ā§āĻ° āĻā§āĻāĻž āĻĻāĻŋāĻ¯āĻŧā§ āĻā§āĻ˛āĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§, āĻāĻŦāĻ āĻĒāĻ°ā§āĻĻāĻžāĻ° āĻāĻĄāĻŧāĻžāĻ˛ā§ āĻā§āĻĨāĻžāĻ āĻāĻāĻāĻŋ āĻ¸āĻžāĻšāĻ¸ā§ āĻāĻāĻ°āĻāĻŽ āĻāĻŋāĻā§ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻā§āĻĄ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻžāĻ˛āĻžāĻ¯āĻŧāĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž āĻ¤āĻžāĻĻā§āĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨā§āĻā§ āĻŦāĻŋāĻā§āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻ°ā§āĻŦā§āĻā§āĻ āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻā§ āĻāĻŋāĻ˛ā§āĻŽāĻŋāĻāĻžāĻ°ā§āĻ° āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤āĻ¤āĻž āĻ¸āĻš, āĻ¯āĻž āĻāĻŋāĻā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§
āĻŦā§āĻ¯āĻžāĻ°āĻŋāĻā§āĻĄā§āĻ° āĻ āĻ¨ā§āĻ¯ āĻĻāĻŋāĻā§, āĻāĻžāĻāĻāĻŋ "āĻšāĻ¸ā§āĻ¤āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤" āĻāĻ¸āĻāĻŋāĻāĻāĻ˛-āĻāĻ° āĻ āĻ¨ā§āĻāĻžāĻŽā§āĻ°āĻž āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻ¸ā§āĻ¤āĻ° āĻāĻŦāĻ āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤āĻ¤āĻž āĻāĻžāĻĄāĻŧāĻžāĻ āĻ¤āĻžāĻĻā§āĻ° āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ āĻĨā§āĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ°āĻ¸ āĻŦā§āĻ° āĻāĻ°ā§ āĻ¨ā§āĻāĻ¯āĻŧāĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻ¨ā§āĻ āĻāĻ°ā§āĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, "āĻĄā§āĻāĻž-āĻā§āĻ¨ā§āĻĻā§āĻ°āĻŋāĻ" āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻŦāĻŋāĻļā§āĻˇāĻāĻžāĻŦā§ āĻĒā§āĻ°āĻļāĻŋāĻā§āĻˇāĻŋāĻ¤ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻ°āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻĄāĻŧāĻŋāĻ¤ āĻĨāĻžāĻā§ (āĻ¤āĻžāĻ°āĻž "āĻŽā§āĻ˛āĻŋāĻāĻŦāĻžāĻĻā§"āĻ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ°āĻž "āĻŽā§āĻ˛āĻŋāĻāĻŦāĻžāĻĻā§"āĻ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ°āĻž "āĻŦā§āĻ¯āĻžāĻ¸āĻĄā§āĻ¨āĻžāĻ°" āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ) āĻāĻŦāĻ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ¨āĻž āĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ°ā§āĻĄāĻŋāĻŽā§āĻĄ āĻāĻŋāĻ āĻāĻŦāĻ āĻ¸āĻā§āĻāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋāĻā§ "āĻāĻžāĻ¨" āĻĻāĻŋāĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻŽāĻ°āĻž āĻ¯āĻĻāĻŋ āĻāĻāĻ¯āĻŧ āĻāĻāĻ¤ā§āĻ° āĻ¸ā§āĻ°āĻž āĻĨāĻžāĻāĻ¤āĻžāĻŽ? āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻŦāĻ¨-āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻ¨āĻžāĻŽ āĻ¸āĻš āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻ¸āĻ°āĻā§āĻāĻžāĻŽā§ āĻā§āĻāĻžāĻŦā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧ
Clojure āĻšāĻ˛ DSL ââāĻ¤ā§āĻ°āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻāĻžāĻˇāĻž, āĻāĻŋāĻ¨ā§āĻ¤ā§ SQL āĻ¨āĻŋāĻā§āĻ āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ DSL, āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ° āĻāĻāĻāĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻāĨ¤ āĻāĻ¸-āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻļāĻ¨āĻā§āĻ˛āĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤, āĻ¤āĻŦā§ āĻ¤āĻžāĻ°āĻž āĻāĻāĻžāĻ¨ā§ āĻ¨āĻ¤ā§āĻ¨ āĻāĻŋāĻā§ āĻ¯ā§āĻ āĻāĻ°ā§ āĻ¨āĻžāĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻŽāĻ°āĻž āĻŦāĻ¨ā§āĻ§āĻ¨ā§āĻ° āĻāĻžāĻ¤āĻŋāĻ°ā§ āĻŦāĻ¨ā§āĻ§āĻ¨ā§ āĻĒāĻžāĻāĨ¤ āĻāĻāĻŽāĻ¤ āĻ¨āĻ? āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¸ā§āĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°ā§āĻ¨ āĻ¯āĻāĻ¨ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻāĻĒāĻ° āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤āĻ¤āĻž āĻĢāĻžāĻāĻ¸ āĻšāĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ˛āĻĄāĻŧāĻžāĻ āĻļā§āĻ°ā§ āĻāĻ°ā§āĻ¨ (raw-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" ...} ...)
"āĻ¨āĻŋāĻā§āĻ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛, āĻ¨āĻŋāĻā§āĻ āĻā§āĻ˛ā§āĻāĻžāĻ°" āĻ¨ā§āĻ¤āĻŋ āĻŽā§āĻ¨ā§ āĻāĻ˛āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§, āĻāĻĒāĻ¨āĻŋ āĻĒāĻžāĻŦā§āĻ¨:
- āĻā§āĻ¨ āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻāĻāĻŋāĻ āĻāĻŽāĻ āĻ¨ā§āĻāĨ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ (āĻ āĻ¨ā§āĻ¯ āĻ¯ā§ āĻā§āĻ¨ āĻŽāĻ¤) āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄā§āĻ° āĻ¸āĻžāĻĨā§ 100% āĻ¸āĻā§āĻāĻ¤āĻŋāĻĒā§āĻ°ā§āĻŖ āĻ¨āĻ¯āĻŧ - āĻ¤āĻŦā§ āĻāĻāĻŋ Yesql āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ¨ āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ° āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻĒāĻ¨āĻŋ SQL āĻ¸āĻŽāĻ¤ā§āĻ˛ā§āĻ¯ āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻĢāĻžāĻāĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻļāĻŋāĻāĻžāĻ°ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¨āĻˇā§āĻ āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻžāĨ¤ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻ¨āĻ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ā§ āĻĢāĻŋāĻ°ā§ āĻ¯ā§āĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻž (raw-sql "some('Funky'::SYNTAX)")).
- āĻ¸ā§āĻ°āĻž āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨āĨ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻŽā§āĻāĻžāĻ° SQL āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻā§. SQL āĻšāĻŋāĻ¸āĻžāĻŦā§ SQL āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
- āĻĻāĻ˛ā§āĻ° āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĨ¤ āĻāĻĒāĻ¨āĻžāĻ° DBAs āĻāĻĒāĻ¨āĻŋ āĻāĻĒāĻ¨āĻžāĻ° Clojure āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻ¯ā§ SQL āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨ āĻ¤āĻž āĻĒāĻĄāĻŧāĻ¤ā§ āĻāĻŦāĻ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
- āĻ¸āĻšāĻ āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻāĻŋāĻāĻ¨āĻŋāĻ. āĻāĻāĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ¯ā§āĻā§āĻ¤ āĻĒā§āĻ°āĻļā§āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§? āĻāĻĒāĻ¨āĻžāĻ° āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ SQL āĻšāĻ˛ā§ āĻāĻāĻŋ āĻā§āĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¨āĻ¯āĻŧāĨ¤
- āĻĒā§āĻ°āĻļā§āĻ¨ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤ āĻ¸ā§āĻ āĻāĻāĻ SQL āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻā§ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻā§āĻ¨ā§ āĻāĻ¨ā§āĻ¨ āĻāĻŦāĻ āĻĄā§āĻ°āĻĒ āĻāĻ°ā§āĻ¨ āĻāĻžāĻ°āĻŖ āĻāĻāĻŋ āĻā§āĻŦāĻ˛ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒā§āĻ°āĻžāĻ¨ā§ SQL - āĻļā§āĻ§ā§ āĻāĻāĻŋ āĻāĻžāĻ āĻāĻ°ā§āĻ¨ā§ˇ
āĻāĻŽāĻžāĻ° āĻŽāĻ¤ā§, āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻā§āĻŦ āĻļāĻžāĻ¨ā§āĻ¤ āĻāĻŦāĻ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§ āĻā§āĻŦ āĻ¸āĻšāĻ, āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ āĻ¯āĻž āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻ
āĻ¨ā§āĻ āĻ
āĻ°ā§āĻāĻ¨ āĻāĻ°ā§āĻā§
āĻāĻāĻĄāĻŋāĻ āĻāĻŦāĻ āĻĄāĻŋāĻŦāĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ°
āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĻā§āĻ¨āĻ¨ā§āĻĻāĻŋāĻ¨ āĻāĻžāĻ āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻāĻŋāĻā§ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¸ā§āĻāĻŋāĻŽāĻžāĻ¤ā§ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻ° āĻāĻ āĻ¨ āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ (āĻā§āĻ¨ āĻāĻ˛āĻžāĻŽ, āĻā§, āĻ¸ā§āĻāĻ, āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ)āĨ¤ āĻāĻŦāĻ āĻ¯ā§āĻā§āĻ¨ā§ āĻā§āĻ°āĻžāĻĢāĻŋāĻāĻžāĻ˛ IDE āĻŦāĻž āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯ DB-āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ° āĻĨā§āĻā§, āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻāĻŽāĻ°āĻž āĻ āĻŋāĻ āĻāĻ āĻā§āĻˇāĻŽāĻ¤āĻžāĻā§āĻ˛āĻŋ āĻāĻļāĻž āĻāĻ°āĻŋāĨ¤ āĻ¯āĻžāĻ¤ā§ āĻāĻāĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻš āĻāĻāĻāĻŋ āĻāĻāĻ¨ā§āĻĄā§ āĻāĻāĻāĻž āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ§āĻž āĻāĻ¨ā§āĻāĻž āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻž (āĻŦāĻŋāĻļā§āĻˇāĻ¤ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻ§ā§āĻ° āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻ¸āĻžāĻĨā§), āĻāĻŦāĻ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§, āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ¤āĻĨā§āĻ¯āĻāĻŋ āĻ¤āĻžāĻāĻž āĻāĻŦāĻ āĻĒā§āĻ°āĻžāĻ¸āĻā§āĻāĻŋāĻ, āĻāĻŦāĻ āĻā§āĻ¯āĻžāĻļā§ āĻāĻŦāĻ°ā§āĻāĻ¨āĻž āĻ¨āĻž. āĻ¤āĻĻā§āĻĒāĻ°āĻŋ, āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¯āĻ¤ āĻŦā§āĻļāĻŋ āĻāĻāĻŋāĻ˛ āĻāĻŦāĻ āĻŦā§āĻšāĻ¤ā§āĻ¤āĻ° āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻ¤āĻ¤ āĻŦā§āĻļāĻŋ, āĻāĻāĻŋ āĻāĻ°āĻž āĻ¤āĻ¤ āĻŦā§āĻļāĻŋ āĻāĻ āĻŋāĻ¨āĨ¤
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻŽāĻŋ āĻŽāĻžāĻāĻ¸ āĻĻā§āĻ°ā§ āĻĢā§āĻ˛ā§ āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ§ā§ āĻā§āĻĄ āĻ˛āĻŋāĻāĻŋāĨ¤ āĻ§āĻ°āĻž āĻ¯āĻžāĻ āĻāĻĒāĻ¨āĻŋ "āĻāĻāĻāĻāĻ°" āĻ¸ā§āĻāĻŋāĻŽāĻžāĻ¤ā§ āĻā§āĻ¨ āĻā§āĻŦāĻŋāĻ˛ (āĻāĻŦāĻ āĻā§āĻ¨ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻ¸āĻš) āĻ°āĻ¯āĻŧā§āĻā§ āĻ¤āĻž āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ 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'
āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻĒā§āĻ°āĻļā§āĻ¨ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ¸āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ (āĻāĻŽāĻ¨āĻāĻŋ āĻŽāĻā§āĻā§āĻ¤ā§āĻ āĻāĻā§
āĻ
āĻŦāĻļā§āĻ¯āĻ, āĻāĻāĻāĻžāĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻā§āĻŦāĻ˛ āĻā§āĻŦāĻŋāĻ˛ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¨āĻ¯āĻŧ, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§ āĻ¯ā§ āĻā§āĻ¨āĻ āĻŦāĻ¸ā§āĻ¤ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻ¸āĻŽāĻ¯āĻŧā§ āĻ¸āĻŽāĻ¯āĻŧā§, āĻ¸āĻĻāĻ¯āĻŧ āĻ˛ā§āĻā§āĻ°āĻž āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ āĻāĻžāĻ¤ā§āĻ¯āĻŧ āĻā§āĻĄ āĻāĻžāĻ āĻāĻ°ā§, āĻ¯ā§āĻŽāĻ¨, āĻšāĻžāĻŦāĻ°āĻž āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻŋāĻ°āĻŋāĻā§ "āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸āĻā§āĻ˛āĻŋ āĻ¨āĻĨāĻŋāĻā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ°ā§āĻ¯āĻžāĻŦāĻ˛ā§" (
āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¨ā§āĻāĻŋāĻā§āĻ āĻāĻ°āĻžāĻ° āĻāĻŦāĻ āĻŦāĻ¸ā§āĻ¤ā§āĻā§āĻ˛āĻŋ āĻ
āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻ
āĻ¨ā§āĻ āĻŦā§āĻļāĻŋ āĻ¨āĻŽāĻ¨ā§āĻ¯āĻŧ, āĻ
āĻ¨ā§āĻ āĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻžāĻļā§āĻ°āĻ¯āĻŧ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĢāĻ°ā§āĻŽāĻāĻŋāĻ¤ā§ āĻ¸āĻ āĻŋāĻ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ¤ā§ āĻĻā§āĻ¯āĻŧ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĒā§āĻ¸ā§āĻā§ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤
āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ¸āĻā§āĻā§ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨
āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻŦāĻ¸ā§āĻ¤ā§āĻā§āĻ˛āĻŋ āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻžāĻ° āĻāĻŦāĻ āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻ¤āĻžāĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻāĻŋāĻā§ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ¸ā§āĻā§āĨ¤ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§āĻ, āĻā§āĻŦā§āĻ°ā§āĻĄ āĻĨā§āĻā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻā§āĻā§āĻ˛āĻā§āĻ˛āĻŋ āĻ¨āĻž āĻ¨āĻŋāĻ¯āĻŧā§āĻāĨ¤
āĻāĻāĻŋ āĻā§āĻ¨āĻ āĻā§āĻĒāĻ¨ āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻ¨āĻ¯āĻŧ āĻ¯ā§ āĻā§āĻŦāĻ˛ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻāĻāĻ āĻĻā§āĻāĻžāĻŦā§:
drop table hr.persons
āĻ¤āĻŦā§ āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻāĻāĻŋ āĻāĻ°āĻ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĨ¤ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¯ā§āĻā§āĻ¨ā§ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ (āĻ
āĻ¨ā§āĻ āĻ¨ā§āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻ¸āĻš) āĻāĻ āĻŦāĻž āĻ
āĻ¨ā§āĻ¯ āĻāĻāĻžāĻ°ā§ "āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ" āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻāĻ° āĻŽā§āĻ˛ āĻ
āĻāĻļāĻāĻŋ āĻāĻŽāĻ¨āĻāĻŋ āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯ āĻāĻŋāĻ¨ā§āĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ (āĻ¨āĻžāĻŽ, āĻāĻ˛āĻžāĻŽā§āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž, āĻĄā§āĻāĻž āĻāĻžāĻāĻĒ), āĻ¤āĻŦā§ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ¨āĻžāĻāĻā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻŋāĻ¨ā§āĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§ āĻ
āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻĄāĻŋāĻāĻžāĻāĻ¸ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ DBMS āĻāĻ° āĻā§āĻˇāĻŽāĻ¤āĻžāĨ¤ āĻāĻŽāĻžāĻ° āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻ˛ āĻāĻ°āĻžāĻāĻ˛ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ā§ "āĻā§āĻŦāĻŋāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨" āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° "āĻ¨āĻā§āĻ¨" BNF āĻāĻā§
āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻ āĻ¨ā§āĻ DBMS-āĻāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻ āĻŦāĻā§āĻā§āĻ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ DBMS-āĻ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ¤āĻĻā§āĻĒāĻ°āĻŋ, āĻāĻŽāĻ°āĻž āĻā§āĻŦāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ āĻŦāĻā§āĻā§āĻā§āĻ āĻ¨āĻ¯āĻŧ, āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ āĻ¨āĻŋāĻā§āĻ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž "āĻšāĻ¤ā§āĻ¯āĻž" āĻāĻ°āĻ¤ā§, āĻāĻŋāĻā§ āĻŽā§āĻŽāĻ°āĻŋ āĻāĻ˛āĻžāĻāĻž āĻāĻžāĻ˛āĻŋ āĻāĻ°āĻ¤ā§, āĻā§āĻ°ā§āĻ¸āĻŋāĻ āĻ¸āĻā§āĻˇāĻŽ āĻāĻ°āĻ¤ā§, "āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒāĻĄāĻŧāĻžāĻ°" āĻŽā§āĻĄā§ āĻ¸ā§āĻ¯ā§āĻāĻ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻāĻ°āĻ āĻ āĻ¨ā§āĻ āĻāĻŋāĻā§āĨ¤
āĻāĻŦāĻžāĻ° āĻāĻāĻā§ āĻāĻāĻāĻž āĻ¯āĻžāĻ
āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻāĻžāĻāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻšāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ āĻŦāĻā§āĻā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻĄāĻžāĻ¯āĻŧāĻžāĻā§āĻ°āĻžāĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¸ā§āĻ¨ā§āĻĻāĻ° āĻāĻŦāĻŋāĻ¤ā§ āĻŦāĻ¸ā§āĻ¤ā§ āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻāĻ¯ā§āĻāĻā§āĻ˛āĻŋ āĻĻā§āĻāĻžāĨ¤ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¯ā§āĻā§āĻ¨ā§ āĻā§āĻ°āĻžāĻĢāĻŋāĻāĻžāĻ˛ IDE, āĻāĻ˛āĻžāĻĻāĻž "āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻāĻ¨" āĻāĻāĻāĻŋāĻ˛āĻŋāĻāĻŋ, āĻŦāĻŋāĻļā§āĻˇāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻā§āĻ°āĻžāĻĢāĻŋāĻāĻžāĻ˛ āĻā§āĻ˛ āĻāĻŦāĻ āĻŽāĻĄā§āĻ˛āĻžāĻ°āĻ°āĻž āĻāĻāĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¤āĻžāĻ°āĻž āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŋāĻā§ āĻāĻāĻāĻŦā§ "āĻ¯āĻ¤āĻāĻž āĻ¤āĻžāĻ°āĻž āĻĒāĻžāĻ°ā§" āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻŦāĻž āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ā§āĻ° āĻā§āĻāĻŦāĻā§āĻ¸ā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻāĻŋāĻā§āĻāĻž āĻĒā§āĻ°āĻāĻžāĻŦāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻ¤āĻŦā§ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻāĻ°āĻ āĻ¸āĻšāĻ, āĻāĻ°āĻ āĻ¨āĻŽāĻ¨ā§āĻ¯āĻŧ āĻāĻŦāĻ āĻŽāĻžāĻ°ā§āĻāĻŋāĻ¤ āĻāĻŦāĻ āĻ āĻŦāĻļā§āĻ¯āĻ āĻā§āĻĄā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¯ā§āĻā§āĻ¨ āĻāĻāĻŋāĻ˛āĻ¤āĻžāĻ° āĻĄāĻžāĻ¯āĻŧāĻžāĻā§āĻ°āĻžāĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻŦā§āĻļ āĻāĻŋāĻā§ āĻŦāĻŋāĻļā§āĻˇāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻŽāĻžāĻ°ā§āĻāĻāĻĒ āĻāĻžāĻˇāĻž (DOT, GraphML āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ) āĻ°āĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻŦāĻŋāĻā§āĻˇāĻŋāĻĒā§āĻ¤āĻāĻ°āĻŖ (GraphViz, PlantUML, Mermaid) āĻ¯āĻž āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§ āĻĒāĻĄāĻŧāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ . āĻāĻ¯āĻŧā§āĻ˛, āĻāĻŽāĻ°āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻžāĻ¨āĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻŦāĻ¸ā§āĻ¤ā§ āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¸āĻāĻ¯ā§āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻĒā§āĻ¤ā§.
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'
āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻā§ āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§
āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻāĻāĻā§ āĻŦā§āĻļāĻŋ āĻāĻāĻŋāĻ˛
-- ШаĐŋĐēĐ°
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" āĻ, āĻ¯āĻāĻ¨ āĻāĻāĻāĻŋ āĻŦāĻĄāĻŧ āĻā§āĻāĻ°āĻž āĻŦāĻŋāĻā§āĻ°ā§āĻ¤āĻžāĻ° āĻĒāĻĄāĻžāĻāĻļāĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋ āĻāĻŦāĻžāĻ° "āĻāĻžāĻ°āĻžāĻĒ" āĻšāĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°ā§, āĻ¤āĻāĻ¨ āĻ¤āĻŋāĻ¨āĻŋ āĻ¨āĻŋāĻāĻļāĻŦā§āĻĻā§ āĻāĻ°āĻžāĻāĻ˛ āĻāĻ¨ā§āĻāĻžāĻ°āĻĒā§āĻ°āĻžāĻāĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻā§āĻ°āĻžāĻĢā§āĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻ¨āĻļāĻ āĻĒāĻžāĻ āĻŋāĻ¯āĻŧā§āĻāĻŋāĻ˛ā§āĻ¨, āĻ¯āĻžāĻ° āĻāĻĒāĻ° āĻ¤āĻŋāĻ¨āĻŋ "āĻŦā§āĻ§āĻāĻŽā§āĻ¯āĻ¤āĻžāĻ°" āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ˛āĻžāĻ˛ āĻŽāĻžāĻ°ā§āĻāĻžāĻ° āĻĻāĻŋāĻ¯āĻŧā§ āĻā§āĻ°ā§āĻ¤āĻ° āĻ¸ā§āĻĨāĻžāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻžāĻŦāĻ§āĻžāĻ¨ā§ āĻšāĻžāĻāĻ˛āĻžāĻāĻ āĻāĻ°ā§āĻāĻŋāĻ˛ā§āĻ¨ ( āĻāĻāĻŋ, āĻšāĻžāĻ˛āĻāĻžāĻāĻžāĻŦā§ āĻŦāĻ˛āĻ¤ā§ āĻā§āĻ˛ā§, āĻā§āĻŦ āĻŦā§āĻļāĻŋ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°ā§āĻ¨āĻŋ)āĨ¤ āĻāĻŦāĻ āĻāĻ "āĻĢāĻā§ āĻāĻžāĻ°ā§āĻĄ" āĻāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻŽāĻžāĻā§ āĻāĻŋāĻāĻŋāĻ¤ā§āĻ¸āĻž āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§, āĻŽā§āĻ˛ā§āĻ¯āĻŦāĻžāĻ¨ (āĻļāĻŦā§āĻĻā§āĻ° āĻāĻāĻ¯āĻŧ āĻ āĻ°ā§āĻĨā§āĻ) āĻāĻ¨ā§āĻāĻžāĻ°āĻĒā§āĻ°āĻžāĻāĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻžāĻ°ā§ āĻāĻžāĻ°āĻ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻŋāĻ˛ āĻ¨āĻž, āĻāĻžāĻ°āĻŖ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻāĻŋ āĻāĻāĻŋāĻ˛ āĻāĻŦāĻ āĻŦā§āĻ¯āĻ¯āĻŧāĻŦāĻšā§āĻ˛, āĻšāĻ āĻžā§ "āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°āĻ°āĻž āĻāĻŋāĻā§āĻ¤ā§ āĻšā§āĻāĻāĻ āĻāĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻ¸āĻŦāĻāĻŋāĻā§ āĻā§āĻā§ āĻĻā§āĻ¯āĻŧāĨ¤" āĻ āĻ¤āĻāĻŦ, āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§āĻ°āĻž "āĻ āĻāĻŋāĻā§āĻāĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§" āĻŦā§āĻ°ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ¨ āĻāĻŦāĻ āĻāĻžāĻ°āĻŖ āĻā§āĻāĻā§ āĻĒā§āĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĒā§āĻ¯āĻžāĻ āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°ā§āĻā§āĨ¤ āĻ¯āĻĻāĻŋ āĻ āĻĻā§āĻ° āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§ āĻĄāĻŋāĻŦāĻŋāĻ āĻĨā§āĻā§ āĻāĻ¯āĻŧāĻā§āĻāĻ° āĻāĻŋāĻ āĻŋ āĻ¨āĻž āĻāĻ¸ā§, āĻ¤āĻŦā§ āĻ¸āĻŦāĻžāĻ āĻ¸ā§āĻŦāĻ¸ā§āĻ¤āĻŋāĻ° āĻ¨āĻŋāĻāĻļā§āĻŦāĻžāĻ¸ āĻĢā§āĻ˛āĻŦā§ āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻāĻžāĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻĢāĻŋāĻ°ā§ āĻ¯āĻžāĻŦā§ (āĻ¨āĻ¤ā§āĻ¨ āĻāĻŋāĻ āĻŋ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤)āĨ¤
āĻ¤āĻŦā§ āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻāĻ°āĻ āĻŽāĻāĻžāĻĻāĻžāĻ° āĻāĻŦāĻ āĻŦāĻ¨ā§āĻ§ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĻāĻžāĻŦā§, āĻ¸āĻŦāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ
ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸āĻ¯ā§āĻā§āĻ¯ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻā§āĻāĨ¤ āĻ
āĻ¨ā§āĻ¤āĻ¤ āĻāĻ° āĻŽā§āĻ˛āĻŋāĻ āĻ
āĻāĻļ, āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻĒāĻ°ā§āĻ¯āĻŦā§āĻā§āĻˇāĻŖ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻ¸āĻāĻ¯ā§āĻāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§ (āĻ¯āĻž āĻ
āĻŦāĻļā§āĻ¯āĻ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻāĻŦāĻ āĻ
āĻ¨ā§āĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ
āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ¯āĻŧ)āĨ¤ āĻ¯ā§āĻā§āĻ¨ā§ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ āĻ¤āĻžāĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ
āĻŦāĻ¸ā§āĻĨāĻž āĻāĻŦāĻ āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ¤āĻĨā§āĻ¯ āĻļā§āĻ¯āĻŧāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻŦāĻžāĻ§ā§ āĻāĻŦāĻ āĻāĻā§āĻŦāĻžāĻ°ā§ āĻŦāĻŋāĻ¨āĻžāĻŽā§āĻ˛ā§āĻ¯ā§āĨ¤ āĻāĻāĻ "āĻ°āĻā§āĻ¤āĻžāĻā§āĻ¤" āĻāĻ°āĻžāĻāĻ˛ āĻĄāĻŋāĻŦāĻŋāĻ¤ā§, āĻāĻžāĻ°ā§āĻ¯āĻā§āĻˇāĻŽāĻ¤āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¯ā§āĻā§āĻ¨ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻŋāĻ āĻĨā§āĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻŦāĻ āĻ¸ā§āĻļāĻ¨ āĻĨā§āĻā§ āĻļā§āĻ°ā§ āĻāĻ°ā§ āĻŦāĻžāĻĢāĻžāĻ° āĻā§āĻ¯āĻžāĻļā§āĻ° āĻ
āĻŦāĻ¸ā§āĻĨāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ,
āĻāĻāĻāĻžāĻŦā§, āĻāĻŋāĻā§ āĻ§āĻ°āĻŖā§āĻ° āĻŽā§āĻā§āĻ°āĻŋāĻā§āĻ¸ āĻ¸āĻāĻā§āĻ°āĻžāĻšāĻ (āĻā§āĻ˛āĻŋāĻā§āĻ°āĻžāĻĢ, āĻŽā§āĻā§āĻ°āĻŋāĻāĻŦāĻŋāĻ, āĻ¸āĻāĻā§āĻšā§āĻ¤) āĻĻāĻŋāĻ¯āĻŧā§ āĻ¸āĻā§āĻāĻŋāĻ¤ āĻ¯āĻž āĻāĻžāĻ¸ā§āĻāĻŽ sql āĻĒā§āĻ°āĻļā§āĻ¨āĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻ āĻŽā§āĻā§āĻ°āĻŋāĻāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°ā§āĻ (āĻāĻ¨āĻĢā§āĻ˛āĻžāĻā§āĻ¸āĻĄāĻŋāĻŦāĻŋ, āĻāĻ˛āĻžāĻ¸ā§āĻāĻŋāĻāĻ¸āĻžāĻ°ā§āĻ, āĻāĻžāĻāĻŽāĻ¸ā§āĻā§āĻ˛āĻĄāĻŦāĻŋ) āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻŋāĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻāĻžāĻ° (āĻā§āĻ°āĻžāĻĢāĻžāĻ¨āĻž, āĻāĻŋāĻŦāĻžāĻ¨āĻž), āĻāĻĒāĻ¨āĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻ¸āĻšāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¨āĻŽāĻ¨ā§āĻ¯āĻŧ āĻŽāĻ¨āĻŋāĻāĻ°āĻŋāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¯āĻž āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ-āĻŦā§āĻ¯āĻžāĻĒā§ āĻŽā§āĻā§āĻ°āĻŋāĻā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ¨āĻŋāĻˇā§āĻ āĻāĻžāĻŦā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻšāĻŦā§ (āĻĒā§āĻ°āĻžāĻĒā§āĻ¤, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§, OS āĻĨā§āĻā§, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)āĨ¤ āĻ¯ā§āĻŽāĻ¨, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻāĻŋ pgwatch2 āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž InfluxDB + Grafana āĻ¸āĻāĻŽāĻŋāĻļā§āĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻŦāĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻŋāĻāĻ¤ā§ āĻĒā§āĻ°āĻļā§āĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻ¯āĻž āĻ
ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻŽā§āĻā§
āĻāĻŦāĻ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĻāĻŋāĻ¯āĻŧā§ āĻā§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¤āĻžāĻ° āĻāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻŽāĻžāĻ¨āĻŋāĻ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĨ¤ āĻāĻŽāĻŋ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻ°ā§ āĻ āĻ¨ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ˛āĻŋāĻā§āĻ¨. āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻā§āĻāĻžāĻŦā§ (āĻāĻŦāĻ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĻāĻžāĻŦā§ āĻā§āĻ¨) āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤āĻā§āĻ˛āĻŋāĻā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻĒāĻ°ā§āĻ° āĻŦāĻžāĻ° āĻāĻāĻŋāĻā§ āĻāĻĒāĻ¨āĻžāĻ° CI/CD āĻĒāĻžāĻāĻĒāĻ˛āĻžāĻāĻ¨ā§ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¸ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŦāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com