PostgreSQL, ClickHouse āĻāĻŦāĻ‚ clickhousedb_fdw (PostgreSQL) āĻ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖāĻžāĻ¤ā§āĻŽāĻ• āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž

āĻāĻ‡ āĻ—āĻŦā§‡āĻˇāĻŖāĻžāĻ¯āĻŧ, āĻ†āĻŽāĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻšā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ PostgreSQL āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ ClickHouse āĻĄā§‡āĻŸāĻž āĻ‰ā§ŽāĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ•ā§€ āĻ•ā§€ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ‰āĻ¨ā§āĻ¨āĻ¤āĻŋ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ ClickHouse āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ†āĻŽāĻŋ āĻ¯ā§‡ āĻ‰ā§ŽāĻĒāĻžāĻĻāĻ¨āĻļā§€āĻ˛āĻ¤āĻžāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻĒāĻžāĻ‡ āĻ¤āĻž āĻ†āĻŽāĻŋ āĻœāĻžāĻ¨āĻŋāĨ¤ āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻĻā§‡āĻļā§€ āĻĄā§‡āĻŸāĻž āĻ°â€ā§āĻ¯āĻžāĻĒāĻžāĻ° (FDW) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ PostgreSQL āĻĨā§‡āĻ•ā§‡ ClickHouse āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻŋ āĻ¤āĻŦā§‡ āĻ•āĻŋ āĻāĻ‡ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ—ā§āĻ˛āĻŋ āĻ…āĻŦā§āĻ¯āĻžāĻšāĻ¤ āĻĨāĻžāĻ•āĻŦā§‡?

āĻ…āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻž āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻšāĻ˛ PostgreSQL v11, clickhousedb_fdw, āĻāĻŦāĻ‚ ClickHouse āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸āĨ¤ āĻļā§‡āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤, PostgreSQL v11 āĻĨā§‡āĻ•ā§‡ āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° clickhousedb_fdw āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ ClickHouse āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ°āĻžāĻ‰āĻŸ āĻ•āĻ°āĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ SQL āĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋ āĻšāĻžāĻ˛āĻžāĻŦāĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ†āĻŽāĻ°āĻž āĻĻā§‡āĻ–āĻŦ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ FDW-āĻāĻ° āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¨ā§‡āĻŸāĻŋāĻ­ PostgreSQL āĻāĻŦāĻ‚ āĻ¨ā§‡āĻŸāĻŋāĻ­ āĻ•ā§āĻ˛āĻŋāĻ•āĻšāĻžāĻ‰āĻ¸ā§‡ āĻšāĻ˛āĻŽāĻžāĻ¨ āĻāĻ•āĻ‡ āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤

āĻ•ā§āĻ˛āĻŋāĻ•āĻšāĻžāĻ‰āĻ¸ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸

ClickHouse āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•āĻ˛āĻžāĻŽāĻžāĻ° āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻŽā§āĻ¯āĻžāĻ¨ā§‡āĻœāĻŽā§‡āĻ¨ā§āĻŸ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ¯āĻž āĻĒā§āĻ°āĻĨāĻžāĻ—āĻ¤ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻšā§‡āĻ¯āĻŧā§‡ 100-1000 āĻ—ā§āĻŖ āĻĻā§āĻ°ā§āĻ¤ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ…āĻ°ā§āĻœāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻāĻ• āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡āĻ°āĻ“ āĻ•āĻŽ āĻ¸āĻŽāĻ¯āĻŧā§‡ āĻāĻ• āĻŦāĻŋāĻ˛āĻŋāĻ¯āĻŧāĻ¨ āĻ¸āĻžāĻ°āĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽāĨ¤

Clickhousedb_fdw

clickhousedb_fdw - ClickHouse āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ• āĻĄā§‡āĻŸāĻž āĻŽā§‹āĻĄāĻŧāĻ•, āĻŦāĻž FDW, Percona āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° GitHub āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ˛āĻŋāĻ™ā§āĻ• āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡.

āĻŽāĻžāĻ°ā§āĻš āĻŽāĻžāĻ¸ā§‡ āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ˛āĻ— āĻ˛āĻŋāĻ–ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° FDW āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻ°āĻ“ āĻœāĻžāĻ¨āĻžāĻ¯āĻŧ.

