ਇਹ ਇੱਕ ਅਸਫਲਤਾ ਹੈ ਜੋ ਮੈਂ ਦੋ ਵਾਰ ਦੇਖੀ, ਦੋ ਵੱਖਰੇ ਇੰਜਣਾਂ ਵਿੱਚ। ਇੱਕ ਨਿਰਯਾਤ 10:00 ਵਜੇ ਚੱਲਦਾ ਹੈ ਅਤੇ ਸਭ ਤੋਂ ਉੱਚਾ ਆਖਰੀ-ਸੋਧ ਟਾਈਮਸਟੈਂਪ ਦਰਜ ਕਰਦਾ ਹੈ ਜੋ ਉਸਨੇ ਦੇਖਿਆ। 09:58 ਵਜੇ ਸ਼ੁਰੂ ਹੋਇਆ ਇੱਕ ਲੈਣ-ਦੇਣ ਅਜੇ ਵੀ ਖੁੱਲ੍ਹਾ ਹੈ, 10:03 ਵਜੇ ਕਮਿਟ ਹੁੰਦਾ ਹੈ ਅਤੇ ਆਪਣੇ ਸ਼ੁਰੂ ਹੋਣ ਦੇ ਪਲ ਦਾ ਟਾਈਮਸਟੈਂਪ ਰੱਖਦਾ ਹੈ। ਅਗਲਾ ਨਿਰਯਾਤ ਸਿਰਫ਼ 10:00 ਤੋਂ ਨਵੀਆਂ ਕਤਾਰਾਂ ਮੰਗਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਕਦੇ ਨਹੀਂ ਦੇਖਦਾ। ਟ੍ਰਾਂਸਫਰ ਦਾ ਆਕਾਰ ਸ਼ਾਨਦਾਰ ਸੀ ਅਤੇ ਡੇਟਾ ਗਲਤ ਸੀ।

ਉਸ ਨਿਰਯਾਤ ਦਾ ਪਿੱਛਾ ਕਰੋ ਜਿਸਨੇ ਇੱਕ ਕਤਾਰ ਗੁਆਈ

SQL ਨਹੀਂ, ਘਟਨਾਵਾਂ ਦਾ ਕ੍ਰਮ ਪਿੱਛਾ ਕਰੋ। ਐਪਲੀਕੇਸ਼ਨ ਕਤਾਰ ਦਾ ਸੋਧ ਸਮਾਂ ਲੈਣ-ਦੇਣ ਸ਼ੁਰੂ ਹੋਣ ਵੇਲੇ ਲਿਖਦੀ ਹੈ, ਕਮਿਟ ਹੋਣ ਵੇਲੇ ਨਹੀਂ। ਨਿਰਯਾਤਕ ਕੰਧ-ਘੜੀ ਦਾ ਵਾਟਰਮਾਰਕ ਪੜ੍ਹਦਾ ਹੈ ਜਦੋਂ ਉਹ ਲੈਣ-ਦੇਣ ਅਜੇ ਖੁੱਲ੍ਹਾ ਹੈ। ਫਿਰ ਲੈਣ-ਦੇਣ ਸੰਭਾਲੇ ਵਾਟਰਮਾਰਕ ਨਾਲੋਂ ਪੁਰਾਣੇ ਸੋਧ ਸਮੇਂ ਨਾਲ ਕਮਿਟ ਹੁੰਦਾ ਹੈ। ਖਪਤਕਾਰ ਦੀ ਅਗਲੀ ਬੈਚ ਵਾਟਰਮਾਰਕ ਤੋਂ ਬਾਅਦ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ, ਇਸ ਲਈ ਕਤਾਰ ਕਰਸਰ ਪਿੱਛੇ ਰਹਿ ਜਾਂਦੀ ਹੈ ਅਤੇ ਦੁਬਾਰਾ ਕਦੇ ਨਹੀਂ ਚੁਣੀ ਜਾਵੇਗੀ।

