āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻāĻžāĻŦā§ āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻāĻ°ā§ āĻ¯ā§ āĻāĻŋāĻāĻžāĻŦā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ¯āĻŧ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻā§āĻ˛āĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĻŋ āĻāĻžāĻĄāĻŧāĻžāĻ āĻŽā§āĻ¤āĻžāĻ¯āĻŧā§āĻ¨ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻā§ āĻāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¤āĻž āĻāĻŽāĻ°āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻŦāĻ˛āĻŦā§ˇ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻŽāĻ°āĻž āĻļā§āĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ (āĻĒā§āĻ°āĻžāĻ¯āĻŧ. āĻ˛ā§āĻ¨: āĻāĻ°āĻ - āĻļā§āĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ) āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ˛āĻžāĻĒā§āĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻšāĻŦā§ āĻĒāĻŋāĻāĻ¨ā§āĻ°-āĻ āĻ¸āĻā§āĻāĻ¤āĻŋāĻĒā§āĻ°ā§āĻŖ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻāĻŋ āĻĒāĻŋāĻāĻ¨ā§āĻ°-āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻžāĨ¤
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻĨā§āĻā§ āĻā§āĻĄ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŦā§āĻāĻ¤ā§ āĻāĻžāĻ¨, āĻāĻĒāĻ¨āĻŋ āĻ¤āĻžāĻĻā§āĻ° āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻā§āĻŽāĻŋāĻāĻž
āĻļā§āĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž
āĻāĻŋ āĻāĻāĻāĻŋ āĻ°āĻšāĻ¸ā§āĻ¯āĻŽāĻ¯āĻŧ āĻļā§āĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž? āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋ āĻŦāĻ˛āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯āĻāĻ¨ āĻāĻĒāĻ¨āĻžāĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻāĻŽāĻ¨āĻāĻžāĻŦā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻžāĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻ¸āĻĢāĻ˛āĻāĻžāĻŦā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ā§ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¯āĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻāĻāĻŋāĻ° āĻ āĻ¨ā§āĻĒāĻ˛āĻŦā§āĻ§āĻ¤āĻž āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°ā§āĻ¨ āĻ¨āĻžāĨ¤ āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻāĻŦāĻ āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ° āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§, āĻāĻāĻŋ āĻ¸āĻ°ā§āĻŦā§āĻ¤ā§āĻ¤āĻŽ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻĻā§āĻļā§āĻ¯ āĻāĻžāĻ°āĻŖ āĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻŦāĻžāĻāĻā§āĻ˛āĻŋāĻā§ āĻŦāĻŋāĻā§āĻ¨ āĻāĻžāĻĄāĻŧāĻžāĻ āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧā§ˇ
āĻāĻ āĻ āĻ°ā§āĻāĻ¨ āĻāĻŋāĻāĻžāĻŦā§? āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻĒāĻžāĻ¯āĻŧ āĻāĻā§, āĻāĻāĻžāĻ¨ā§ āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ:
- āĻāĻĒāĻ¨āĻžāĻ° āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¨āĻ 1 āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĻ¨
- āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻŽāĻžāĻāĻā§āĻ°ā§āĻļāĻ¨ āĻ¸āĻā§āĻāĻžāĻ˛āĻ¨
- āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ #2 āĻāĻ° āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ #1 āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĻ¨
- āĻ¯āĻ¤ āĻ¤āĻžāĻĄāĻŧāĻžāĻ¤āĻžāĻĄāĻŧāĻŋ āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻŦā§āĻ¨ āĻ¯ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¨āĻ 2 āĻāĻāĻŋāĻ° āĻŽāĻ¤ā§ āĻāĻžāĻ āĻāĻ°ā§, āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¨āĻ 1 āĻ¸āĻ°āĻŋāĻ¯āĻŧā§ āĻĻāĻŋāĻ¨
- āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨!
āĻ¸āĻšāĻ, āĻ¤āĻžāĻ āĻ¨āĻž? āĻĻā§āĻ°ā§āĻāĻžāĻā§āĻ¯āĻŦāĻļāĻ¤, āĻāĻāĻŋ āĻāĻ¤ āĻ¸āĻšāĻ āĻ¨āĻ¯āĻŧ, āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻĒāĻ°ā§ āĻāĻāĻŋ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤āĻāĻžāĻŦā§ āĻĻā§āĻāĻŦāĨ¤ āĻāĻāĻ¨ āĻāĻ°ā§āĻāĻāĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻ¯āĻžāĻ - āĻ¨ā§āĻ˛ āĻ¸āĻŦā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĨ¤
āĻāĻĒāĻ¨āĻŋ āĻāĻŋ āĻāĻāĻ¨āĻ āĻļā§āĻ¨ā§āĻā§āĻ¨?
- āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§āĻ¨ āĻ¯ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨ āĻā§āĻĄā§āĻ° āĻĻā§āĻāĻŋ āĻāĻĒāĻŋ ("āĻ¨ā§āĻ˛" āĻāĻŦāĻ "āĻ¸āĻŦā§āĻ") āĻāĻžāĻ āĻāĻ°āĻā§;
- āĻ¨ā§āĻ˛ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻ°āĻžāĻĢāĻŋāĻāĻā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§āĻ¨, āĻ¯ā§āĻŽāĻ¨ āĻ¯āĻžāĻ¤ā§ āĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨ āĻāĻāĻāĻ°āĻāĻ˛ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§;
- āĻāĻāĻāĻŋ āĻ¸āĻŦā§āĻ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§āĻ¨;
- āĻāĻāĻāĻ°āĻāĻ˛āĻā§ āĻ¨ā§āĻ˛ āĻĨā§āĻā§ āĻ¸āĻŦā§āĻ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻ¸ā§āĻ¯ā§āĻāĻ āĻāĻ°ā§āĻ¨
āĻŦā§āĻ˛ā§ āĻā§āĻ°āĻŋāĻ¨ āĻĄāĻŋāĻĒā§āĻ˛ā§āĻ¯āĻŧāĻŽā§āĻ¨ā§āĻ āĻšāĻ˛ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻĒāĻ¨ā§āĻĨāĻž āĻ¯āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻĒā§āĻ°ā§āĻĄāĻžāĻāĻļāĻ¨ āĻŦā§āĻ°ā§āĻāĻŋāĻ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻŋāĻ¨ā§āĻ¤āĻž āĻ¨āĻž āĻāĻ°ā§ āĻ¸āĻšāĻā§āĻ āĻ¨āĻ¤ā§āĻ¨ āĻĢāĻŋāĻāĻžāĻ° āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻāĻŋ āĻāĻ āĻāĻžāĻ°āĻŖā§ āĻ¯ā§ āĻāĻŋāĻā§ āĻāĻāĻ˛ā§āĻ, āĻāĻĒāĻ¨āĻŋ āĻ¸āĻšāĻā§ "āĻāĻāĻāĻŋ āĻ¸ā§āĻāĻ āĻĢā§āĻ˛āĻŋāĻ āĻāĻ°ā§" āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻĢāĻŋāĻ°ā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻĒāĻ°ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤āĻāĻŋ āĻĒāĻĄāĻŧāĻžāĻ° āĻĒāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨: āĻ¨ā§āĻ˛ āĻ¸āĻŦā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻļā§āĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽā§āĻ° āĻā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ āĻāĻā§?
āĻ āĻŋāĻ āĻāĻā§, āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ
āĻ¨ā§āĻ āĻŽāĻŋāĻ˛ āĻ°āĻ¯āĻŧā§āĻā§, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻ āĻĒāĻ°āĻŋāĻŦā§āĻļā§āĻ° āĻĻā§āĻāĻŋ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻāĻ¤ā§ āĻ¤āĻžāĻĻā§āĻ° āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĻā§āĻŦāĻŋāĻā§āĻŖ āĻĒā§āĻ°āĻā§āĻˇā§āĻāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻ āĻāĻžāĻ°āĻŖā§ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĻāĻ˛ āĻĻāĻžāĻŦāĻŋ āĻāĻ°ā§āĻā§
āĻāĻ°ā§āĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻšāĻ˛ āĻāĻāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž, āĻāĻ¯āĻŧā§āĻŦ āĻāĻŦāĻ āĻĄā§āĻŽā§āĻ¨ āĻ¸ā§āĻ¤āĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨ā§āĻ˛-āĻ¸āĻŦā§āĻ āĻ¸ā§āĻāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĨ¤ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§, āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§ āĻ¯āĻāĻ¨ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ° āĻ¸ā§āĻāĻŋāĻŽāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻŦāĻ āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻāĻ¸āĻž. āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ°. āĻāĻ¸ā§āĻ¨ āĻāĻ āĻŦāĻžāĻā§āĻ¯āĻžāĻāĻļāĻāĻŋ āĻāĻ°ā§āĻāĻŦāĻžāĻ° āĻĻā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻāĨ¤
āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻŽāĻžāĻāĻā§āĻ°ā§āĻļāĻ¨ āĻ¸āĻā§āĻāĻžāĻ˛āĻ¨āĨ¤
āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻā§āĻā§ āĻĒā§āĻ°āĻļā§āĻ¨ āĻāĻŋāĻā§āĻāĻžāĻ¸āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ - āĻ¯āĻĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻĒāĻŋāĻāĻŋāĻ¯āĻŧā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻ¨āĻž āĻšāĻ¯āĻŧ? āĻāĻŽāĻžāĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻā§āĻā§ āĻ¯āĻžāĻŦā§ āĻ¨āĻž? āĻāĻ¸āĻ˛ā§, āĻ āĻŋāĻ āĻāĻāĻžāĻ āĻšāĻŦā§...
āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻāĻŽāĻ¨āĻāĻŋ āĻļā§āĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ / āĻ¨ā§āĻ˛ āĻ¸āĻŦā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻŦāĻŋāĻļāĻžāĻ˛ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻĨāĻžāĻāĻž āĻ¸āĻ¤ā§āĻ¤ā§āĻŦā§āĻ, āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻā§āĻ˛āĻŋ āĻ¤āĻžāĻĻā§āĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°ā§:
- āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸āĻš āĻāĻāĻāĻŋ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°ā§āĻ¨
- āĻāĻāĻāĻŋ āĻāĻ˛āĻŽāĻžāĻ¨ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻŦāĻ¨ā§āĻ§ āĻāĻ°ā§āĻ¨
- āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻŽāĻžāĻāĻā§āĻ°ā§āĻ āĻāĻ°āĻ¤ā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻžāĻ˛āĻžāĻ¨
- āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻŦāĻ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§, āĻāĻŽāĻ°āĻž āĻļā§āĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¨āĻŋāĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻŦāĻ āĻā§āĻĄā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¤āĻž āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻāĻžāĻ¨āĻžāĻŦāĨ¤
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž
āĻāĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻāĻ˛ā§āĻ¸ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĨāĻžāĻā§ āĻ¯āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻā§āĻ¨ā§ āĻĄā§āĻāĻž āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°ā§ āĻ¨āĻž, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻ¨āĻ āĻļā§āĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻĻā§āĻ°ā§āĻāĻžāĻā§āĻ¯āĻŦāĻļāĻ¤, āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻ¸āĻĢā§āĻāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ°āĻā§ āĻā§āĻĨāĻžāĻ āĻĄā§āĻāĻž āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻ āĻāĻžāĻ°āĻŖā§ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻā§ āĻā§āĻ¨ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻžāĻ° āĻāĻā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĻā§āĻŦāĻžāĻ° āĻāĻŋāĻ¨ā§āĻ¤āĻž āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻā§āĻāĻžāĻŦā§ āĻ¸ā§āĻāĻŋāĻŽāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ āĻ¤āĻžāĻ° āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāĻ°āĻŖā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻžāĻ° āĻāĻā§ āĻ¯āĻžāĻ¤ā§ āĻ¨ā§-āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ¸āĻŽā§āĻāĻŦ āĻšāĻ¯āĻŧ, āĻāĻ¸ā§āĻ¨ āĻĒā§āĻ°āĻĨāĻŽā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸ā§āĻāĻŋāĻŽāĻžāĻ° āĻāĻĒāĻ° āĻĢā§āĻāĻžāĻ¸ āĻāĻ°āĻŋāĨ¤
āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸ā§āĻāĻŋāĻŽ
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻŽāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ classpath:db/migration
) āĻāĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻŽāĻžāĻāĻā§āĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
âââ db
âââ migration
âââ V1__init.sql
âââ V2__Add_surname.sql
âââ V3__Final_migration.sql
âââ V4__Remove_lastname.sql
āĻāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖā§ āĻāĻŽāĻ°āĻž 4āĻāĻŋ āĻŽāĻžāĻāĻā§āĻ°ā§āĻļāĻ¨ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻāĻŋ āĻ¯ā§āĻā§āĻ˛āĻŋ, āĻ¯āĻĻāĻŋ āĻāĻā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻ¨āĻž āĻšāĻ¯āĻŧ, āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻļā§āĻ°ā§ āĻšāĻ˛ā§ āĻāĻā§āĻ° āĻĒāĻ° āĻāĻ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛ āĻĻā§āĻāĻŋ (V1__init.sql
) āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸ā§āĻŦā§āĨ¤
CREATE TABLE PERSON (
id BIGINT GENERATED BY DEFAULT AS IDENTITY,
first_name varchar(255) not null,
last_name varchar(255) not null
);
insert into PERSON (first_name, last_name) values ('Dave', 'Syer');
āĻ¸āĻŦāĻāĻŋāĻā§āĻ āĻĒā§āĻ°ā§āĻĒā§āĻ°āĻŋ āĻ¸ā§āĻŦ-āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻžāĻŽā§āĻ˛āĻ: āĻāĻĒāĻ¨āĻžāĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻā§āĻāĻžāĻŦā§ āĻ¸āĻāĻļā§āĻ§āĻ¨ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻāĻĒāĻ¨āĻŋ SQL āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻ¸ā§āĻĒā§āĻ°āĻŋāĻ āĻŦā§āĻ āĻāĻŦāĻ āĻĢā§āĻ˛āĻžāĻāĻāĻ¯āĻŧā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻ°āĻ āĻ¤āĻĨā§āĻ¯ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻā§āĻ āĻāĻāĻ āĻāĻ°ā§āĻ¨
āĻ¸ā§āĻĒā§āĻ°āĻŋāĻ āĻŦā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻā§āĻ¸ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻĒāĻ¨āĻŋ 2āĻāĻŋ āĻŦāĻĄāĻŧ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻĒāĻžāĻŦā§āĻ¨:
- āĻāĻĒāĻ¨āĻŋ āĻā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻĨā§āĻā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻĒā§āĻĨāĻ
- āĻāĻĒāĻ¨āĻžāĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻ°ā§āĻ˛āĻāĻāĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻĄā§āĻāĻžāĻŦā§āĻ¸ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻā§, āĻ¯ā§āĻŽāĻ¨ āĻāĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻ°āĻ˛ā§āĻā§āĻ¤ āĻšāĻ¯āĻŧ
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž
āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻŦāĻŋāĻāĻžāĻā§, āĻāĻŽāĻ°āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻĻā§āĻāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻĻāĻŋāĻā§ āĻ¨āĻāĻ° āĻĻā§āĻŦāĨ¤
- āĻĒāĻļā§āĻāĻžāĻĻāĻāĻžāĻŽā§ āĻ āĻ¸āĻā§āĻāĻ¤āĻŋ
- āĻ āĻ¨āĻ āĻā§āĻ°āĻ¸āĻ° āĻāĻĒāĻ¯ā§āĻāĻŋāĻ¤āĻž
āĻĒā§āĻ°āĻĨāĻŽāĻāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦāĻŋāĻŦā§āĻāĻŋāĻ¤ āĻšāĻŦā§ āĻ¯ā§ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĻŋ āĻāĻžāĻĄāĻŧāĻž āĻāĻĒāĻ¨āĻžāĻ° āĻļā§āĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ¸āĻā§āĻāĻžāĻ˛āĻ¨ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ... āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻāĻāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻ āĻ¸āĻžāĻĨā§ āĻĒāĻļā§āĻāĻžāĻĻāĻŽā§āĻā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¤āĻžāĻ° āĻāĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻāĻ°ā§ā§ˇ
āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§ āĻāĻŽāĻ°āĻž āĻāĻžāĻ āĻāĻ°āĻŦ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸ā§āĻĒā§āĻ°āĻŋāĻ āĻŦā§āĻ āĻĢā§āĻ˛āĻžāĻāĻāĻ¯āĻŧā§ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¯āĻž āĻ°āĻ¯āĻŧā§āĻā§ Person
Ņ first_name
и last_name
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ (āĻĒā§āĻ°āĻžāĻ¯āĻŧ. āĻ
āĻ¨ā§āĻŦāĻžāĻĻ: Person
āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻāĻŦāĻ āĻirst_name
и last_name
- āĻāĻ āĻšāĻ˛ āĻāĻāĻŋāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°) āĻāĻŽāĻ°āĻž āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ last_name
в surname
.
āĻ āĻ¨ā§āĻŽāĻžāĻ¨
āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻāĻžāĻ¨āĻžāĻ° āĻāĻā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻŽā§āĻ˛ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻ āĻ°ā§āĻāĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¤āĻž āĻšāĻŦā§ āĻāĻāĻāĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻ¸āĻšāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĨ¤
āĻ¨ā§āĻ. āĻŦāĻŋāĻāĻ¨ā§āĻ¸ āĻĒā§āĻ°ā§-āĻāĻŋāĻĒāĨ¤ āĻ¸āĻšāĻā§āĻāĻ°āĻŖ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ā§ āĻĒā§āĻ°āĻā§āĻ° āĻ āĻ°ā§āĻĨ āĻ¸āĻžāĻļā§āĻ°āĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ (āĻāĻĒāĻ¨āĻžāĻ° āĻā§āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻ¤ āĻŦā§āĻļāĻŋ āĻ˛ā§āĻ āĻāĻžāĻ āĻāĻ°āĻŦā§āĻ¨, āĻāĻĒāĻ¨āĻŋ āĻ¤āĻ¤ āĻŦā§āĻļāĻŋ āĻ āĻ°ā§āĻĨ āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨)!
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ°ā§āĻ˛āĻŦā§āĻ¯āĻžāĻ āĻāĻ°āĻžāĻ° āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻ
āĻāĻāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§ āĻ¸āĻšāĻ āĻāĻ°ā§ (āĻāĻŋāĻā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ°ā§āĻ˛āĻŦā§āĻ¯āĻžāĻ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ āĻ¸āĻŽā§āĻāĻŦ, āĻ¯ā§āĻŽāĻ¨ āĻŽā§āĻāĻž āĻ°ā§āĻ˛āĻŦā§āĻ¯āĻžāĻ)āĨ¤ āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ°ā§āĻ˛ āĻŦā§āĻ¯āĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°āĻŋāĨ¤ āĻāĻāĻāĻžāĻŦā§, āĻāĻŽāĻ¨āĻāĻŋ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨāĻžāĻā§ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, SQL āĻāĻŦāĻ NoSQL), āĻāĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻĒāĻžāĻāĻĒāĻ˛āĻžāĻāĻ¨ āĻāĻāĻ āĻĻā§āĻāĻžāĻŦā§āĨ¤
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻžāĻ¨āĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻšāĻ¤ā§ āĻšāĻŦā§ (āĻāĻ° āĻāĻŋāĻā§ āĻ¨āĻ¯āĻŧ)
āĻ°ā§āĻ˛āĻŦā§āĻ¯āĻžāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ˛ā§āĻ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻ¯āĻĻāĻŋ āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ āĻĨāĻžāĻā§ āĻ¯āĻž āĻ¸āĻšāĻā§ āĻ āĻŋāĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻž, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻ°ā§āĻŦāĻļā§āĻˇ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻĢāĻŋāĻ°ā§ āĻ¯ā§āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻāĻŽāĻ°āĻž āĻ§āĻ°ā§ āĻ¨āĻŋāĻ āĻ¯ā§ āĻāĻ āĻ¸āĻ°ā§āĻŦāĻļā§āĻˇ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻāĻā§āĻ°āĻāĻŋāĨ¤ āĻāĻāĻžāĻ§āĻŋāĻ āĻ°ā§āĻ˛āĻāĻāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻĄ āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻāĻž āĻ āĻ¤ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻ āĻŋāĻ¨ āĻāĻŦāĻ āĻŦā§āĻ¯āĻ¯āĻŧāĻŦāĻšā§āĻ˛ āĻšāĻŦā§āĨ¤
āĻ¨ā§āĻ. āĻŦā§āĻšāĻ¤ā§āĻ¤āĻ° āĻĒāĻžāĻ āĻ¯ā§āĻā§āĻ¯āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻŽāĻ°āĻž āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻŦāĨ¤
āĻ§āĻžāĻĒ 1: āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻž
āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ: 1.0.0
āĻĄāĻŋāĻŦāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ: v1
āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯
āĻāĻāĻŋ āĻšāĻŦā§ āĻāĻŦā§āĻĻāĻ¨ā§āĻ° āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĨ¤
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
āĻĄāĻŋāĻŦāĻŋ āĻ§āĻžāĻ°āĻŖ āĻāĻ°ā§ last_name.
CREATE TABLE PERSON (
id BIGINT GENERATED BY DEFAULT AS IDENTITY,
first_name varchar(255) not null,
last_name varchar(255) not null
);
insert into PERSON (first_name, last_name) values ('Dave', 'Syer');
āĻā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§ last_name
:
/*
* Copyright 2012-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package sample.flyway;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return this.lastName;
}
public void setLastName(String lastname) {
this.lastName = lastname;
}
@Override
public String toString() {
return "Person [firstName=" + this.firstName + ", lastName=" + this.lastName
+ "]";
}
}
āĻĒāĻŋāĻāĻ¨ā§āĻ° āĻĻāĻŋāĻā§ āĻŦā§āĻŽāĻžāĻ¨āĻžāĻ¨ āĻāĻ˛āĻžāĻŽ āĻĒā§āĻ¨āĻāĻ¨āĻžāĻŽāĻāĻ°āĻŖ
āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻāĻ˛āĻžāĻŽā§āĻ° āĻ¨āĻžāĻŽ āĻā§āĻāĻžāĻŦā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ āĻ¤āĻžāĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§āĻāĻŋ:
āĻŽāĻ¨ā§āĻ¯ā§āĻ. āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻāĻā§āĻāĻžāĻā§āĻ¤āĻāĻžāĻŦā§ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻāĻžāĻā§āĻāĻž āĻšāĻŦā§. āĻāĻŽāĻ°āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻ¤ā§ āĻāĻāĻŋ āĻĻā§āĻāĻžāĻāĨ¤
āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ: 2.0.0.BAD
āĻĄāĻŋāĻŦāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ: v2bad
āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯
āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§ āĻĻā§āĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ (āĻĒā§āĻ°āĻžāĻ¨ā§ āĻāĻŦāĻ āĻ¨āĻ¤ā§āĻ¨) āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ, āĻļā§āĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ āĻ°ā§āĻāĻ¨ āĻāĻ°āĻž āĻāĻ āĻŋāĻ¨ āĻšāĻŦā§ (āĻ¯āĻĻāĻŋ āĻ āĻ¨ā§āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻžāĻ¯āĻŧ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻ¸āĻ˛ā§ āĻ āĻ¸āĻŽā§āĻāĻŦ)āĨ¤
A/B āĻĒāĻ°ā§āĻā§āĻˇāĻž
āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ°āĻ¯āĻŧā§āĻā§ 1.0.0,
āĻā§āĻĒāĻžāĻĻāĻ¨, āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ v1
. āĻāĻŽāĻžāĻĻā§āĻ° āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨, āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻāĻāĻāĻŋ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ 2.0.0.BAD
, āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻĒāĻĄā§āĻ āĻāĻ°ā§āĻ¨ v2bad
.
āĻ§āĻžāĻĒ:
- āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
2.0.0.BAD
āĻ¯āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻĒāĻĄā§āĻ āĻāĻ°ā§v2bad
- āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§
v2bad
āĻ¸ā§āĻ¤āĻŽā§āĻlast_name
āĻāĻ° āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¨ā§āĻ - āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§ā§ˇsurname
- āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻŦāĻ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻĒāĻĄā§āĻ āĻ¸āĻĢāĻ˛ āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻŋāĻā§ āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤ āĻāĻ˛āĻā§
1.0.0
, āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ - āĻŽāĻ§ā§āĻ¯ā§2.0.0.BAD
. āĻ¸āĻŦāĻāĻŋāĻā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤v2bad
- āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖ
1.0.0
āĻ¤āĻžāĻ°āĻž āĻāĻ˛āĻžāĻŽā§ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŦā§ āĻāĻžāĻ°āĻŖ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻ¨āĻŋāĻā§āĻˇā§āĻĒ āĻāĻ°āĻž āĻļā§āĻ°ā§ āĻāĻ°āĻŦā§last_name
āĻ¯āĻžāĻ°āĻž āĻāĻ° āĻ¨ā§āĻ - āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖ
2.0.0.BAD
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻžāĻ āĻāĻ°āĻŦā§
āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻā§āĻ¨, āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻŦāĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§ āĻ āĻ¸āĻā§āĻāĻ¤āĻŋāĻĒā§āĻ°ā§āĻŖ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻŋ, āĻ¤āĻžāĻšāĻ˛ā§ A/B āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻ āĻ¸āĻŽā§āĻāĻŦāĨ¤
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ°ā§āĻ˛āĻŦā§āĻ¯āĻžāĻ
āĻ§āĻ°āĻž āĻ¯āĻžāĻ A/B āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ (āĻĒā§āĻ°āĻžāĻ¯āĻŧ. āĻĒā§āĻ°āĻ¤āĻŋ.: āĻ˛ā§āĻāĻ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻāĻžāĻ¨ā§ A/B āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻŦā§āĻāĻžāĻ¤ā§ āĻā§āĻ¯āĻŧā§āĻā§āĻ¨) āĻāĻŽāĻ°āĻž āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻāĻ¨āĻ¤ā§ āĻšāĻŦā§ 1.0.0.
āĻ§āĻ°āĻž āĻ¯āĻžāĻ āĻāĻŽāĻ°āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ°ā§āĻ˛āĻŦā§āĻ¯āĻžāĻ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¨āĻžāĨ¤
āĻ§āĻžāĻĒ:
- āĻāĻŽāĻ°āĻž āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŦāĻ¨ā§āĻ§
2.0.0.BAD
- āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻāĻ¨āĻ āĻāĻā§
v2bad
- āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĨā§āĻā§
1.0.0
āĻāĻāĻž āĻāĻŋ āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¨āĻžsurname
, āĻāĻŽāĻ°āĻž āĻ¤ā§āĻ°ā§āĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻŦ - āĻāĻžāĻšāĻžāĻ¨ā§āĻ¨āĻžāĻŽ āĻā§āĻā§ āĻā§āĻā§, āĻāĻŽāĻ°āĻž āĻāĻ° āĻĢāĻŋāĻ°ā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻž
āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻā§āĻā§āĻ¨, āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻŦāĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§ āĻ āĻ¸āĻā§āĻāĻ¤āĻŋāĻĒā§āĻ°ā§āĻŖ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻŋ, āĻāĻŽāĻ°āĻž āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻĢāĻŋāĻ°ā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻžāĨ¤
āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ āĻ˛āĻ
Backward incompatible scenario:
01) Run 1.0.0
02) Wait for the app (1.0.0) to boot
03) Generate a person by calling POST localhost:9991/person to version 1.0.0
04) Run 2.0.0.BAD
05) Wait for the app (2.0.0.BAD) to boot
06) Generate a person by calling POST localhost:9991/person to version 1.0.0 <-- this should fail
07) Generate a person by calling POST localhost:9992/person to version 2.0.0.BAD <-- this should pass
Starting app in version 1.0.0
Generate a person in version 1.0.0
Sending a post to 127.0.0.1:9991/person. This is the response:
{"firstName":"b73f639f-e176-4463-bf26-1135aace2f57","lastName":"b73f639f-e176-4463-bf26-1135aace2f57"}
Starting app in version 2.0.0.BAD
Generate a person in version 1.0.0
Sending a post to 127.0.0.1:9991/person. This is the response:
curl: (22) The requested URL returned error: 500 Internal Server Error
Generate a person in version 2.0.0.BAD
Sending a post to 127.0.0.1:9995/person. This is the response:
{"firstName":"e156be2e-06b6-4730-9c43-6e14cfcda125","surname":"e156be2e-06b6-4730-9c43-6e14cfcda125"}
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
āĻŽāĻžāĻāĻā§āĻ°ā§āĻļāĻ¨ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ¯āĻž āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§ last_name
в surname
āĻāĻ¤ā§āĻ¸ āĻĢā§āĻ˛āĻžāĻāĻāĻ¯āĻŧā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ:
CREATE TABLE PERSON (
id BIGINT GENERATED BY DEFAULT AS IDENTITY,
first_name varchar(255) not null,
last_name varchar(255) not null
);
insert into PERSON (first_name, last_name) values ('Dave', 'Syer');
āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ¯ā§ āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ last_name
.
-- This change is backward incompatible - you can't do A/B testing
ALTER TABLE PERSON CHANGE last_name surname VARCHAR;
āĻā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
āĻāĻŽāĻ°āĻž āĻŽāĻžāĻ ā§āĻ° āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĻāĻŋ lastName
āĻāĻĒāĻ° surname
.
āĻĒāĻŋāĻāĻ¨ā§āĻ°-āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻāĻāĻāĻŋ āĻāĻ˛āĻžāĻŽā§āĻ° āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž
āĻāĻāĻŋ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻ¸āĻŽā§āĻŽā§āĻā§āĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻŋāĻāĻ¨ā§āĻ° āĻĻāĻŋāĻā§ āĻŦā§āĻŽāĻžāĻ¨āĻžāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻĒā§āĻ°āĻŽāĻžāĻŖ āĻāĻ°ā§āĻāĻŋ āĻ¯ā§ āĻļā§āĻ¨ā§āĻ¯-āĻĄāĻžāĻāĻ¨āĻāĻžāĻāĻŽ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻĒāĻĻāĻā§āĻˇā§āĻĒ āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŦāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻŽāĻžāĻāĻā§āĻ°ā§āĻļāĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧāĨ¤ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻāĻ āĻŦāĻŋāĻāĻžāĻā§, āĻāĻŽāĻ°āĻž āĻ āĻ¨āĻā§āĻ°āĻ¸āĻ° āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻŦāĻāĻžāĻ¯āĻŧ āĻ°ā§āĻā§ āĻāĻžāĻā§āĻā§āĻˇāĻŋāĻ¤ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ āĻ°ā§āĻāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ¸āĻš āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° 3āĻāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻŦāĨ¤
āĻ¨ā§āĻ. āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻā§
v1
. āĻāĻ¤ā§ āĻāĻ˛āĻžāĻŽ āĻ°āĻ¯āĻŧā§āĻā§first_name
иlast_name
. āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻĻāĻ˛āĻžāĻ¤ā§ āĻšāĻŦā§last_name
āĻāĻĒāĻ°surname
. āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻ ā§āĻ¯āĻžāĻĒ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻ āĻ°āĻ¯āĻŧā§āĻā§1.0.0,
āĻ¯āĻž āĻāĻāĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋsurname
.
āĻ§āĻžāĻĒ 2: āĻāĻĒāĻžāĻ§āĻŋ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨
āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ: 2.0.0
āĻĄāĻŋāĻŦāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ: v2
āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯
āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ˛āĻžāĻŽ āĻ¯ā§āĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§, āĻāĻŽāĻ°āĻž āĻĒāĻŋāĻāĻ¨ā§āĻ° āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋāĨ¤ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§, āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž JAR āĻ°ā§āĻ˛āĻŦā§āĻ¯āĻžāĻ āĻāĻ°āĻŋ āĻŦāĻž āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻžāĻ¨ā§ JAR āĻāĻ˛āĻŽāĻžāĻ¨ āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻā§āĻā§ āĻ¯āĻžāĻŦā§ āĻ¨āĻžāĨ¤
āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ°ā§āĻ˛ āĻāĻāĻ āĻāĻ°āĻāĻŋ
āĻ§āĻžāĻĒ:
- āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ˛āĻžāĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°ā§āĻ¨
surname
. āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻžāĻ° āĻĄāĻŋāĻŦāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖv2
- āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§āĻ¨
last_name
вsurname
. āĻŽāĻ¨ā§āĻ¯ā§āĻ āĻĻāĻžāĻāĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻā§ āĻāĻ āĻĄā§āĻāĻž āĻ āĻ¨ā§āĻ āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻžāĻ° āĻŦā§āĻ¯āĻžāĻ āĻŽāĻžāĻāĻā§āĻ°ā§āĻļāĻ¨ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻāĻāĻŋāĻ¤! - āĻā§āĻĄ āĻ˛āĻŋāĻā§āĻ¨ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¤āĻžāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻāĻ¯āĻŧ и ĐŊОвŅĐšāĻāĻŦāĻ āĻĒā§āĻ°āĻžāĻ¤āĻ¨ āĻāĻ˛āĻžāĻŽ āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻžāĻ° āĻ
ā§āĻ¯āĻžāĻĒ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ
2.0.0
- āĻāĻ˛āĻžāĻŽ āĻĨā§āĻā§ āĻŽāĻžāĻ¨ āĻĒāĻĄāĻŧā§āĻ¨
surname
, āĻ¯āĻĻāĻŋ āĻ¤āĻž āĻ¨āĻž āĻšāĻ¯āĻŧnull
, āĻ āĻĨāĻŦāĻž l āĻĨā§āĻā§ast_name
āĻ¯āĻĻāĻŋsurname
āĻāĻ˛ā§āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ¨āĻž. āĻāĻĒāĻ¨āĻŋ āĻŽā§āĻā§ āĻĻāĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨getLastName()
āĻā§āĻĄ āĻĨā§āĻā§, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻŋ āĻāĻāĻāĻĒā§āĻ āĻšāĻŦā§null
āĻĨā§āĻā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻŦā§āĻĻāĻ¨ āĻ°ā§āĻ˛ āĻŦā§āĻ¯āĻžāĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ3.0.0
āĻĨā§āĻā§2.0.0
.
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ¸ā§āĻĒā§āĻ°āĻŋāĻ āĻŦā§āĻ āĻĢā§āĻ˛āĻžāĻāĻāĻ¯āĻŧā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨, āĻāĻ āĻĻā§āĻāĻŋ āĻĒāĻĻāĻā§āĻˇā§āĻĒ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸ā§āĻāĻžāĻ°ā§āĻāĻāĻĒā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻā§āĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻŦā§ 2.0.0
āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸āĻ°āĻā§āĻāĻžāĻŽāĻāĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¨āĻžāĻā§ āĻĻā§āĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¨ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ (āĻĒā§āĻ°āĻĨāĻŽā§ āĻĄāĻŋāĻŦāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻāĻĒāĻĄā§āĻ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻ¨āĻ¤ā§āĻ¨ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĻ¨)āĨ¤
āĻāĻāĻž āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĨ¤ āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻ¯ā§ āĻ¸āĻĻā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻāĻ˛āĻžāĻŽ āĻāĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧ āĻšāĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻžāĻ˛ āĻ¨āĻž. āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻ°ā§āĻ˛āĻŦā§āĻ¯āĻžāĻ āĻāĻ°ā§āĻ¨, āĻĒā§āĻ°āĻžāĻ¨ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ˛āĻžāĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻžāĻ¨ā§ āĻ¨āĻž āĻāĻŦāĻ āĻāĻāĻŋāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻŦā§ āĻ¨āĻž
Insert.
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻĄāĻŋāĻŦāĻŋ āĻšāĻŦā§v2
, āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ˛āĻžāĻŽā§āĻ° āĻŽāĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ¯āĻž āĻŦāĻŋāĻ§āĻŋāĻ¨āĻŋāĻˇā§āĻ§ āĻ˛āĻā§āĻāĻ¨ā§āĻ° āĻĻāĻŋāĻā§ āĻ¨āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻŦā§āĨ¤āĻāĻāĻž āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ āĻĒāĻ¸āĻžāĻ°āĻŖ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤
getLastName()
, āĻāĻžāĻ°āĻŖ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§3.0.0
āĻā§āĻĄā§ āĻāĻāĻāĻŋ āĻāĻ˛āĻžāĻŽā§āĻ° āĻā§āĻ¨ āĻ§āĻžāĻ°āĻŖāĻž āĻ¨ā§āĻlast_name
. āĻāĻ° āĻŽāĻžāĻ¨ā§ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ¨āĻžāĻ˛ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻā§āĻĄāĻŧā§ āĻĻāĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨null
, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻ āĻāĻžāĻ˛ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ¯ā§āĻā§āĻ¤āĻŋāĻ¤ā§ āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻŦā§getSurname()
āĻāĻĒāĻ¨āĻŋ āĻ¸āĻ āĻŋāĻ āĻ -āĻļā§āĻ¨ā§āĻ¯ āĻŽāĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°ā§āĻā§āĻ¨āĨ¤
A/B āĻĒāĻ°ā§āĻā§āĻˇāĻž
āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ°āĻ¯āĻŧā§āĻā§ 1.0.0
, āĻā§āĻĒāĻžāĻĻāĻ¨ā§ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĻ¤, āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ v1
. āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻāĻāĻāĻŋ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ 2.0.0
āĻ¯āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻŦā§ v2
.
āĻ§āĻžāĻĒ:
- āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
2.0.0
āĻ¯āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻĒāĻĄā§āĻ āĻāĻ°ā§v2
- āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻŋāĻā§ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
1.0.0
- āĻāĻĒāĻĄā§āĻāĻāĻŋ āĻ¸āĻĢāĻ˛ āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋāĻ° āĻāĻāĻžāĻ§āĻŋāĻ āĻāĻ˛āĻŽāĻžāĻ¨ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ°āĻ¯āĻŧā§āĻā§
1.0.0
āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ2.0.0.
āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§āĻā§āĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻāĻ°ā§v2
- āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ
1.0.0
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻāĻĒāĻžāĻ§āĻŋ āĻāĻ˛āĻžāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¨āĻž, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ2.0.0
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ¸āĻŽā§āĻš. āĻ¤āĻžāĻ°āĻž āĻāĻā§ āĻ āĻĒāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻšāĻ¸ā§āĻ¤āĻā§āĻˇā§āĻĒ āĻāĻ°ā§ āĻ¨āĻž, āĻāĻŦāĻ āĻā§āĻ¨ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻĨāĻžāĻāĻž āĻāĻāĻŋāĻ¤ āĻ¨āĻ¯āĻŧāĨ¤ - āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ
2.0.0
āĻĒāĻļā§āĻāĻžāĻĻāĻāĻžāĻŽā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§ āĻĒā§āĻ°āĻžāĻ¨ā§ āĻāĻŦāĻ āĻ¨āĻ¤ā§āĻ¨ āĻāĻāĻ¯āĻŧ āĻāĻ˛āĻžāĻŽā§ āĻĄā§āĻāĻž āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°ā§
āĻāĻāĻž āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĨ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻā§āĻ¨āĻ āĻĒā§āĻ°āĻļā§āĻ¨ āĻĨāĻžāĻā§ āĻ¯āĻž āĻĒā§āĻ°āĻžāĻ¨ā§/āĻ¨āĻ¤ā§āĻ¨ āĻāĻ˛āĻžāĻŽā§āĻ° āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻāĻā§āĻŽāĻā§āĻ˛āĻŋ āĻāĻŖāĻ¨āĻž āĻāĻ°ā§, āĻāĻĒāĻ¨āĻžāĻ° āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻž āĻāĻāĻŋāĻ¤ āĻ¯ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻā§ āĻāĻāĻ¨ āĻĄā§āĻĒā§āĻ˛āĻŋāĻā§āĻ āĻŽāĻžāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§ (āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻ¤āĻžāĻ°āĻž āĻāĻāĻ¨āĻ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻā§)āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž āĻāĻŖāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ āĻ¯āĻžāĻĻā§āĻ° āĻļā§āĻˇ āĻ¨āĻžāĻŽ (āĻāĻ˛āĻžāĻŽāĻāĻŋ āĻ¯āĻžāĻ āĻŦāĻ˛āĻž āĻšā§āĻ āĻ¨āĻž āĻā§āĻ¨) āĻ āĻā§āĻˇāĻ° āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧā§āĻā§
A
, āĻ¤āĻžāĻ°āĻĒāĻ° āĻĄā§āĻāĻž āĻŽāĻžāĻāĻā§āĻ°ā§āĻļāĻ¨ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ (old
ânew
āĻāĻ˛āĻžāĻŽ) āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ˛āĻžāĻŽ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°ā§āĻ¨ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻā§ āĻ āĻ¸āĻā§āĻāĻ¤ āĻĄā§āĻāĻž āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ°ā§āĻ˛āĻŦā§āĻ¯āĻžāĻ
āĻāĻāĻ¨ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻ
ā§āĻ¯āĻžāĻĒ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ°āĻ¯āĻŧā§āĻā§ 2.0.0
āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻ¨ v2
.
āĻ§āĻžāĻĒ:
- āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻāĻĒāĻ¨āĻžāĻ° āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ°ā§āĻ˛ āĻŦā§āĻ¯āĻžāĻ
1.0.0
. - āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ
1.0.0
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻāĻāĻāĻŋ āĻāĻ˛āĻžāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¨āĻžsurname
, āĻ¤āĻžāĻ āĻ°ā§āĻ˛āĻŦā§āĻ¯āĻžāĻ āĻ¸āĻĢāĻ˛ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤
āĻĄāĻŋāĻŦāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¨āĻžāĻŽā§āĻ° āĻāĻāĻāĻŋ āĻāĻ˛āĻžāĻŽ āĻ°āĻ¯āĻŧā§āĻā§ last_name
.
āĻĢā§āĻ˛āĻžāĻāĻāĻ¯āĻŧā§ āĻ¸ā§āĻ°ā§āĻ¸ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ:
CREATE TABLE PERSON (
id BIGINT GENERATED BY DEFAULT AS IDENTITY,
first_name varchar(255) not null,
last_name varchar(255) not null
);
insert into PERSON (first_name, last_name) values ('Dave', 'Syer');
āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨ surname
.
āĻŽāĻ¨ā§āĻ¯ā§āĻ. āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻāĻĒāĻ¨āĻŋ āĻ¯ā§ āĻāĻ˛āĻžāĻŽāĻāĻŋ āĻ¯ā§āĻ āĻāĻ°āĻā§āĻ¨ āĻ¤āĻžāĻ¤ā§ āĻā§āĻ¨ā§ NOT NULL āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨ āĻ¨āĻžāĨ¤ āĻāĻĒāĻ¨āĻŋ JAR āĻ°ā§āĻ˛āĻŦā§āĻ¯āĻžāĻ āĻāĻ°āĻ˛ā§, āĻĒā§āĻ°āĻžāĻ¨ā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻ¯ā§āĻ āĻāĻ°āĻž āĻāĻ˛āĻžāĻŽ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻā§āĻ¨ āĻ§āĻžāĻ°āĻŖāĻž āĻĨāĻžāĻāĻŦā§ āĻ¨āĻž āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ NULL āĻ āĻ¸ā§āĻ āĻāĻ°āĻŦā§āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻĒā§āĻ°āĻžāĻ¨ā§ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻā§āĻŦāĻ˛ āĻā§āĻā§ āĻ¯āĻžāĻŦā§āĨ¤
-- NOTE: This field can't have the NOT NULL constraint cause if you rollback, the old version won't know about this field
-- and will always set it to NULL
ALTER TABLE PERSON ADD surname varchar(255);
-- WE'RE ASSUMING THAT IT'S A FAST MIGRATION - OTHERWISE WE WOULD HAVE TO MIGRATE IN BATCHES
UPDATE PERSON SET PERSON.surname = PERSON.last_name
āĻā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
āĻāĻŽāĻ°āĻž āĻĄā§āĻāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻŋ last_name
, āĻāĻŦāĻ āĻāĻ¨ surname
. āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§ āĻĨā§āĻā§ āĻāĻŽāĻ°āĻž āĻĒāĻĄāĻŧāĻŋ last_name
, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻ āĻāĻ˛āĻžāĻŽāĻāĻŋ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻĒā§āĻ°āĻžāĻ¸āĻā§āĻāĻŋāĻāĨ¤ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ˛āĻžāĻāĻžāĻ˛ā§āĻ¨, āĻāĻŋāĻā§ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻāĻāĻāĻŋ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻž āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻž āĻāĻāĻ¨āĻ āĻāĻĒāĻĄā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋāĨ¤
/*
* Copyright 2012-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package sample.flyway;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String lastName;
private String surname;
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
/**
* Reading from the new column if it's set. If not the from the old one.
*
* When migrating from version 1.0.0 -> 2.0.0 this can lead to a possibility that some data in
* the surname column is not up to date (during the migration process lastName could have been updated).
* In this case one can run yet another migration script after all applications have been deployed in the
* new version to ensure that the surname field is updated.
*
* However it makes sense since when looking at the migration from 2.0.0 -> 3.0.0. In 3.0.0 we no longer
* have a notion of lastName at all - so we don't update that column. If we rollback from 3.0.0 -> 2.0.0 if we
* would be reading from lastName, then we would have very old data (since not a single datum was inserted
* to lastName in version 3.0.0).
*/
public String getSurname() {
return this.surname != null ? this.surname : this.lastName;
}
/**
* Storing both FIRST_NAME and SURNAME entries
*/
public void setSurname(String surname) {
this.lastName = surname;
this.surname = surname;
}
@Override
public String toString() {
return "Person [firstName=" + this.firstName + ", lastName=" + this.lastName + ", surname=" + this.surname
+ "]";
}
}
āĻ§āĻžāĻĒ 3: āĻā§āĻĄ āĻĨā§āĻā§ āĻļā§āĻˇ_āĻ¨āĻžāĻŽ āĻ¸āĻ°āĻžāĻ¨ā§ āĻšāĻā§āĻā§
āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ: 3.0.0
āĻĄāĻŋāĻŦāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ:v3
āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯
āĻŦāĻŋāĻāĻĻā§āĻ°āĻ āĻĒā§āĻ°āĻ¤āĻŋ.: āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻ, āĻŽā§āĻ˛ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻ˛ā§āĻāĻ āĻā§āĻ˛āĻŦāĻļāĻ¤ āĻāĻ āĻŦā§āĻ˛āĻā§āĻ° āĻā§āĻā§āĻ¸āĻāĻāĻŋ āĻ§āĻžāĻĒ 2 āĻĨā§āĻā§ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§āĻā§āĻ¨āĨ¤ āĻāĻ āĻ§āĻžāĻĒā§, āĻāĻ˛āĻžāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻŽāĻ¨ āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻž āĻ
āĻĒāĻ¸āĻžāĻ°āĻŖā§āĻ° āĻ˛āĻā§āĻˇā§āĻ¯ā§ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻā§āĻĄā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤ last_name
.
āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ˛āĻžāĻŽ āĻ¯ā§āĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§, āĻāĻŽāĻ°āĻž āĻĒāĻŋāĻāĻ¨ā§āĻ° āĻĻāĻŋāĻā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž JAR āĻ°ā§āĻ˛āĻŦā§āĻ¯āĻžāĻ āĻāĻ°āĻŋ āĻŦāĻž āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻžāĻ¨ā§ JAR āĻāĻ˛āĻŽāĻžāĻ¨ āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻā§āĻā§ āĻ¯āĻžāĻŦā§ āĻ¨āĻžāĨ¤
āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ°ā§āĻ˛āĻŦā§āĻ¯āĻžāĻ
āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻ
ā§āĻ¯āĻžāĻĒ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ°āĻ¯āĻŧā§āĻā§ 3.0.0
āĻāĻŦāĻ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ v3
. āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ 3.0.0
āĻĄā§āĻāĻž āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§ āĻ¨āĻž last_name
. āĻāĻ° āĻŽāĻžāĻ¨ā§ āĻšāĻ˛ āĻ¯ā§ surname
āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻĒ āĻā§ āĻĄā§āĻ āĻ¤āĻĨā§āĻ¯ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧ.
āĻ§āĻžāĻĒ:
- āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻāĻĒāĻ¨āĻžāĻ° āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ°ā§āĻ˛ āĻŦā§āĻ¯āĻžāĻ
2.0.0
. - āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ
2.0.0
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻŦāĻlast_name
иsurname
. - āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ
2.0.0
āĻā§āĻ°āĻšāĻ¨ āĻāĻ°āĻŦā§surname
, āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻļā§āĻ¨ā§āĻ¯ āĻ¨āĻž āĻšāĻ¯āĻŧ, āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ -last_name
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻā§āĻ¨ āĻāĻžāĻ āĻžāĻŽā§āĻāĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¨ā§āĻāĨ¤ āĻĒā§āĻ°āĻžāĻ¨ā§ āĻĄā§āĻāĻžāĻ° āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§:
-- WE'RE ASSUMING THAT IT'S A FAST MIGRATION - OTHERWISE WE WOULD HAVE TO MIGRATE IN BATCHES
-- ALSO WE'RE NOT CHECKING IF WE'RE NOT OVERRIDING EXISTING ENTRIES. WE WOULD HAVE TO COMPARE
-- ENTRY VERSIONS TO ENSURE THAT IF THERE IS ALREADY AN ENTRY WITH A HIGHER VERSION NUMBER
-- WE WILL NOT OVERRIDE IT.
UPDATE PERSON SET PERSON.surname = PERSON.last_name;
-- DROPPING THE NOT NULL CONSTRAINT; OTHERWISE YOU WILL TRY TO INSERT NULL VALUE OF THE LAST_NAME
-- WITH A NOT_NULL CONSTRAINT.
ALTER TABLE PERSON MODIFY COLUMN last_name varchar(255) NULL DEFAULT NULL;
āĻā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
āĻŦāĻŋāĻāĻĻā§āĻ°āĻ āĻĒā§āĻ°āĻ¤āĻŋāĨ¤: āĻāĻ āĻŦā§āĻ˛āĻā§āĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻāĻŋāĻ āĻ˛ā§āĻāĻ āĻā§āĻ˛āĻŦāĻļāĻ¤ ā§¨āĻ¯āĻŧ āĻ§āĻžāĻĒ āĻĨā§āĻā§ āĻ
āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§āĻā§āĻ¨āĨ¤ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§āĻ° āĻ¯ā§āĻā§āĻ¤āĻŋ āĻ
āĻ¨ā§āĻ¸āĻžāĻ°ā§, āĻāĻ āĻ§āĻžāĻĒā§ āĻā§āĻĄā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻ˛āĻā§āĻˇā§āĻ¯ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤ āĻāĻ˛āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŽāĻ¨ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻ°āĻŋāĻ¯āĻŧā§ āĻĢā§āĻ˛āĻžāĨ¤ last_name
.
āĻāĻŽāĻ°āĻž āĻĄā§āĻāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻŋ last_name
, āĻāĻŦāĻ āĻāĻ¨ surname.
āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻāĻŽāĻ°āĻž āĻāĻ˛āĻžāĻŽ āĻĨā§āĻā§ āĻĒāĻĄāĻŧāĻž last_name
, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻŋ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻĒā§āĻ°āĻžāĻ¸āĻā§āĻāĻŋāĻāĨ¤ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ˛āĻžāĻāĻžāĻ˛ā§āĻ¨, āĻāĻŋāĻā§ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻž āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯āĻž āĻāĻāĻ¨āĻ āĻāĻĒāĻā§āĻ°ā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋāĨ¤
/*
* Copyright 2012-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package sample.flyway;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
private String firstName;
private String surname;
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getSurname() {
return this.surname;
}
public void setSurname(String lastname) {
this.surname = lastname;
}
@Override
public String toString() {
return "Person [firstName=" + this.firstName + ", surname=" + this.surname
+ "]";
}
}
āĻ§āĻžāĻĒ 4: āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨā§āĻā§ āĻļā§āĻˇ_āĻ¨āĻžāĻŽ āĻ¸āĻ°āĻžāĻ¨ā§ āĻšāĻā§āĻā§
āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ: 4.0.0
āĻĄāĻŋāĻŦāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ: v4
āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯
āĻ¯ā§ āĻāĻžāĻ°āĻŖā§ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻā§āĻĄ 3.0.0
āĻāĻ˛āĻžāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨āĻŋ last_name
, āĻŽā§āĻ¤ā§āĻ¯ā§āĻĻāĻ¨ā§āĻĄā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻžāĻ°āĻžāĻĒ āĻāĻŋāĻā§ āĻāĻāĻŦā§ āĻ¨āĻž āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻĢāĻŋāĻ°ā§ āĻ¯āĻžāĻ 3.0.0
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻ˛āĻžāĻŽ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻžāĻ° āĻĒāĻ°ā§āĨ¤
āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻā§āĻ¸āĻŋāĻāĻŋāĻāĻļāĻ¨ āĻ˛āĻ
We will do it in the following way:
01) Run 1.0.0
02) Wait for the app (1.0.0) to boot
03) Generate a person by calling POST localhost:9991/person to version 1.0.0
04) Run 2.0.0
05) Wait for the app (2.0.0) to boot
06) Generate a person by calling POST localhost:9991/person to version 1.0.0
07) Generate a person by calling POST localhost:9992/person to version 2.0.0
08) Kill app (1.0.0)
09) Run 3.0.0
10) Wait for the app (3.0.0) to boot
11) Generate a person by calling POST localhost:9992/person to version 2.0.0
12) Generate a person by calling POST localhost:9993/person to version 3.0.0
13) Kill app (3.0.0)
14) Run 4.0.0
15) Wait for the app (4.0.0) to boot
16) Generate a person by calling POST localhost:9993/person to version 3.0.0
17) Generate a person by calling POST localhost:9994/person to version 4.0.0
Starting app in version 1.0.0
Generate a person in version 1.0.0
Sending a post to 127.0.0.1:9991/person. This is the response:
{"firstName":"52b6e125-4a5c-429b-a47a-ef18bbc639d2","lastName":"52b6e125-4a5c-429b-a47a-ef18bbc639d2"}
Starting app in version 2.0.0
Generate a person in version 1.0.0
Sending a post to 127.0.0.1:9991/person. This is the response:
{"firstName":"e41ee756-4fa7-4737-b832-e28827a00deb","lastName":"e41ee756-4fa7-4737-b832-e28827a00deb"}
Generate a person in version 2.0.0
Sending a post to 127.0.0.1:9992/person. This is the response:
{"firstName":"0c1240f5-649a-4bc5-8aa9-cff855f3927f","lastName":"0c1240f5-649a-4bc5-8aa9-cff855f3927f","surname":"0c1240f5-649a-4bc5-8aa9-cff855f3927f"}
Killing app 1.0.0
Starting app in version 3.0.0
Generate a person in version 2.0.0
Sending a post to 127.0.0.1:9992/person. This is the response:
{"firstName":"74d84a9e-5f44-43b8-907c-148c6d26a71b","lastName":"74d84a9e-5f44-43b8-907c-148c6d26a71b","surname":"74d84a9e-5f44-43b8-907c-148c6d26a71b"}
Generate a person in version 3.0.0
Sending a post to 127.0.0.1:9993/person. This is the response:
{"firstName":"c6564dbe-9ab5-40ae-9077-8ae6668d5862","surname":"c6564dbe-9ab5-40ae-9077-8ae6668d5862"}
Killing app 2.0.0
Starting app in version 4.0.0
Generate a person in version 3.0.0
Sending a post to 127.0.0.1:9993/person. This is the response:
{"firstName":"cbe942fc-832e-45e9-a838-0fae25c10a51","surname":"cbe942fc-832e-45e9-a838-0fae25c10a51"}
Generate a person in version 4.0.0
Sending a post to 127.0.0.1:9994/person. This is the response:
{"firstName":"ff6857ce-9c41-413a-863e-358e2719bf88","surname":"ff6857ce-9c41-413a-863e-358e2719bf88"}
āĻĄāĻŋāĻŦāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
āĻ¤ā§āĻ˛āĻ¨āĻžāĻŽā§āĻ˛āĻāĻāĻžāĻŦā§ v3
āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§ āĻāĻ˛āĻžāĻŽ āĻ
āĻĒāĻ¸āĻžāĻ°āĻŖ last_name
āĻāĻŦāĻ āĻ
āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨āĨ¤
-- REMOVE THE COLUMN
ALTER TABLE PERSON DROP last_name;
-- ADD CONSTRAINTS
UPDATE PERSON SET surname='' WHERE surname IS NULL;
ALTER TABLE PERSON ALTER COLUMN surname VARCHAR NOT NULL;
āĻā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
āĻā§āĻĄā§ āĻā§āĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¨ā§āĻāĨ¤
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻāĻŽāĻ°āĻž āĻ¸āĻĢāĻ˛āĻāĻžāĻŦā§ āĻĒāĻŋāĻāĻ¨ā§āĻ°-āĻ āĻ¸āĻā§āĻāĻ¤ āĻāĻ˛āĻžāĻŽā§āĻ° āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒāĻŋāĻāĻ¨ā§āĻ°-āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻ¨ā§āĻā§ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻŋāĻ¤ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°āĻ¸āĻāĻā§āĻˇā§āĻĒ āĻ°āĻ¯āĻŧā§āĻā§:
- āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž
1.0.0
Ņv1
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸ā§āĻāĻŋāĻŽāĻž (āĻāĻ˛āĻžāĻŽā§āĻ° āĻ¨āĻžāĻŽ =last_name
) - āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž
2.0.0,
āĻ¯āĻž āĻ¤āĻĨā§āĻ¯ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§last_name
иsurname
. āĻāĻŦā§āĻĻāĻ¨ āĻĨā§āĻā§ āĻĒāĻĄāĻŧāĻžlast_name
. āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻāĻā§v2
āĻŽāĻ¤ āĻāĻ˛āĻžāĻŽ āĻ§āĻžāĻ°āĻŖāĻāĻžāĻ°ā§last_name
, āĻāĻŦāĻsurname. surname
l āĻāĻ° āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋast_name
. (āĻĻā§āĻ°āĻˇā§āĻāĻŦā§āĻ¯: āĻāĻ āĻāĻ˛āĻžāĻŽā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ¨āĻžāĻ˛ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻĨāĻžāĻāĻŦā§ āĻ¨āĻž) - āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž
3.0.0
, āĻ¯āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĄā§āĻāĻž āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°ā§surname
āĻāĻŦāĻ āĻāĻĒāĻžāĻ§āĻŋ āĻĨā§āĻā§ āĻĒāĻĄāĻŧā§āĨ¤ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻļā§āĻˇ āĻŽāĻžāĻāĻā§āĻ°ā§āĻļāĻ¨ āĻšāĻā§āĻā§last_name
вsurname
. āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻāĻāĻŋ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻ¨āĻžāĻ˛ āĻ¨āĻž āĻĨā§āĻā§ āĻ¸āĻ°āĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§last_name
. āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§ āĻāĻā§v3
- āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž
4.0.0
- āĻā§āĻĄā§ āĻā§āĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžv4
, āĻ¯āĻž āĻ āĻĒāĻ¸āĻžāĻ°āĻŖ āĻāĻ°ā§last_name
. āĻāĻāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻā§āĻ¨ā§ āĻ āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻ¸ā§āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸/āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯ āĻ¨āĻž āĻā§āĻā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĢāĻŋāĻ°āĻŋāĻ¯āĻŧā§ āĻāĻ¨āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻā§āĻĄ
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§āĻĄ āĻāĻāĻžāĻ¨ā§ āĻāĻĒāĻ˛āĻŦā§āĻ§
āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ
āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ āĻā§āĻ˛ā§āĻ¨ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻāĻžāĻ āĻžāĻŽā§ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻŦā§āĻ¨āĨ¤
âââ boot-flyway-v1 - 1.0.0 version of the app with v1 of the schema
âââ boot-flyway-v2 - 2.0.0 version of the app with v2 of the schema (backward-compatible - app can be rolled back)
âââ boot-flyway-v2-bad - 2.0.0.BAD version of the app with v2bad of the schema (backward-incompatible - app cannot be rolled back)
âââ boot-flyway-v3 - 3.0.0 version of the app with v3 of the schema (app can be rolled back)
âââ boot-flyway-v4 - 4.0.0 version of the app with v4 of the schema (app can be rolled back)
āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ
āĻāĻĒāĻ¨āĻŋ āĻ¨ā§āĻā§āĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¯āĻž āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻĒāĻŋāĻāĻ¨ā§āĻ°-āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻāĻŦāĻ āĻŦā§āĻŽāĻžāĻ¨āĻžāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻŦā§āĨ¤
āĻĻā§āĻāĻ¤ā§ āĻĒāĻŋāĻāĻ¨ā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¸āĻā§āĻā§ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻžāĻ˛āĻžāĻ¨:
./scripts/scenario_backward_compatible.sh
āĻāĻŦāĻ āĻĻā§āĻāĻ¤ā§ āĻĒāĻŋāĻāĻ¨ā§āĻ° āĻŦā§āĻŽāĻžāĻ¨āĻžāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¸āĻā§āĻā§ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻžāĻ˛āĻžāĻ¨:
./scripts/scenario_backward_incompatible.sh
āĻ¸ā§āĻĒā§āĻ°āĻŋāĻ āĻŦā§āĻ āĻ¨āĻŽā§āĻ¨āĻž āĻĢā§āĻ˛āĻžāĻāĻāĻ¯āĻŧā§
āĻ¸āĻŦ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĨā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻā§ Spring Boot Sample Flyway.
āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŦāĻžāĻ° āĻĻā§āĻā§ āĻ¨āĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ http://localhost:8080/flyway
, āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻā§.
āĻāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖā§ H2 āĻāĻ¨āĻ¸ā§āĻ˛āĻ āĻ
āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻ°āĻ¯āĻŧā§āĻā§ (āĻ http://localhost:8080/h2-console
) āĻ¯āĻžāĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ (āĻĄāĻŋāĻĢāĻ˛ā§āĻ jdbc URL āĻšāĻ˛ jdbc:h2:mem:testdb
).
āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ°āĻŋāĻĢā§āĻ¯āĻžāĻā§āĻāĻ°āĻŋāĻ āĻĒā§āĻ¯āĻžāĻāĻžāĻ°ā§āĻ¨ āĻ āĻŦāĻŋāĻā§āĻāĻŋāĻ¨ā§āĻ¨ āĻŦāĻŋāĻ¤āĻ°āĻŖ
āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻŦā§āĻ˛āĻā§ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻĒāĻĄāĻŧā§āĻ¨:
āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸: āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ°āĻŋāĻ¸ā§āĻ°ā§āĻ¸ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻŽā§āĻ¨ā§āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻā§āĻ¨ āĻāĻ¤ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ? āĻā§āĻāĻāĻ¨ āĻĒāĻžāĻāĻĒāĻ˛āĻžāĻāĻ¨ - āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻā§āĻ¸-āĻ¨ā§āĻāĻŋāĻ āĻĒāĻžāĻāĻĒāĻ˛āĻžāĻāĻ¨ Nginx āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¤āĻŋāĻļā§āĻ˛ āĻŽāĻĄāĻŋāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž Hashicorp āĻāĻ¨āĻ¸āĻžāĻ˛ āĻāĻ° Kubernetes āĻ āĻ¨ā§āĻŽā§āĻĻāĻ¨ā§āĻ° āĻā§āĻŽāĻŋāĻāĻž āĻ āĻ¨ā§āĻŽā§āĻĻāĻ¨ āĻāĻžāĻĄāĻŧāĻžāĻ ClickHouse āĻĨā§āĻā§ ClickHouse-āĻ āĻ āĻ¨ā§āĻŽā§āĻĻāĻ¨ āĻ¸āĻš āĻŽāĻžāĻāĻā§āĻ°ā§āĻļāĻ¨ āĻāĻŋāĻ¸ā§āĻ° āĻĻāĻŋāĻā§ āĻ¨āĻŋāĻ¯āĻŧā§ āĻā§āĻā§? Nginx āĻāĻ¯āĻŧā§āĻŦ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸ā§āĻĒā§āĻ°āĻŋāĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¨ā§āĻ˛-āĻ¸āĻŦā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž
āĻāĻ¤ā§āĻ¸: www.habr.com