āĻ†āĻĒāĻ¨āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻŦā§‡āĻ¨, āĻāĻŸāĻŋ ClickHouse-āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ FDW āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻ¯āĻž PostgreSQL v11 āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻĨā§‡āĻ•ā§‡ ClickHouse āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĨā§‡āĻ•ā§‡ SELECT, āĻāĻŦāĻ‚ INSERT INTO-āĻāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧāĨ¤

FDW āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°ā§‡ āĻ¯ā§‡āĻŽāĻ¨ āĻ¸āĻŽāĻˇā§āĻŸāĻŋ āĻāĻŦāĻ‚ āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨āĨ¤ āĻāĻ‡ āĻ¸āĻŽā§āĻĒāĻĻ-āĻ¨āĻŋāĻŦāĻŋāĻĄāĻŧ āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ˛āĻžāĻĒāĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ°āĻŋāĻŽā§‹āĻŸ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡āĻ° āĻ¸āĻ‚āĻ¸ā§āĻĨāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻŸāĻŋ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯āĻ­āĻžāĻŦā§‡ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°ā§‡āĨ¤

āĻŦā§‡āĻžā§āĻšāĻŽāĻžāĻ°ā§āĻ• āĻĒāĻ°āĻŋāĻŦā§‡āĻļ

  • āĻ¸ā§āĻĒāĻžāĻ°āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°:
    • IntelÂŽ XeonÂŽ CPU E5-2683 v3 @ 2.00GHz
    • 2 āĻ¸āĻ•ā§‡āĻŸ / 28 āĻ•ā§‹āĻ° / 56 āĻĨā§āĻ°ā§‡āĻĄ
    • āĻŽā§‡āĻŽā§‹āĻ°āĻŋ: āĻ°â€Œā§āĻ¯āĻžāĻŽā§‡āĻ° 256 āĻœāĻŋāĻŦāĻŋ
    • āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ: Samsung SM863 1.9TB Enterprise SSD
    • āĻĢāĻžāĻ‡āĻ˛ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ: ext4/xfs
  • OS: Linux smblade01 4.15.0-42-generic #45~16.04.1-Ubuntu
  • PostgreSQL: āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ 11

āĻŦā§‡āĻžā§āĻšāĻŽāĻžāĻ°ā§āĻ• āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž

āĻāĻ‡ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§ āĻŽā§‡āĻļāĻŋāĻ¨-āĻœā§‡āĻ¨āĻžāĻ°ā§‡āĻŸā§‡āĻĄ āĻĄā§‡āĻŸāĻž āĻ¸ā§‡āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, āĻ†āĻŽāĻ°āĻž 1987 āĻĨā§‡āĻ•ā§‡ 2018 āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ "āĻŸāĻžāĻ‡āĻŽ āĻ°āĻŋāĻĒā§‹āĻ°ā§āĻŸāĻĄ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻ° āĻŸāĻžāĻ‡āĻŽ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ‰āĻ¤ā§āĻĒāĻžāĻĻāĻ¨āĻļā§€āĻ˛āĻ¤āĻž" āĻĄā§‡āĻŸāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻĄā§‡āĻŸāĻž āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻ–āĻžāĻ¨ā§‡ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡.

āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻ†āĻ•āĻžāĻ° 85 GB, 109 āĻ•āĻ˛āĻžāĻŽā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤

āĻŦā§‡āĻžā§āĻšāĻŽāĻžāĻ°ā§āĻ• āĻĒā§āĻ°āĻļā§āĻ¨

āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻŋ āĻ•ā§āĻ˛āĻŋāĻ•āĻšāĻžāĻ‰āĻ¸, clickhousedb_fdw āĻāĻŦāĻ‚ PostgreSQL āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻĒā§āĻ°āĻļā§āĻ¨āĻ—ā§āĻ˛āĻŋāĨ¤

Q#
āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻ¸āĻŽāĻˇā§āĻŸāĻŋ āĻāĻŦāĻ‚ āĻ—ā§āĻ°ā§āĻĒ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡

Q1
āĻ¸āĻĒā§āĻ¤āĻžāĻšā§‡āĻ° āĻĻāĻŋāĻ¨ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻ¯āĻĨāĻžāĻ¸āĻŽāĻ¯āĻŧ āĻĨā§‡āĻ•ā§‡ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§āĻ¨(*)

Q2
āĻ¸āĻĒā§āĻ¤āĻžāĻšā§‡āĻ° āĻĻāĻŋāĻ¨ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻ…āĻ¨āĻŸāĻžāĻ‡āĻŽ āĻĨā§‡āĻ•ā§‡ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§āĻ¨(*)

Q3
āĻ…āĻ°āĻŋāĻœāĻŋāĻ¨ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§āĻ¨

Q4
āĻ•ā§āĻ¯āĻžāĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻ—āĻŖāĻ¨āĻž() āĻ…āĻ¨āĻŸāĻžāĻ‡āĻŽ āĻĨā§‡āĻ•ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻŦāĻŋāĻ˛āĻŽā§āĻŦ> 10 āĻāĻŦāĻ‚ āĻŦāĻ›āĻ° = 2007 āĻ—ā§āĻ°ā§āĻĒ āĻŦāĻžāĻšāĻ• āĻĻā§āĻŦāĻžāĻ°āĻž āĻ—āĻŖāĻ¨āĻž āĻ…āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻ…āĻ°ā§āĻĄāĻžāĻ° () DESC;