ਕੁਝ ਵੀ ਗਲਤੀ ਦਰਜ ਨਹੀਂ ਕਰਦਾ, ਕਿਉਂਕਿ ਕੁਝ ਵੀ ਫੇਲ੍ਹ ਨਹੀਂ ਹੋਇਆ। ਇਹੀ ਇਸ ਸ਼੍ਰੇਣੀ ਦੇ ਬੱਗ ਨੂੰ ਮਹਿੰਗਾ ਬਣਾਉਂਦਾ ਹੈ: ਡੈਲਟਾ ਫੀਡ ਤੇਜ਼ ਹੈ, ਕਤਾਰਾਂ ਦੀ ਗਿਣਤੀ ਭਰੋਸੇਯੋਗ ਲੱਗਦੀ ਹੈ, ਅਤੇ ਗੁੰਮ ਕਤਾਰ ਹਫ਼ਤਿਆਂ ਬਾਅਦ ਇੱਕ ਮਿਲਾਨ-ਟਿਕਟ ਵਜੋਂ ਸਾਹਮਣੇ ਆਉਂਦੀ ਹੈ ਜਿਸਨੂੰ ਕੋਈ ਦੁਬਾਰਾ ਨਹੀਂ ਬਣਾ ਸਕਦਾ।

ਕ੍ਰਮ-ਸੰਖਿਆਵਾਂ ਵਿੱਚ ਦੂਜੇ ਕਾਰਨ ਕਰਕੇ ਉਹੀ ਆਕਾਰ ਦਾ ਨੁਕਸ ਹੈ। ਇੱਕਸਾਰ ID ਤੁਹਾਨੂੰ ਦੱਸਦੀ ਹੈ ਕਿ ਮੁੱਲ ਕਿਸ ਕ੍ਰਮ ਵਿੱਚ ਦਿੱਤੇ ਗਏ, ਇਹ ਨਹੀਂ ਕਿ ਲੈਣ-ਦੇਣ ਕਿਸ ਕ੍ਰਮ ਵਿੱਚ ਕਮਿਟ ਹੋਏ। ਘੱਟ ਨੰਬਰ ਲਏ ਲੈਣ-ਦੇਣ ਵੱਧ ਨੰਬਰ ਲਏ ਤੋਂ ਬਾਅਦ ਕਮਿਟ ਹੋ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ ਵੰਡ-ਕ੍ਰਮ 'ਤੇ ਆਧਾਰਿਤ ਕਰਸਰ ਵੀ ਖੱਡ ਛੱਡ ਸਕਦਾ ਹੈ।

ਫੀਡ ਨੂੰ ਦੇਣੇ ਪੰਜ ਵਾਅਦੇ

ਟ੍ਰਾਂਸਪੋਰਟ ਚੁਣਨ ਤੋਂ ਪਹਿਲਾਂ ਸਰੋਤ ਸਿਸਟਮ ਤੋਂ ਪੰਜ ਧਾਰਾਵਾਂ ਦਾ ਇਕਰਾਰ ਮੰਗੋ। ਕੋਈ ਧਾਰਾ ਗੁੰਮ ਹੋਵੇ ਤਾਂ ਤੁਹਾਡੇ ਕੋਲ ਪਰਿਵਰਤਨ-ਫੀਡ ਨਹੀਂ, ਅੰਦਾਜ਼ਾ ਹੈ।

  • ਕਵਰੇਜ: ਸ਼ਾਮਲ ਕਰਨਾ, ਅੱਪਡੇਟ ਅਤੇ ਹਟਾਉਣਾ, ਹਰ ਇੱਕ ਨਾਲ ਲਾਗੂ ਕਰਨ ਲਈ ਲੋੜੀਂਦੀ ਸਥਿਰ ਕੁੰਜੀ।
  • ਸੀਮਾ: ਕਰਸਰ ਮੁੱਲ ਦਾ ਅਰਥ ਕੀ ਅਤੇ ਸੁਸੰਗਤ ਬੈਚ ਵਿੱਚ ਕੀ ਹੁੰਦਾ ਹੈ।
  • ਸੁਸੰਗਤਤਾ: ਅਸੰਗਤ ਸਰੋਤ-ਹਾਲਤਾਂ ਨੂੰ ਮਿਲਾਏ ਬਿਨਾਂ ਸੰਬੰਧਿਤ ਸਾਰਣੀਆਂ ਕਿਵੇਂ ਪੜ੍ਹੀਆਂ ਜਾਂਦੀਆਂ ਹਨ।
  • ਰੱਖ-ਰਖਾਅ: ਡਿਸਕਨੈਕਟ ਹੋਇਆ ਖਪਤਕਾਰ ਆਪਣੀ ਸੰਭਾਲੀ ਸਥਿਤੀ ਤੋਂ ਕਿੰਨਾ ਚਿਰ ਮੁੜ ਸ਼ੁਰੂ ਕਰ ਸਕਦਾ ਹੈ।
  • ਮੁੜ-ਸਥਾਪਨਾ: ਜਦੋਂ ਉਹ ਸਥਿਤੀ ਹੁਣ ਵੈਧ ਨਹੀਂ ਤਾਂ ਸਮਰਥਿਤ ਪੂਰਾ ਸਨੈਪਸ਼ਾਟ।

