āĻŽāĻžāĻāĻā§āĻ°ā§āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°, āĻāĻ āĻŦāĻŋāĻļā§āĻŦā§āĻ° āĻ¸āĻŦāĻāĻŋāĻā§āĻ° āĻŽāĻ¤ā§, āĻāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻāĻŦāĻ āĻ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻŋāĻā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻšāĻ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧ, āĻ āĻ¨ā§āĻ¯āĻā§āĻ˛āĻŋ āĻāĻ°āĻ āĻāĻ āĻŋāĻ¨āĨ¤ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻ¤āĻŋ āĻāĻŦāĻ āĻāĻ°āĻ āĻāĻžāĻ˛ āĻŽāĻžāĻĒāĻ¯ā§āĻā§āĻ¯āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻā§ āĻ¤ā§āĻ¯āĻžāĻ āĻ¸ā§āĻŦā§āĻāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¤āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻšāĻ˛ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖā§āĻ° āĻā§āĻ°āĻŽāĻŦāĻ°ā§āĻ§āĻŽāĻžāĻ¨ āĻāĻāĻŋāĻ˛āĻ¤āĻžāĨ¤ āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻŽāĻ¨ā§āĻ˛āĻŋāĻĨā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨āĻžāĻ˛ āĻ ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻāĻŋāĻā§āĻ¸āĻā§ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻā§āĻ¯āĻŧā§āĻ°āĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖāĻžāĻ¤ā§āĻŽāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ¤ā§ āĻšā§āĻ°āĻžāĻ¸ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻāĻāĻŋ āĻŽāĻžāĻ˛ā§āĻāĻŋāĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧ āĻ¯ā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻ°āĻž āĻ¯āĻžāĻŦā§ āĻ¨āĻž (āĻŦāĻž āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§?)āĨ¤ āĻāĻŽāĻ°āĻž āĻā§āĻāĻžāĻŦā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ° āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨āĻžāĻ˛ āĻ ā§āĻ¯āĻžāĻ¨āĻžāĻ˛āĻŋāĻāĻŋāĻā§āĻ¸ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻā§āĻāĻžāĻŦā§ āĻāĻŽāĻ°āĻž āĻāĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻžāĻāĻāĻ¤ā§ āĻļāĻŋāĻā§āĻāĻŋ āĻ¤āĻž āĻ¨āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ°āĻž āĻāĻā§āĻ°āĻšā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ - āĻ¸ā§āĻŦāĻžāĻāĻ¤āĻŽāĨ¤
āĻāĻŽāĻžāĻ° āĻ¨āĻžāĻŽ āĻĒāĻžāĻā§āĻ˛ āĻ¸āĻŋāĻāĻžāĻļ, DomClick-āĻ āĻāĻŽāĻŋ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻĻāĻ˛ā§ āĻāĻžāĻ āĻāĻ°āĻŋ āĻ¯āĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖāĻŽā§āĻ˛āĻ āĻĄā§āĻāĻž āĻā§āĻĻāĻžāĻŽ āĻ°āĻā§āĻˇāĻŖāĻžāĻŦā§āĻā§āĻˇāĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻžāĻ¯āĻŧā§ā§ˇ āĻĒā§āĻ°āĻāĻ˛āĻŋāĻ¤āĻāĻžāĻŦā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ˛āĻžāĻĒāĻā§āĻ˛āĻŋāĻā§ āĻĄā§āĻāĻž āĻāĻā§āĻāĻŋāĻ¨āĻŋāĻ¯āĻŧāĻžāĻ°āĻŋāĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻļā§āĻ°ā§āĻŖā§āĻŦāĻĻā§āĻ§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¤āĻŦā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦā§, āĻāĻžāĻā§āĻ° āĻĒāĻ°āĻŋāĻ¸āĻ° āĻ
āĻ¨ā§āĻ āĻŦāĻŋāĻ¸ā§āĻ¤ā§āĻ¤āĨ¤ āĻĄā§āĻāĻž āĻāĻā§āĻāĻŋāĻ¨āĻŋāĻ¯āĻŧāĻžāĻ°āĻŋāĻāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ ETL/ELT āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻ°āĻ¯āĻŧā§āĻā§, āĻĄā§āĻāĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ¸āĻ°āĻā§āĻāĻžāĻŽāĻā§āĻ˛āĻŋāĻ° āĻŦāĻŋāĻāĻžāĻļā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻ°āĻā§āĻāĻžāĻŽāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻŦāĻ āĻ
āĻāĻŋāĻ¯ā§āĻāĻ¨āĨ¤ āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§, āĻ
āĻĒāĻžāĻ°ā§āĻļāĻ¨āĻžāĻ˛ āĻ°āĻŋāĻĒā§āĻ°ā§āĻāĻŋāĻāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž "āĻāĻžāĻ¨" āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻŽāĻ¨ā§āĻ˛āĻŋāĻĨ āĻāĻā§ āĻāĻŦāĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĻāĻŋāĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻžāĻ¤ā§ āĻ¤āĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄā§āĻāĻž āĻĨāĻžāĻāĻŦā§āĨ¤
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻŖāĻžāĻā§āĻ āĻāĻžāĻŖā§āĻĄāĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻŋāĻ˛ - āĻāĻŽāĻ°āĻž āĻāĻŽāĻ¨āĻāĻŋ āĻā§āĻˇā§āĻāĻžāĻ āĻāĻ°ā§āĻāĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§, āĻ¸āĻ¤ā§āĻ¯āĻŋ āĻāĻĨāĻž āĻŦāĻ˛āĻ¤ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻŦāĻ āĻāĻ¤ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĻ° āĻŦāĻ°āĻ āĻ§ā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻā§āĻ¤āĻŋāĻ¤ā§ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻāĻ¨ āĻāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĻ¨āĻŋ (āĻ¯āĻĻāĻŋ āĻā§āĻ āĻ¸āĻĢāĻ˛ āĻšāĻ¯āĻŧ , āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§ āĻ˛āĻŋāĻā§āĻ¨ āĻāĻŋāĻāĻžāĻŦā§)āĨ¤ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻāĻĻā§āĻ° āĻŦāĻ˛āĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻŋāĻ˛: "āĻŦāĻ¨ā§āĻ§ā§āĻ°āĻž, āĻĒāĻžāĻāĻĨāĻ¨ āĻļāĻŋāĻā§āĻ¨ āĻāĻŦāĻ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖāĻžāĻ¤ā§āĻŽāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋāĻ¤ā§ āĻ¯āĻžāĻ¨," āĻ¤āĻŦā§ āĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻ¤āĻž, āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸āĻŽā§āĻāĻŦ āĻšāĻ˛ā§ āĻāĻāĻŋ āĻāĻĄāĻŧāĻžāĻ¨ā§ āĻāĻāĻŋāĻ¤ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§āĨ¤ āĻāĻŽāĻ°āĻž FDW (āĻĢāĻ°ā§āĻ¨ āĻĄāĻžāĻāĻž āĻ°ā§āĻ¯āĻžāĻĒāĻžāĻ°) āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ: āĻŽā§āĻ˛āĻ¤, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻĄāĻŋāĻŦā§āĻ˛āĻŋāĻā§āĻ, āĻ¯āĻž āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄā§ āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ āĻ¨ā§āĻ āĻŦā§āĻļāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻāĻ¨āĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻāĻŋāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ, āĻ¯āĻž āĻ āĻŦāĻļā§āĻˇā§ āĻ§āĻ°āĻž āĻĒāĻĄāĻŧā§ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻāĻāĻŋāĻ¤ā§ āĻ¸ā§āĻĨāĻŋāĻ° āĻšāĻ¯āĻŧā§āĻāĻŋāĨ¤ āĻāĻ° āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧ, āĻāĻŦāĻ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻāĻžāĻ§āĻŋāĻ, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻŋ āĻ āĻ¨ā§āĻ āĻāĻŋāĻā§ āĻŦāĻ˛āĻ¤ā§ āĻāĻžāĻ: āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸ā§āĻāĻŋāĻŽāĻž āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻāĻ āĻāĻ°āĻž āĻĨā§āĻā§ āĻļā§āĻ°ā§ āĻāĻ°ā§ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ āĻĄā§āĻāĻž āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻŦāĻ āĻĄāĻŋāĻĒāĻžāĻ°āĻ¸ā§āĻ¨āĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤āĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ°āĻŋāĻāĻžāĻ°ā§āĻā§āĻļāĻ¨ āĻāĻ°āĻžāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¯ā§ āĻāĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖāĻžāĻ¤ā§āĻŽāĻ āĻĄā§āĻāĻžāĻŦā§āĻ¸ āĻāĻŦāĻ āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ¨āĻ¯āĻŧ; āĻāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°ā§āĨ¤
āĻļā§āĻ°ā§āĻˇ āĻ¸ā§āĻ¤āĻ°ā§ āĻāĻāĻŋ āĻāĻ āĻŽāĻ¤ āĻĻā§āĻāĻžāĻ¯āĻŧ:
āĻāĻāĻāĻŋ PostgreSQL āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ°āĻž āĻ¤āĻžāĻĻā§āĻ° āĻāĻžāĻā§āĻ° āĻĄā§āĻāĻž āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĻāĻžāĻŦā§, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻŖāĻžāĻ¤ā§āĻŽāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ FDW āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻĨāĻžāĻā§āĨ¤ āĻāĻāĻŋ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻāĻāĻāĻŋ āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻ˛ā§āĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻ°ā§, āĻāĻŦāĻ āĻāĻāĻŋ āĻā§ āĻ¤āĻž āĻŦāĻŋāĻŦā§āĻā§āĻ¯ āĻ¨āĻ¯āĻŧ: PostgreSQL, MySQL, MongoDB āĻŦāĻž āĻ
āĻ¨ā§āĻ¯ āĻāĻŋāĻā§ (āĻĢāĻžāĻāĻ˛, API, āĻ¯āĻĻāĻŋ āĻšāĻ āĻžā§ āĻā§āĻ¨āĻ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻŽā§āĻĄāĻŧāĻ āĻ¨āĻž āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻā§āĻ° āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨)āĨ¤ āĻāĻžāĻ˛, āĻ¸āĻŦāĻāĻŋāĻā§ āĻŽāĻšāĻžāĻ¨ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§! āĻāĻŽāĻ°āĻž āĻāĻŋ āĻŦā§āĻ°ā§āĻ āĻāĻĒ āĻāĻ°āĻāĻŋ?
āĻ¯āĻĻāĻŋ āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻ¤ āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻļā§āĻˇ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§, āĻ¸āĻŽā§āĻāĻŦāĻ¤, āĻāĻāĻāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻĨāĻžāĻāĻŦā§ āĻ¨āĻžāĨ¤
āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻā§āĻāĻžāĻŦā§ āĻ°āĻŋāĻŽā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻ āĻ¨ā§āĻ°ā§āĻ§āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°ā§ āĻ¸ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻšāĻāĻ¯āĻŧāĻž āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĨ¤ āĻāĻāĻŋ āĻ¯ā§āĻā§āĻ¤āĻŋāĻ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻ˛ā§āĻā§āĻ°āĻž āĻāĻ¤ā§ āĻŽāĻ¨ā§āĻ¯ā§āĻ āĻĻā§āĻ¯āĻŧ āĻ¨āĻž: āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻ°āĻŋāĻŽā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻ¸ā§āĻŦāĻžāĻ§ā§āĻ¨āĻāĻžāĻŦā§ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻšāĻ¯āĻŧ āĻāĻŽāĻ¨ āĻ āĻāĻļāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋāĻā§ āĻāĻžāĻ āĻāĻ°ā§, āĻāĻ āĻĄā§āĻāĻž āĻ¸āĻāĻā§āĻ°āĻš āĻāĻ°ā§ āĻāĻŦāĻ āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻāĻŖāĻ¨āĻž āĻ¨āĻŋāĻā§āĻ āĻāĻ°ā§, āĻ¤āĻžāĻ āĻā§āĻ¯āĻŧā§āĻ°āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§āĻ° āĻāĻ¤āĻŋ āĻ āĻ¨ā§āĻāĻžāĻāĻļā§ āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°āĻŦā§ āĻāĻāĻž āĻāĻŋāĻāĻžāĻŦā§ āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻāĻŋāĻ āĻ˛āĻā§āĻˇ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤: āĻ¯āĻāĻ¨ āĻā§āĻ¨āĻ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻāĻ¸ā§, āĻ¤āĻāĻ¨ āĻāĻāĻŋāĻ° āĻāĻ° āĻ¸ā§āĻāĻ āĻĨāĻžāĻā§ āĻ¨āĻž, āĻāĻŽāĻ¨ āĻāĻŋāĻā§āĻ āĻ¨ā§āĻ āĻ¯āĻž āĻļāĻŋāĻĄāĻŋāĻāĻ˛āĻžāĻ°āĻā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻŦā§, āĻ¤āĻžāĻ, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻā§āĻ°āĻžāĻ āĻ¤āĻžāĻā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻŦāĻ āĻāĻ āĻāĻŽāĻŋ āĻāĻ°ā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻ¤ā§ āĻāĻžāĻ¨ āĻ āĻŋāĻ āĻāĻŋ.
āĻāĻāĻāĻŋ āĻ¸āĻšāĻ āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸āĻā§āĻā§ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž
āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻā§āĻāĻžāĻŦā§ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ 6 āĻŽāĻŋāĻ˛āĻŋāĻ¯āĻŧāĻ¨ āĻ¸āĻžāĻ°āĻŋ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻ°ā§ āĻ¤āĻž āĻĻā§āĻāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻĻā§āĻāĻŋāĨ¤
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table;
Aggregate (cost=418383.23..418383.24 rows=1 width=8) (actual time=3857.198..3857.198 rows=1 loops=1)
Output: count(1)
-> Foreign Scan on fdw_schema."table" (cost=100.00..402376.14 rows=6402838 width=0) (actual time=4.874..3256.511 rows=6406868 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Remote SQL: SELECT NULL FROM fdw_schema.table
Planning time: 0.986 ms
Execution time: 3857.436 ms
VERBOSE āĻŦāĻŋāĻŦā§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ°āĻŋāĻŽā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻ¯ā§ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻŽāĻ°āĻž āĻāĻ°āĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ (RemoteSQL āĻ˛āĻžāĻāĻ¨) āĻĒāĻžāĻŦ āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧāĨ¤
āĻāĻ¸ā§āĻ¨ āĻāĻāĻā§ āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§ā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ¯ā§āĻ āĻāĻ°āĻŋ: āĻāĻāĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻā§āĻˇā§āĻ¤ā§āĻ°, āĻāĻāĻ¨āĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻ āĻāĻžāĻāĻŽāĻ¸ā§āĻā§āĻ¯āĻžāĻŽā§āĻĒ āĻŦā§āĻ¯āĻŦāĻ§āĻžāĻ¨ā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž jsonb.
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active is True
AND created_dt BETWEEN CURRENT_DATE - INTERVAL '7 month'
AND CURRENT_DATE - INTERVAL '6 month'
AND meta->>'source' = 'test';
Aggregate (cost=577487.69..577487.70 rows=1 width=8) (actual time=27473.818..25473.819 rows=1 loops=1)
Output: count(1)
-> Foreign Scan on fdw_schema."table" (cost=100.00..577469.21 rows=7390 width=0) (actual time=31.369..25372.466 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Filter: (("table".is_active IS TRUE) AND (("table".meta ->> 'source'::text) = 'test'::text) AND ("table".created_dt >= (('now'::cstring)::date - '7 mons'::interval)) AND ("table".created_dt <= ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)))
Rows Removed by Filter: 5046843
Remote SQL: SELECT created_dt, is_active, meta FROM fdw_schema.table
Planning time: 0.665 ms
Execution time: 27474.118 ms
āĻĒā§āĻ°āĻļā§āĻ¨āĻā§āĻ˛āĻŋ āĻ˛ā§āĻāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¯ā§ āĻŦāĻŋāĻ¨ā§āĻĻā§āĻ¤ā§ āĻŽāĻ¨ā§āĻ¯ā§āĻ āĻĻāĻŋāĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻž āĻāĻāĻžāĻ¨ā§āĻ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻ°āĻŋāĻŽā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧāĻ¨āĻŋ, āĻ¯āĻžāĻ° āĻ āĻ°ā§āĻĨ āĻšāĻ˛ āĻāĻāĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ (āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ¸āĻžāĻ°āĻŋ) āĻāĻŦāĻ āĻāĻāĻ¤ā§āĻ°ā§āĻāĻ°āĻŖ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ 6 āĻŽāĻŋāĻ˛āĻŋāĻ¯āĻŧāĻ¨ āĻ¸āĻžāĻ°āĻŋ āĻŦā§āĻ° āĻāĻ°ā§āĨ¤ āĻ¸āĻžāĻĢāĻ˛ā§āĻ¯ā§āĻ° āĻāĻžāĻŦāĻŋāĻāĻžāĻ āĻŋ āĻšāĻ˛ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻļā§āĻ¨ āĻ˛ā§āĻāĻž āĻ¯āĻžāĻ¤ā§ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻŽā§āĻļāĻŋāĻ¨ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻžāĻ°āĻŋāĻā§āĻ˛āĻŋ āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻŋāĨ¤
āĻ¯ā§ āĻāĻŋāĻā§ āĻŦā§āĻ˛āĻžāĻ¨āĻļāĻŋāĻ
āĻŦā§āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŦāĻāĻŋāĻā§āĻ āĻ¸āĻšāĻāĨ¤ āĻŽā§āĻ˛ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§, āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°ā§āĻ° āĻāĻžāĻ°āĻŖā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ is. āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋ āĻĻāĻŋāĻ¯āĻŧā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĻ¨ =, āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ:
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active = True
AND created_dt BETWEEN CURRENT_DATE - INTERVAL '7 month'
AND CURRENT_DATE - INTERVAL '6 month'
AND meta->>'source' = 'test';
Aggregate (cost=508010.14..508010.15 rows=1 width=8) (actual time=19064.314..19064.314 rows=1 loops=1)
Output: count(1)
-> Foreign Scan on fdw_schema."table" (cost=100.00..507988.44 rows=8679 width=0) (actual time=33.035..18951.278 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Filter: ((("table".meta ->> 'source'::text) = 'test'::text) AND ("table".created_dt >= (('now'::cstring)::date - '7 mons'::interval)) AND ("table".created_dt <= ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)))
Rows Removed by Filter: 3567989
Remote SQL: SELECT created_dt, meta FROM fdw_schema.table WHERE (is_active)
Planning time: 0.834 ms
Execution time: 19064.534 ms
āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻā§āĻ¨, āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻāĻŋ āĻāĻāĻāĻŋ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻĄāĻŧā§ āĻā§āĻā§ āĻāĻŦāĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĻāĻŋ 27 āĻĨā§āĻā§ 19 āĻ¸ā§āĻā§āĻ¨ā§āĻĄā§ āĻšā§āĻ°āĻžāĻ¸ āĻĒā§āĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻāĻž āĻ˛āĻā§āĻˇāĻ¨ā§āĻ¯āĻŧ āĻ¯ā§ āĻ āĻĒāĻžāĻ°ā§āĻāĻ° is āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻĨā§āĻā§ āĻāĻ˛āĻžāĻĻāĻž = āĻāĻžāĻ°āĻŖ āĻāĻāĻŋ āĻ¨āĻžāĻ˛ āĻŽāĻžāĻ¨ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻž āĻŽāĻžāĻ¨ā§ āĻ¸āĻ¤ā§āĻ¯ āĻ¨āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§ False āĻāĻŦāĻ Null āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻā§āĻĄāĻŧā§ āĻĻā§āĻŦā§, āĻ¯ā§āĻāĻžāĻ¨ā§ != āĻ¸āĻ¤ā§āĻ¯ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŽāĻŋāĻĨā§āĻ¯āĻž āĻŽāĻžāĻ¨ āĻā§āĻĄāĻŧā§ āĻ¯āĻžāĻŦā§. āĻ āĻ¤āĻāĻŦ, āĻ¯āĻāĻ¨ āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻāĻŋ āĻ¨āĻž OR āĻ āĻĒāĻžāĻ°ā§āĻāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻĻā§āĻāĻŋ āĻļāĻ°ā§āĻ¤ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, WHERE (col!= True) OR (col is null).
āĻāĻŽāĻ°āĻž āĻŦā§āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽā§āĻāĻžāĻŦāĻŋāĻ˛āĻž āĻāĻ°ā§āĻāĻŋ, āĻāĻ¸ā§āĻ¨ āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻāĨ¤ āĻāĻĒāĻžāĻ¤āĻ¤, āĻ āĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻĒā§āĻ°āĻāĻžāĻŦ āĻ¸ā§āĻŦāĻžāĻ§ā§āĻ¨āĻāĻžāĻŦā§ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻāĻŋāĻā§ āĻ¤āĻžāĻ° āĻāĻ¸āĻ˛ āĻĢāĻ°ā§āĻŽā§ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻāĨ¤
āĻāĻžāĻāĻŽāĻ¸ā§āĻā§āĻ¯āĻžāĻŽā§āĻĒāĻāĻ? hz
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ āĻ°āĻŋāĻŽā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻāĻĄāĻŧāĻŋāĻ¤ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻā§āĻāĻžāĻŦā§ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻ˛āĻŋāĻāĻ¤ā§ āĻšāĻ¯āĻŧ āĻ¤āĻž āĻ¨āĻŋāĻ¯āĻŧā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻāĻŦāĻ āĻā§āĻŦāĻ˛ āĻ¤āĻāĻ¨āĻ āĻā§āĻ¨ āĻāĻāĻŋ āĻāĻā§ āĻ¤āĻžāĻ° āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻ¨ā§āĻāĻžāĻ°āĻ¨ā§āĻā§ āĻāĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻā§āĻŦ āĻāĻŽ āĻ¤āĻĨā§āĻ¯ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§āĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ¯āĻŧ āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻ¤ā§ āĻĒā§āĻ˛āĻžāĻŽ āĻ¯ā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¤āĻžāĻ°āĻŋāĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻāĻāĻŋ āĻ§āĻžāĻā§āĻāĻž āĻĻāĻŋāĻ¯āĻŧā§ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻĄāĻŧā§ āĻ¯āĻžāĻ¯āĻŧ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¯āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻ¤āĻŋāĻļā§āĻ˛āĻāĻžāĻŦā§ āĻ¤āĻžāĻ°āĻŋāĻ āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, now() āĻŦāĻž CURRENT_DATE, āĻ¤āĻāĻ¨ āĻāĻāĻŋ āĻāĻā§ āĻ¨āĻžāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ¯ā§āĻ āĻāĻ°ā§āĻāĻŋ āĻ¯āĻžāĻ¤ā§ create_at āĻāĻ˛āĻžāĻŽā§ āĻ āĻ¤ā§āĻ¤ā§ āĻ āĻŋāĻ 1 āĻŽāĻžāĻ¸ā§āĻ° āĻĄā§āĻāĻž āĻĨāĻžāĻā§ (BETWEEN CURRENT_DATE - INTERVAL '7 āĻŽāĻžāĻ¸' āĻāĻŦāĻ CURRENT_DATE - INTERVAL '6 āĻŽāĻžāĻ¸')āĨ¤ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻŋ āĻāĻ°ā§āĻāĻŋ?
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active is True
AND created_dt >= (SELECT CURRENT_DATE::timestamptz - INTERVAL '7 month')
AND created_dt <(SELECT CURRENT_DATE::timestamptz - INTERVAL '6 month')
AND meta->>'source' = 'test';
Aggregate (cost=306875.17..306875.18 rows=1 width=8) (actual time=4789.114..4789.115 rows=1 loops=1)
Output: count(1)
InitPlan 1 (returns $0)
-> Result (cost=0.00..0.02 rows=1 width=8) (actual time=0.007..0.008 rows=1 loops=1)
Output: ((('now'::cstring)::date)::timestamp with time zone - '7 mons'::interval)
InitPlan 2 (returns $1)
-> Result (cost=0.00..0.02 rows=1 width=8) (actual time=0.002..0.002 rows=1 loops=1)
Output: ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)
-> Foreign Scan on fdw_schema."table" (cost=100.02..306874.86 rows=105 width=0) (actual time=23.475..4681.419 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Filter: (("table".is_active IS TRUE) AND (("table".meta ->> 'source'::text) = 'test'::text))
Rows Removed by Filter: 76934
Remote SQL: SELECT is_active, meta FROM fdw_schema.table WHERE ((created_dt >= $1::timestamp with time zone)) AND ((created_dt < $2::timestamp with time zone))
Planning time: 0.703 ms
Execution time: 4789.379 ms
āĻāĻŽāĻ°āĻž āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻāĻžāĻ°ā§āĻā§ āĻŦāĻ˛ā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¸āĻžāĻŦāĻā§āĻ¯āĻŧā§āĻ°āĻŋāĻ¤ā§ āĻ¤āĻžāĻ°āĻŋāĻāĻāĻŋ āĻāĻā§ āĻĨā§āĻā§ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°ā§ āĻ°ā§āĻĄāĻŋāĻŽā§āĻĄ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻāĻŋ āĻĒāĻžāĻ¸ āĻāĻ°āĻ¤ā§āĨ¤ āĻāĻŦāĻ āĻāĻ āĻāĻā§āĻāĻŋāĻ¤āĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĻāĻŋāĻ¯āĻŧā§āĻā§, āĻ āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ 6 āĻā§āĻŖ āĻĻā§āĻ°ā§āĻ¤ āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĻā§!
āĻāĻŦāĻžāĻ°, āĻāĻāĻžāĻ¨ā§ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻ āĻŦāĻ˛āĻŽā§āĻŦāĻ¨ āĻāĻ°āĻž āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ: āĻ¸āĻžāĻŦāĻā§āĻ¯āĻŧā§āĻ°āĻŋāĻ¤ā§ āĻĄā§āĻāĻž āĻāĻžāĻāĻĒ āĻ āĻŦāĻļā§āĻ¯āĻ āĻĢāĻŋāĻ˛ā§āĻĄā§āĻ° āĻŽāĻ¤āĻ āĻšāĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§āĻāĻŋāĻ¤ā§ āĻāĻŽāĻ°āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻ°āĻāĻŋ, āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻāĻžāĻ°ā§ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§āĻŦā§ āĻ¯ā§ āĻĒā§āĻ°āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻāĻŋāĻ¨ā§āĻ¨, āĻ¤āĻžāĻ āĻĒā§āĻ°āĻĨāĻŽā§ āĻ¸āĻŦāĻā§āĻ˛āĻŋ āĻĒā§āĻ¤ā§ āĻšāĻŦā§ āĻĄā§āĻāĻž āĻāĻŦāĻ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻ°ā§āĻ¨āĨ¤
āĻ¤āĻžāĻ°āĻŋāĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻāĻŋāĻā§ āĻ¤āĻžāĻ° āĻāĻ¸āĻ˛ āĻŽāĻžāĻ¨ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻāĨ¤
āĻĢā§āĻ°ā§āĻĄāĻŋ āĻŦāĻ¨āĻžāĻŽ āĻāĻ¸āĻ¨āĻŦ
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻŦā§āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ¨ āĻā§āĻˇā§āĻ¤ā§āĻ° āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻŋāĻāĻā§āĻ˛āĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§āĻā§ āĻ¯āĻĨā§āĻˇā§āĻ āĻāĻ¤āĻŋāĻļā§āĻ˛ āĻāĻ°ā§āĻā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ°āĻ āĻāĻāĻāĻŋ āĻĄā§āĻāĻž āĻāĻžāĻāĻĒ āĻŦāĻžāĻāĻŋ āĻāĻŋāĻ˛ā§ˇ āĻāĻāĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻŋāĻāĻ¯āĻŧā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻĻā§āĻ§, āĻ¸āĻ¤ā§āĻ¯āĻŋ āĻŦāĻ˛āĻ¤ā§, āĻāĻāĻ¨āĻ āĻļā§āĻˇ āĻšāĻ¯āĻŧāĻ¨āĻŋ, āĻ¯āĻĻāĻŋāĻ āĻāĻāĻžāĻ¨ā§āĻ āĻ¸āĻžāĻĢāĻ˛ā§āĻ¯ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻāĻāĻāĻžāĻŦā§ āĻāĻŽāĻ°āĻž āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻāĻŋ āĻĒāĻžāĻ¸ āĻāĻ°āĻ¤ā§ āĻĒā§āĻ°ā§āĻāĻŋ jsonb āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻā§āĻˇā§āĻ¤ā§āĻ°āĨ¤
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active is True
AND created_dt BETWEEN CURRENT_DATE - INTERVAL '7 month'
AND CURRENT_DATE - INTERVAL '6 month'
AND meta @> '{"source":"test"}'::jsonb;
Aggregate (cost=245463.60..245463.61 rows=1 width=8) (actual time=6727.589..6727.590 rows=1 loops=1)
Output: count(1)
-> Foreign Scan on fdw_schema."table" (cost=1100.00..245459.90 rows=1478 width=0) (actual time=16.213..6634.794 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Filter: (("table".is_active IS TRUE) AND ("table".created_dt >= (('now'::cstring)::date - '7 mons'::interval)) AND ("table".created_dt <= ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)))
Rows Removed by Filter: 619961
Remote SQL: SELECT created_dt, is_active FROM fdw_schema.table WHERE ((meta @> '{"source": "test"}'::jsonb))
Planning time: 0.747 ms
Execution time: 6727.815 ms
āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§, āĻāĻĒāĻ¨āĻžāĻā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻāĻāĻāĻŋ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°ā§āĻ° āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ jsonb āĻāĻāĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¨ āĻŽāĻ§ā§āĻ¯ā§ āĻŽā§āĻ˛ 7 āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ 29 āĻ¸ā§āĻā§āĻ¨ā§āĻĄāĨ¤ āĻāĻāĻ¨ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻĒā§āĻ°ā§āĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋāĻ āĻāĻāĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻĢāĻ˛ āĻŦāĻŋāĻāĻ˛ā§āĻĒ jsonb āĻāĻāĻāĻŋ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§, āĻ¤āĻŦā§ āĻāĻāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ: āĻāĻŽāĻ°āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ 9.6 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻāĻŋ, āĻ¤āĻŦā§ āĻāĻĒā§āĻ°āĻŋāĻ˛ā§āĻ° āĻļā§āĻˇā§āĻ° āĻĻāĻŋāĻā§ āĻāĻŽāĻ°āĻž āĻļā§āĻˇ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻāĻ°āĻžāĻ° āĻāĻŦāĻ 12 āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°āĻāĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻŦāĻžāĻ° āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻĒā§āĻ°āĻāĻžāĻŦāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§ āĻ¸ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻŽāĻ°āĻž āĻ˛āĻŋāĻāĻŦ, āĻāĻžāĻ°āĻŖ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ āĻ¨ā§āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻ āĻāĻļāĻž āĻ°āĻ¯āĻŧā§āĻā§: json_path, āĻ¨āĻ¤ā§āĻ¨ CTE āĻāĻāĻ°āĻŖ, push down (āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ 10 āĻĨā§āĻā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨)āĨ¤ āĻāĻŽāĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻļā§āĻā§āĻ°āĻ āĻāĻāĻŋ āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨.
āĻ¤āĻžāĻā§ āĻļā§āĻˇ āĻāĻ°
āĻāĻŽāĻ°āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§āĻāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻĒā§āĻĨāĻāĻāĻžāĻŦā§ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻāĻ¤āĻŋāĻā§ āĻĒā§āĻ°āĻāĻžāĻŦāĻŋāĻ¤ āĻāĻ°ā§āĨ¤ āĻāĻāĻ¨ āĻĻā§āĻāĻž āĻ¯āĻžāĻ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻ˛ā§āĻāĻž āĻšāĻ˛ā§ āĻāĻŋ āĻšāĻ¯āĻŧāĨ¤
explain analyze verbose
SELECT count(1)
FROM fdw_schema.table
WHERE is_active = True
AND created_dt >= (SELECT CURRENT_DATE::timestamptz - INTERVAL '7 month')
AND created_dt <(SELECT CURRENT_DATE::timestamptz - INTERVAL '6 month')
AND meta @> '{"source":"test"}'::jsonb;
Aggregate (cost=322041.51..322041.52 rows=1 width=8) (actual time=2278.867..2278.867 rows=1 loops=1)
Output: count(1)
InitPlan 1 (returns $0)
-> Result (cost=0.00..0.02 rows=1 width=8) (actual time=0.010..0.010 rows=1 loops=1)
Output: ((('now'::cstring)::date)::timestamp with time zone - '7 mons'::interval)
InitPlan 2 (returns $1)
-> Result (cost=0.00..0.02 rows=1 width=8) (actual time=0.003..0.003 rows=1 loops=1)
Output: ((('now'::cstring)::date)::timestamp with time zone - '6 mons'::interval)
-> Foreign Scan on fdw_schema."table" (cost=100.02..322041.41 rows=25 width=0) (actual time=8.597..2153.809 rows=1360025 loops=1)
Output: "table".id, "table".is_active, "table".meta, "table".created_dt
Remote SQL: SELECT NULL FROM fdw_schema.table WHERE (is_active) AND ((created_dt >= $1::timestamp with time zone)) AND ((created_dt < $2::timestamp with time zone)) AND ((meta @> '{"source": "test"}'::jsonb))
Planning time: 0.820 ms
Execution time: 2279.087 ms
āĻšā§āĻ¯āĻžāĻ, āĻ āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻĻā§āĻāĻžāĻā§āĻā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻŦāĻžāĻ§ā§āĻ¯āĻ¤āĻžāĻŽā§āĻ˛āĻ āĻĢāĻŋ, āĻ¤āĻŦā§ āĻŽā§āĻ¤ā§āĻ¯ā§āĻĻāĻ¨ā§āĻĄā§āĻ° āĻāĻ¤āĻŋ 2 āĻ¸ā§āĻā§āĻ¨ā§āĻĄ, āĻ¯āĻž 10 āĻā§āĻŖā§āĻ°āĻ āĻŦā§āĻļāĻŋ āĻĻā§āĻ°ā§āĻ¤! āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻ¤ā§āĻ˛āĻ¨āĻžāĻŽā§āĻ˛āĻāĻāĻžāĻŦā§ āĻā§āĻ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ° āĻŦāĻŋāĻ°ā§āĻĻā§āĻ§ā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒā§āĻ°āĻļā§āĻ¨ā§āĻ° āĻāĻĨāĻž āĻŦāĻ˛āĻāĻŋāĨ¤ āĻĒā§āĻ°āĻā§āĻ¤ āĻ āĻ¨ā§āĻ°ā§āĻ§ā§, āĻāĻŽāĻ°āĻž āĻāĻ¯āĻŧā§āĻāĻļ āĻā§āĻŖ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻŦā§āĻĻā§āĻ§āĻŋ āĻĒā§āĻ¯āĻŧā§āĻāĻŋāĨ¤
āĻ¸āĻāĻā§āĻˇā§āĻĒā§: āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ FDW-āĻāĻ° āĻ¸āĻžāĻĨā§ PostgreSQL āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨, āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§ āĻĻā§āĻā§āĻ¨ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻ°āĻŋāĻŽā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻĒāĻžāĻ āĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§, āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻā§āĻļāĻŋ āĻšāĻŦā§āĻ¨... āĻ āĻ¨ā§āĻ¤āĻ¤ āĻ¯āĻ¤āĻā§āĻˇāĻŖ āĻ¨āĻž āĻāĻĒāĻ¨āĻŋ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¯ā§āĻāĻĻāĻžāĻ¨ āĻāĻ°āĻā§āĻ¨āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŋ āĻ āĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻ˛ā§āĻĒāĨ¤
āĻāĻĒāĻ¨āĻžāĻ° āĻŽāĻ¨ā§āĻ¯ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ! āĻāĻŽāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻ
āĻāĻŋāĻā§āĻāĻ¤āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻĒā§āĻ°āĻļā§āĻ¨, āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻāĻŦāĻ āĻāĻ˛ā§āĻĒ āĻļā§āĻ¨āĻ¤ā§ āĻāĻžāĻāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com