Q5
āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨ a. āĻ•ā§āĻ¯āĻžāĻ°āĻŋāĻ¯āĻŧāĻžāĻ°, c, c2, c1000/c2 āĻĨā§‡āĻ•ā§‡ c3 āĻšāĻŋāĻ¸āĻžāĻŦā§‡ ( āĻ•ā§āĻ¯āĻžāĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻ—āĻŖāĻ¨āĻž () āĻ¸āĻŋ āĻ…āĻ¨āĻŸāĻžāĻ‡āĻŽ āĻĨā§‡āĻ•ā§‡ āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ DepDelay>10 āĻāĻŦāĻ‚ āĻŦāĻ›āĻ° = 2007 āĻ•ā§‡āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ—ā§āĻ°ā§āĻĒ C2 DESC āĻĻā§āĻŦāĻžāĻ°āĻž;

Q6
āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨ a. āĻ•ā§āĻ¯āĻžāĻ°āĻŋāĻ¯āĻŧāĻžāĻ°, c, c2, c1000/c2 āĻĨā§‡āĻ•ā§‡ c3 āĻšāĻŋāĻ¸āĻžāĻŦā§‡ ( āĻ•ā§āĻ¯āĻžāĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻ—āĻŖāĻ¨āĻž () āĻ¸āĻŋ āĻ…āĻ¨āĻŸāĻžāĻ‡āĻŽ āĻĨā§‡āĻ•ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻŦāĻŋāĻ˛āĻŽā§āĻŦ> 10 āĻāĻŦāĻ‚ āĻŦāĻ›āĻ° >= 2000 āĻāĻŦāĻ‚ āĻŦāĻ›āĻ° <= āĻ•ā§āĻ¯āĻžāĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž 2008 āĻ—ā§āĻ°ā§āĻĒ) āĻāĻ•āĻŸāĻŋ āĻ…āĻ­ā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§€āĻŖ āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨ (āĻ•ā§āĻ¯āĻžāĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§āĻ¨ āĻ•ā§āĻ¯āĻžāĻ°āĻŋāĻ¯āĻŧāĻžāĻ° ) b on a. Carrier=b. Carrier ORDER BY c2 DESC;

Q7
āĻ•ā§āĻ¯āĻžāĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, avg(DepDelay) * 1000 AS c3 āĻĨā§‡āĻ•ā§‡ ontime āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻŦāĻ›āĻ° >= 2000 āĻāĻŦāĻ‚ āĻŦāĻ›āĻ° <= āĻ•ā§āĻ¯āĻžāĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž 2008 āĻ—ā§āĻ°ā§āĻĒ;

Q8
āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨ āĻŦāĻ›āĻ°, āĻ—āĻĄāĻŧ (DepDelay) āĻ…āĻ¨āĻŸāĻžāĻ‡āĻŽ āĻĨā§‡āĻ•ā§‡ āĻŦāĻ›āĻ° āĻ…āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻ—ā§āĻ°ā§āĻĒ;

Q9
āĻŦāĻ›āĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻŦāĻ›āĻ° āĻ…āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻ…āĻ¨āĻŸāĻžāĻ‡āĻŽ āĻ—ā§āĻ°ā§āĻĒ āĻĨā§‡āĻ•ā§‡ c1 āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§āĻ¨;

Q10
āĻĨā§‡āĻ•ā§‡ avg(cnt) āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨ (āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻŦāĻ›āĻ°,āĻŽāĻžāĻ¸,āĻ—āĻŖāĻ¨āĻž (*) cnt āĻšāĻŋāĻ¸āĻžāĻŦā§‡ ontime āĻĨā§‡āĻ•ā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ DepDel15=1 āĻŦāĻ›āĻ°, āĻŽāĻžāĻ¸ āĻ…āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻ—ā§āĻ°ā§āĻĒ) a;

Q11
āĻĨā§‡āĻ•ā§‡ avg(c1) āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨ (āĻŦāĻ›āĻ°,āĻŽāĻžāĻ¸,āĻ…āĻ¨āĻŸāĻžāĻ‡āĻŽ āĻ—ā§āĻ°ā§āĻĒ āĻĨā§‡āĻ•ā§‡ c1 āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦāĻ›āĻ°,āĻŽāĻžāĻ¸ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨) a;

Q12
OriginCityName, DestCityName, āĻ—āĻŖāĻ¨āĻž (*) āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨

Q13
OriginCityName āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§āĻ¨

āĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋāĻ¤ā§‡ āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡

Q14
āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨ a.Year, c1/c2 FROM ( āĻŦāĻ›āĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻ—āĻŖāĻ¨āĻž()āĻ…āĻ¨āĻŸāĻžāĻ‡āĻŽ āĻĨā§‡āĻ•ā§‡ c1000 āĻšāĻŋāĻ¸āĻžāĻŦā§‡ 1 āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ DepDelay>āĻŦāĻ›āĻ° āĻ…āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ 10 āĻ—ā§āĻ°ā§āĻĒ) āĻāĻ•āĻŸāĻŋ āĻ…āĻ­ā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§€āĻŖ āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨ (āĻŦāĻ›āĻ° āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§āĻ¨ (*) āĻ…āĻ¨āĻŸāĻžāĻ‡āĻŽ āĻ—ā§āĻ°ā§āĻĒ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻŋ2 āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦāĻ›āĻ° āĻ…āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ ) b on a.Year=b.Year ORDER BY a.Year;

Q15
āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨ a."āĻŦāĻ°ā§āĻˇ", c1/c2 āĻĨā§‡āĻ•ā§‡ ("āĻŦāĻ›āĻ°" āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§āĻ¨()1000 āĻĢāĻ¨ā§āĻŸāĻŸāĻžāĻ‡āĻŽ āĻĨā§‡āĻ•ā§‡ c1 āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ “DepDelay”>10 āĻ—ā§āĻ°ā§āĻĒ āĻĻā§āĻŦāĻžāĻ°āĻž “āĻŦāĻ›āĻ°â€) āĻāĻ•āĻŸāĻŋ āĻ…āĻ­ā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§€āĻŖ āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨ ("āĻŦāĻ›āĻ°" āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻšāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°ā§āĻ¨ (*) āĻĢāĻ¨ā§āĻŸāĻŸāĻžāĻ‡āĻŽ āĻ—ā§āĻ°ā§āĻĒ āĻĨā§‡āĻ•ā§‡ "āĻŦāĻ›āĻ°" āĻĻā§āĻŦāĻžāĻ°āĻž c2 āĻšāĻŋāĻ¸āĻžāĻŦā§‡ ) b āĻ¤ā§‡ a.”Year”=bāĨ¤ "āĻŦāĻ›āĻ°";

āĻ¸āĻžāĻ°āĻŖāĻŋ-ā§§: āĻŦā§‡āĻžā§āĻšāĻŽāĻžāĻ°ā§āĻ•ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻĒā§āĻ°āĻļā§āĻ¨

āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŽā§ƒāĻ¤ā§āĻ¯ā§āĻĻāĻ¨ā§āĻĄ

āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻ–āĻžāĻ¨ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: PostgreSQL āĻ‡āĻ¨āĻĄā§‡āĻ•ā§āĻ¸ āĻ¸āĻš āĻāĻŦāĻ‚ āĻ›āĻžāĻĄāĻŧāĻž, āĻ¨ā§‡āĻŸāĻŋāĻ­ ClickHouse āĻāĻŦāĻ‚ clickhousedb_fdwāĨ¤ āĻ¸āĻŽāĻ¯āĻŧ āĻŽāĻŋāĻ˛āĻŋāĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧāĨ¤

Q#
āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°āĻŋ
PostgreSQL (āĻ¸ā§‚āĻšāĻŋāĻŦāĻĻā§āĻ§)
āĻ•ā§āĻ˛āĻŋāĻ•āĻšāĻžāĻ‰āĻ¸
clickhousedb_fdw

Q1
27920
19634
23
57

Q2
35124
17301
50
80

Q3
34046
15618
67
115

Q4
31632
7667
25
37

Q5
47220
8976
27
60

Q6
58233
24368
55
153

Q7
30566
13256
52
91

Q8
38309
60511
112
179

Q9
20674
37979
31
81

Q10
34990
20102
56
148

Q11
30489
51658
37
155

Q12
39357
33742
186
1333

Q13
29912
30709
101
384

Q14
54126
39913
124
1364212

Q15
97258
30211
245
259

āĻ¸āĻžāĻ°āĻŖāĻŋ-1: āĻŦā§‡āĻžā§āĻšāĻŽāĻžāĻ°ā§āĻ•ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻĒā§āĻ°āĻļā§āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻ—ā§‡

āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĻā§‡āĻ–ā§āĻ¨

āĻ—ā§āĻ°āĻžāĻĢāĻŸāĻŋ āĻŽāĻŋāĻ˛āĻŋāĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ, X āĻ…āĻ•ā§āĻˇāĻŸāĻŋ āĻ‰āĻĒāĻ°ā§‡āĻ° āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĨā§‡āĻ•ā§‡ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻ¨āĻŽā§āĻŦāĻ° āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ Y āĻ…āĻ•ā§āĻˇāĻŸāĻŋ āĻŽāĻŋāĻ˛āĻŋāĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ āĻāĻ•ā§āĻ¸āĻŋāĻ•āĻŋāĻ‰āĻļāĻ¨ āĻ¸āĻŽāĻ¯āĻŧ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧāĨ¤ Clickhousedb_fdw āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻ•āĻ°āĻž āĻ•ā§āĻ˛āĻŋāĻ•āĻšāĻžāĻ‰āĻ¸ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĨā§‡āĻ•ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›ā§‡āĻ¨ āĻ¯ā§‡ PostgreSQL āĻāĻŦāĻ‚ ClickHouse āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦāĻŋāĻļāĻžāĻ˛ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ ClickHouse āĻāĻŦāĻ‚ clickhousedb_fdw āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯āĨ¤

PostgreSQL, ClickHouse āĻāĻŦāĻ‚ clickhousedb_fdw (PostgreSQL) āĻ āĻŦāĻŋāĻļā§āĻ˛ā§‡āĻˇāĻŖāĻžāĻ¤ā§āĻŽāĻ• āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž

āĻāĻ‡ āĻ—ā§āĻ°āĻžāĻĢāĻŸāĻŋ ClickhouseDB āĻāĻŦāĻ‚ clickhousedb_fdw āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āĻ¯ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧāĨ¤ āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, FDW āĻ“āĻ­āĻžāĻ°āĻšā§‡āĻĄ āĻ¤āĻ¤ āĻŦā§‡āĻļāĻŋ āĻ¨āĻ¯āĻŧ āĻāĻŦāĻ‚ Q12 āĻŦā§āĻ¯āĻ¤ā§€āĻ¤ āĻ–ā§āĻŦ āĻ•āĻŽāĻ‡ āĻ¤āĻžā§ŽāĻĒāĻ°ā§āĻ¯āĻĒā§‚āĻ°ā§āĻŖāĨ¤ āĻāĻ‡ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€āĻ¤ā§‡ āĻ¯ā§‹āĻ—āĻĻāĻžāĻ¨ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ ORDER BY āĻ§āĻžāĻ°āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ ORDER BY GROUP/BY āĻ§āĻžāĻ°āĻžāĻ° āĻ•āĻžāĻ°āĻŖā§‡, ORDER BY āĻ•ā§āĻ˛āĻŋāĻ• āĻšāĻžāĻ‰āĻ¸ā§‡ āĻ¨ā§‡āĻŽā§‡ āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤

āĻ¸āĻžāĻ°āĻŖāĻŋ 2-āĻ āĻ†āĻŽāĻ°āĻž Q12 āĻāĻŦāĻ‚ Q13 āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻĢāĻžāĻ¨ā§‹ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ‡āĨ¤ āĻ†āĻŦāĻžāĻ°, āĻāĻŸāĻŋ ORDER BY āĻ§āĻžāĻ°āĻžāĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻšāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻŽāĻŋ ORDER BY āĻ§āĻžāĻ°āĻž āĻ¸āĻš āĻāĻŦāĻ‚ āĻ›āĻžāĻĄāĻŧāĻž Q-14 āĻāĻŦāĻ‚ Q-15 āĻĒā§āĻ°āĻļā§āĻ¨āĻ—ā§āĻ˛āĻŋ āĻšāĻžāĻ˛āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĨ¤ ORDER BY āĻ•ā§āĻ˛āĻœ āĻŦā§āĻ¯āĻ¤ā§€āĻ¤ āĻ¸āĻŽāĻžāĻĒā§āĻ¤āĻŋāĻ° āĻ¸āĻŽāĻ¯āĻŧ 259ms āĻāĻŦāĻ‚ ORDER BY āĻ§āĻžāĻ°āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻŸāĻŋ 1364212āĨ¤ āĻāĻ‡ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€āĻŸāĻŋ āĻĄāĻŋāĻŦāĻžāĻ— āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻŋ āĻ‰āĻ­āĻ¯āĻŧ āĻĒā§āĻ°āĻļā§āĻ¨āĻ‡ āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž āĻ•āĻ°āĻ›āĻŋ āĻāĻŦāĻ‚ āĻāĻ–āĻžāĻ¨ā§‡ āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻĒā§āĻ°āĻļā§āĻ¨ 15: āĻ§āĻžāĻ°āĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻ†āĻĻā§‡āĻļ āĻ›āĻžāĻĄāĻŧāĻž

bm=# EXPLAIN VERBOSE SELECT a."Year", c1/c2 
     FROM (SELECT "Year", count(*)*1000 AS c1 FROM fontime WHERE "DepDelay" > 10 GROUP BY "Year") a
     INNER JOIN(SELECT "Year", count(*) AS c2 FROM fontime GROUP BY "Year") b ON a."Year"=b."Year";

āĻĒā§āĻ°āĻļā§āĻ¨ 15: āĻ§āĻžāĻ°āĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻ†āĻĻā§‡āĻļ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻĒā§āĻ°āĻļā§āĻ¨

QUERY PLAN                                                      
Hash Join  (cost=2250.00..128516.06 rows=50000000 width=12)  
Output: fontime."Year", (((count(*) * 1000)) / b.c2)  
Inner Unique: true   Hash Cond: (fontime."Year" = b."Year")  
->  Foreign Scan  (cost=1.00..-1.00 rows=100000 width=12)        
Output: fontime."Year", ((count(*) * 1000))        
Relations: Aggregate on (fontime)        
Remote SQL: SELECT "Year", (count(*) * 1000) FROM "default".ontime WHERE (("DepDelay" > 10)) GROUP BY "Year"  
->  Hash  (cost=999.00..999.00 rows=100000 width=12)        
Output: b.c2, b."Year"        
->  Subquery Scan on b  (cost=1.00..999.00 rows=100000 width=12)              
Output: b.c2, b."Year"              
->  Foreign Scan  (cost=1.00..-1.00 rows=100000 width=12)                    
Output: fontime_1."Year", (count(*))                    
Relations: Aggregate on (fontime)                    
Remote SQL: SELECT "Year", count(*) FROM "default".ontime GROUP BY "Year"(16 rows)

āĻĒā§āĻ°āĻļā§āĻ¨ 14: āĻ§āĻžāĻ°āĻž āĻĻā§āĻŦāĻžāĻ°āĻž ORDER āĻ¸āĻš āĻĒā§āĻ°āĻļā§āĻ¨

bm=# EXPLAIN VERBOSE SELECT a."Year", c1/c2 FROM(SELECT "Year", count(*)*1000 AS c1 FROM fontime WHERE "DepDelay" > 10 GROUP BY "Year") a 
     INNER JOIN(SELECT "Year", count(*) as c2 FROM fontime GROUP BY "Year") b  ON a."Year"= b."Year" 
     ORDER BY a."Year";

āĻĒā§āĻ°āĻļā§āĻ¨ 14: ORDER BY āĻ•ā§āĻ˛āĻœ āĻ¸āĻš āĻ•ā§‹āĻ¯āĻŧā§‡āĻ°āĻŋ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻ¨

QUERY PLAN 
Merge Join  (cost=2.00..628498.02 rows=50000000 width=12)   
Output: fontime."Year", (((count(*) * 1000)) / (count(*)))   
Inner Unique: true   Merge Cond: (fontime."Year" = fontime_1."Year")   
->  GroupAggregate  (cost=1.00..499.01 rows=1 width=12)        
Output: fontime."Year", (count(*) * 1000)         
Group Key: fontime."Year"         
->  Foreign Scan on public.fontime  (cost=1.00..-1.00 rows=100000 width=4)               
Remote SQL: SELECT "Year" FROM "default".ontime WHERE (("DepDelay" > 10)) 
            ORDER BY "Year" ASC   
->  GroupAggregate  (cost=1.00..499.01 rows=1 width=12)         
Output: fontime_1."Year", count(*)         Group Key: fontime_1."Year"         
->  Foreign Scan on public.fontime fontime_1  (cost=1.00..-1.00 rows=100000 width=4) 
              
Remote SQL: SELECT "Year" FROM "default".ontime ORDER BY "Year" ASC(16 rows)

āĻ‰āĻĒāĻ¸āĻ‚āĻšāĻžāĻ°

āĻāĻ‡ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛āĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ āĻ¯ā§‡ ClickHouse āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ‡ āĻ­āĻžāĻ˛ āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡, āĻāĻŦāĻ‚ clickhousedb_fdw PostgreSQL āĻĨā§‡āĻ•ā§‡ ClickHouse-āĻāĻ° āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤ clickhousedb_fdw āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ•āĻŋāĻ›ā§ āĻ“āĻ­āĻžāĻ°āĻšā§‡āĻĄ āĻĨāĻžāĻ•āĻ˛ā§‡āĻ“, āĻāĻŸāĻŋ āĻ•ā§āĻ˛āĻŋāĻ•āĻšāĻžāĻ‰āĻ¸ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ¨ā§‡āĻŸāĻŋāĻ­āĻ­āĻžāĻŦā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ…āĻ°ā§āĻœāĻŋāĻ¤ āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¨āĻ—āĻŖā§āĻ¯ āĻāĻŦāĻ‚ āĻ¤ā§āĻ˛āĻ¨ā§€āĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻ¯ā§‡ PostgreSQL-āĻ fdw āĻšāĻŽā§ŽāĻ•āĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤

Clickhouse āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻŸā§‡āĻ˛āĻŋāĻ—ā§āĻ°āĻžāĻŽ āĻšā§āĻ¯āĻžāĻŸ https://t.me/clickhouse_ru
PostgreSQL āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻŸā§‡āĻ˛āĻŋāĻ—ā§āĻ°āĻžāĻŽ āĻšā§āĻ¯āĻžāĻŸ https://t.me/pgsql

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