ਸਮਰਥਿਤ ਕਾਰਜਵਿਧੀ ਪੰਜੇ ਪੂਰੇ ਕਰ ਸਕਦੀ ਹੈ। SQL Server ਦਾ ਬਦਲਾਅ-ਟਰੈਕਿੰਗ ਦਸਤਾਵੇਜ਼ ਇੱਕ ਠੋਸ ਪ੍ਰਕਾਸ਼ਿਤ ਉਦਾਹਰਨ ਹੈ: ਇਹ ਘੱਟੋ-ਘੱਟ ਵੈਧ ਸੰਸਕਰਣ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਬਦਲਾਵਾਂ ਨਾਲ ਹਟਾਉਣਾ ਵੀ ਦਰਜ ਕਰਦਾ ਹੈ, ਅਤੇ ਅਜਿਹਾ ਸਨੈਪਸ਼ਾਟ ਲੈਣ-ਦੇਣ ਦੱਸਦਾ ਹੈ ਜੋ ਪ੍ਰਮਾਣਿਕਤਾ, ਸੰਸਕਰਣ-ਕੈਪਚਰ ਅਤੇ ਸੰਬੰਧਿਤ ਬਦਲਾਅ-ਪ੍ਰਸ਼ਨਾਂ ਨੂੰ ਘੇਰਦਾ ਹੈ। ਇਹ ਉਦਾਹਰਨ ਹੈ ਕਿ ਸਰੋਤ ਤੋਂ ਕੀ ਮੰਗਣਾ ਚਾਹੀਦਾ ਹੈ, ਉਹ ਵਾਕ-ਰਚਨਾ ਨਹੀਂ ਜੋ ਕਿਸੇ ਹੋਰ ਇੰਜਣ ਵਿੱਚ ਚਿਪਕਾਈ ਜਾਵੇ।

ਚੈੱਕਪੁਆਇੰਟ ਨੂੰ ਪਾਈਪਲਾਈਨ ਦਾ ਹਿੱਸਾ ਮੰਨ ਕੇ ਡਿਜ਼ਾਈਨ ਕਰੋ

ਖਪਤਕਾਰ ਦੀ ਸੰਭਾਲੀ ਸਥਿਤੀ ਹੀ ਅਸਲ ਸਟੇਟ ਮਸ਼ੀਨ ਹੈ, ਇਸ ਲਈ ਇਸਨੂੰ ਉਸੇ ਤਰ੍ਹਾਂ ਲਿਖੋ। ਕਰਸਰ ਸਿਰਫ਼ ਉਸ ਵਰਕਫਲੋ ਰਾਹੀਂ ਅੱਗੇ ਵਧ ਸਕਦਾ ਹੈ ਜਿਸਨੇ ਬੈਚ ਪਹਿਲਾਂ ਹੀ ਲਾਗੂ ਕਰ ਦਿੱਤਾ ਅਤੇ ਟਾਰਗੈਟ ਲੈਣ-ਦੇਣ ਕਮਿਟ ਕਰ ਦਿੱਤਾ।

cursor  = durable_checkpoint()          # last fully applied position
batch   = extract(cursor, upper_bound)  # one consistent batch
apply(batch)                            # idempotent at the target
commit()
checkpoint(batch.upper_bound)           # only now

ਜੇ ਡਿਲੀਵਰੀ ਅੱਧ ਵਿੱਚ ਅਸਫਲ ਹੋਵੇ, ਤਾਂ ਨਵੀਂ ਸਰੋਤ-ਸਥਿਤੀ ਘੜਨ ਦੀ ਥਾਂ ਉਹੀ ਬੈਚ ਮਿਲਾਓ। ਵਧੇਰੇ ਤਾਜ਼ਾ ਉੱਪਰੀ ਸੀਮਾ ਨਾਲ ਮੁੜ ਕੱਢਣਾ ਹੀ ਉਹ ਰਾਹ ਹੈ ਜਿਸ ਰਾਹੀਂ ਅੰਸ਼ਿਕ ਲਾਗੂਕਰਨ ਸਥਾਈ ਖਾਲੀ ਥਾਂ ਬਣਦਾ ਹੈ। ਸ਼ੀਸ਼ਾ-ਨਿਯਮ ਦੂਜੇ ਪਾਸੇ ਵੀ ਲਾਗੂ ਹੁੰਦਾ ਹੈ: ਟਾਰਗੈਟ 'ਤੇ ਇਡੈਂਪੋਟੈਂਟ ਲਾਗੂਕਰਨ ਨਕਲਾਂ ਰੋਕਦਾ ਹੈ ਅਤੇ ਕੱਢਣ ਨੇ ਕਦੇ ਨਾ ਦੇਖੇ ਬਦਲਾਅ ਲਈ ਕੁਝ ਨਹੀਂ ਕਰਦਾ।

ਹਟਾਉਣ ਲਈ ਰਿਕਾਰਡ ਚਾਹੀਦੇ, ਨਤੀਜੇ ਨਹੀਂ

ਅਜੇ ਵੀ ਮੌਜੂਦ ਕਤਾਰਾਂ ਦੀ ਤੁਲਨਾ ਕਰਕੇ ਖਪਤਕਾਰ ਨੂੰ ਇਹ ਨਹੀਂ ਦੱਸਿਆ ਜਾ ਸਕਦਾ ਕਿ ਕਿਹੜੀਆਂ ਕੁੰਜੀਆਂ ਗਾਇਬ ਹੋਈਆਂ। ਜੋ ਸਰੋਤ ਕਦੇ ਹਟਾਉਣਾ ਦਰਜ ਨਹੀਂ ਕਰਦਾ, ਉਹ ਤੁਹਾਨੂੰ ਦੋ ਅਧੂਰੇ ਵਿਕਲਪ ਦਿੰਦਾ ਹੈ: ਤੁਲਨਾ ਲਈ ਕਾਫ਼ੀ ਲੰਮਾ ਕੁੰਜੀ-ਇਤਿਹਾਸ ਰੱਖਣਾ, ਜਾਂ ਸ਼ਡਿਊਲ ਅਨੁਸਾਰ ਸਪਸ਼ਟ ਪੂਰਾ ਮਿਲਾਨ ਚਲਾਉਣਾ। ਦੋਵੇਂ ਖਰਚੇ ਵਾਲੇ ਡਿਜ਼ਾਈਨ ਫੈਸਲੇ ਹਨ, ਅਤੇ ਕੋਈ ਵੀ ਉਦੋਂ ਤੱਕ ਨਹੀਂ ਹੁੰਦਾ ਜਦੋਂ ਤੱਕ ਕੋਈ ਮਾਲਕ ਨਾ ਹੋਵੇ।

ਰੱਖ-ਰਖਾਅ ਵੀ ਉਹੀ ਕਿਸਮ ਦਾ ਫੈਸਲਾ ਹੈ। ਹਰ ਸਮਰਥਿਤ ਬਦਲਾਅ-ਫੀਡ ਦੀ ਇੱਕ ਵਿੰਡੋ ਹੁੰਦੀ ਹੈ; ਇਸਨੂੰ ਇਕਰਾਰ ਵਿੱਚ ਘੋਸ਼ਿਤ ਕਰੋ ਅਤੇ ਚੇਤਾਵਨੀ ਦਿਓ ਜਦੋਂ ਖਪਤਕਾਰ ਦਾ ਚੈੱਕਪੁਆਇੰਟ ਇਸਦੇ ਨੇੜੇ ਆਵੇ। ਦੋ ਹਫ਼ਤਿਆਂ ਦੇ ਰੁਕਾਵਟ ਤੋਂ ਬਾਅਦ ਜਾਗਣ ਵਾਲੇ ਖਪਤਕਾਰ ਨੂੰ ਚੁੱਪਚਾਪ ਅੰਸ਼ਿਕ ਬੈਚ ਮਿਲਣ ਦੀ ਥਾਂ ਸਪਸ਼ਟ "ਮੁੜ-ਸਥਾਪਨਾ ਲੋੜੀਂਦੀ" ਗਲਤੀ ਪੜ੍ਹਨੀ ਚਾਹੀਦੀ ਹੈ।

ਫਿਰ ਮਾਪੋ ਕਿ ਡੈਲਟਾ ਲਾਭਦਾਇਕ ਸੀ ਜਾਂ ਨਹੀਂ

ਹਰ ਕੁੰਜੀ ਅਤੇ ਹੈਸ਼ ਦੀ ਤੁਲਨਾ ਵੱਲ ਵਾਪਸ ਜਾਣਾ ਕਦੇਕਦੇ ਸਹੀ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਇਸਦੀ ਲਾਗਤ ਜਾਣਨਾ ਯੋਗ ਹੈ। ਤੁਸੀਂ ਅਜੇ ਵੀ ਹਰ ਕਤਾਰ ਦੀ ਜਾਣਕਾਰੀ ਭੇਜਦੇ ਹੋ, ਹੈਸ਼ ਸਾਰਣੀਆਂ ਭਰ ਸੁਸੰਗਤ ਸਨੈਪਸ਼ਾਟ ਨਹੀਂ ਦਿੰਦੇ, ਅਤੇ ਹੈਸ਼ ਸਕੀਮ ਪ੍ਰਤੀਨਿਧਤਾ ਤੇ ਟਕਰਾਵਾਂ ਬਾਰੇ ਆਪਣੇ ਸਵਾਲ ਲਿਆਉਂਦੀ ਹੈ। ਪਰਖਣਯੋਗ ਸੀਮਾ ਨਾਲ ਘੱਟ ਬਾਈਟ ਟੀਚਾ ਹੈ; ਕਮਿਟ ਹੋਇਆ ਬਦਲਾਅ ਚੁੱਪਚਾਪ ਡੇਗਣ ਵਾਲੇ ਘੱਟ ਬਾਈਟ ਡੈਲਟਾ ਹੀ ਨਹੀਂ।

ਆਖਰੀ-ਸੋਧ ਕਾਲਮ ਇੱਕ ਸੰਕੇਤ ਹੈ। ਜੋ ਕਰਸਰ ਦੇਰ ਨਾਲ ਆਏ ਕਮਿਟ, ਹਟਾਉਣ ਅਤੇ ਲੰਮੀ ਰੁਕਾਵਟ ਨੂੰ ਪਾਰ ਕਰਦਾ ਹੈ, ਉਹ ਇਕਰਾਰ ਹੈ।

ਸੰਬੰਧਿਤ ਲੇਖ