ਬਹੁ-ਖੇਤਰੀ ਲਿਖਾਈ: ਕਮਿਟ ਅਸਲ ਵਿੱਚ ਕਿੱਥੇ ਪਹੁੰਚਦਾ ਹੈ?
ਰੂਟਿੰਗ ਬੇਨਤੀ ਨੂੰ ਇੱਕ ਖੇਤਰ ਤੱਕ ਪਹੁੰਚਾਉਂਦੀ ਹੈ; ਸਿਰਫ਼ ਇੱਕ ਟ੍ਰਾਂਜ਼ੈਕਸ਼ਨ ਸੀਮਾ ਹੀ ਲਿਖਾਈ ਨੂੰ ਪਰਮਾਣੂ ਬਣਾਉਂਦੀ ਹੈ। ਇਨਵੇਰੀਐਂਟ ਦਾ ਨਾਮ ਦਿਓ, ਮਾਲਕ ਚੁਣੋ, ਫਿਰ ਉਸ ਦੇ ਆਲੇ-ਦੁਆਲੇ ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਡਿਜ਼ਾਈਨ ਕਰੋ।
ਦੋ ਖੇਤਰਾਂ ਵਿੱਚ ਦੋ ਐਪਲੀਕੇਸ਼ਨ ਸਰਵਰ, VPN ਰਾਹੀਂ ਲਿਖਣ ਵਾਲਾ ਇੱਕ ਕਲਾਇੰਟ, ਅਤੇ ਇੱਕ ਸਵਾਲ ਜੋ ਕਿਸੇ ਨੇ ਨਹੀਂ ਲਿਖਿਆ: ਲਿਖਾਈ ਹੋਈ ਹੈ ਇਹ ਕਿਹੜਾ ਹਿੱਸਾ ਤੈਅ ਕਰਦਾ ਹੈ? ਰੂਟਿੰਗ ਬੇਨਤੀ ਨੂੰ ਇੱਕ ਪ੍ਰਕਿਰਿਆ ਤੱਕ ਪਹੁੰਚਾਉਂਦੀ ਹੈ। ਟ੍ਰਾਂਜ਼ੈਕਸ਼ਨ ਸੀਮਾ ਤੈਅ ਕਰਦੀ ਹੈ ਕਿ ਤਬਦੀਲੀ ਕਦੋਂ ਟਿਕਾਊ ਅਤੇ ਦਿਖਣਯੋਗ ਹੁੰਦੀ ਹੈ। ਇਹ ਵੱਖ-ਵੱਖ ਸਿਸਟਮਾਂ ਵੱਲੋਂ ਕੀਤੇ ਜਾਂਦੇ ਵੱਖ-ਵੱਖ ਕੰਮ ਹਨ, ਅਤੇ ਉਨ੍ਹਾਂ ਵਿਚਕਾਰਲਾ ਪਾੜਾ ਹੀ ਉਹ ਥਾਂ ਹੈ ਜਿੱਥੇ ਬਹੁ-ਖੇਤਰੀ ਲਿਖਾਈ ਦੀਆਂ ਬਹੁਤੀਆਂ ਬੱਗਾਂ ਰਹਿੰਦੀਆਂ ਹਨ।
ਨਕਸ਼ੇ ਤੋਂ ਨਹੀਂ, ਕਾਰੋਬਾਰੀ ਨਿਯਮ ਤੋਂ ਸ਼ੁਰੂ ਕਰੋ
ਭੂਗੋਲ ਬਾਰੇ ਨਹੀਂ, ਕਾਰੋਬਾਰੀ ਨਿਯਮ ਬਾਰੇ ਇੱਕ ਵਾਕ ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ: ਕਿਹੜੇ ਪੜ੍ਹਨ ਅਤੇ ਲਿਖਣ ਇਕੱਠੇ ਸਫਲ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ, ਅਤੇ ਕਿਹੜੀਆਂ ਸਮਕਾਲੀ ਤਬਦੀਲੀਆਂ ਉਸ ਦੌਰਾਨ ਅਸੰਭਵ ਹੋਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ। ਸਟਾਕ ਰਾਖਵੀਂ ਲਈ ਇਸ ਦਾ ਅਰਥ ਹੈ ਕਿ ਸਟਾਕ ਜਾਂਚ ਅਤੇ ਰਾਖਵੀਂ ਜਾਂ ਤਾਂ ਦੋਵੇਂ ਲਾਗੂ ਹੁੰਦੀਆਂ ਹਨ ਜਾਂ ਕੋਈ ਨਹੀਂ, ਅਤੇ ਕੋਈ ਦੂਜਾ ਆਰਡਰ ਵਿਚਕਾਰ ਉਹੀ ਇਕਾਈ ਨਹੀਂ ਵਰਤ ਸਕਦਾ।
| Requirement | What satisfies it | What does not |
|---|---|---|
| All-or-nothing application | A transaction inside one owning system | A VPN path between regions |
| No double spend | Isolation strong enough to exclude the conflict | Atomicity alone |
| Survive a region loss | Replication the database itself documents | Two independent databases behind one client |
ਬਿਲਕੁਲ ਉਹ ਵਿਚਕਾਰਲੀ ਕਤਾਰ ਹੀ ਟੀਮਾਂ ਛੱਡ ਦਿੰਦੀਆਂ ਹਨ। ਲੋੜੀਂਦੇ ਵਿਅਕਤੀਕਰਨ ਤੋਂ ਬਿਨਾਂ ਪਰਮਾਣੂਤਾ ਦੋ ਟ੍ਰਾਂਜ਼ੈਕਸ਼ਨਾਂ ਨੂੰ ਵੱਖਰੇ ਤੌਰ ਤੇ ਸਹੀ ਕਮਿਟ ਹੋਣ ਦਿੰਦੀ ਹੈ ਅਤੇ ਫਿਰ ਵੀ ਅਜਿਹੀ ਹਾਲਤ ਪੈਦਾ ਕਰਦੀ ਹੈ ਜਿਸ ਨੂੰ ਕਾਰੋਬਾਰ ਅਸੰਭਵ ਮੰਨਦਾ ਹੈ, ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਕੋਈ ਵੀ ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਤਰਕ ਉਸ ਨੂੰ ਸੁਧਾਰਦਾ ਨਹੀਂ।
ਇੱਕ ਅਧਿਕਾਰਤ ਸੀਮਾ ਦੋ ਖੇਤਰੀ ਸਰਵਰਾਂ ਨੂੰ ਹਰਾਉਂਦੀ ਹੈ
ਖੇਤਰੀ ਐਪਲੀਕੇਸ਼ਨ ਸਰਵਰ ਜਿੱਥੇ ਹਨ ਉੱਥੇ ਹੀ ਰਹਿ ਸਕਦੇ ਹਨ, ਜੇ ਉਹ ਕਾਰਵਾਈ ਨੂੰ ਇੱਕ ਸਮਰਥਿਤ ਟ੍ਰਾਂਜ਼ੈਕਸ਼ਨ ਸੀਮਾ ਦੇ ਅੰਦਰ ਕਰਨ ਵਾਲੀ ਸੇਵਾ ਨੂੰ ਸੌਂਪਦੇ ਹਨ। ਐਪਲੀਕੇਸ਼ਨ ਪਰਤ ਇਰਾਦੇ ਦਾ ਰਾਊਟਰ ਬਣ ਜਾਂਦੀ ਹੈ; ਡੇਟਾ ਪਰਤ ਸੱਚ ਦੀ ਮਾਲਕ ਹੁੰਦੀ ਹੈ।
ਉਸ ਸੀਮਾ ਨੂੰ ਛੋਟਾ ਰੱਖੋ ਅਤੇ ਜਿਸ ਡੇਟਾ ਨੂੰ ਉਹ ਛੂੰਹਦੀ ਹੈ ਉਸ ਦੇ ਨੇੜੇ ਰੱਖੋ। ਜਦੋਂ ਮਨੁੱਖ ਕਿਸੇ ਸੰਕੇਤ ਦਾ ਜਵਾਬ ਦਿੰਦਾ ਹੈ ਜਾਂ ਜਦੋਂ ਕੋਈ ਕਾਲ ਦੋ ਖੇਤਰਾਂ ਨੂੰ ਪਾਰ ਕਰਦੀ ਹੈ, ਉਦੋਂ ਖੁੱਲ੍ਹਾ ਰੱਖਿਆ ਟ੍ਰਾਂਜ਼ੈਕਸ਼ਨ ਆਪਣਾ ਸਮਾਂ ਤਾਲੇ ਫੜਨ ਵਿੱਚ ਲੰਘਾਉਂਦਾ ਹੈ ਅਤੇ ਇਹ ਸੰਭਾਵਨਾ ਵਧਾਉਂਦਾ ਹੈ ਕਿ ਉਸ ਦੇ ਪਿੱਛੇ ਕੁਝ ਹੋਰ ਸਮਾਂ-ਸੀਮਾ ਤੋਂ ਬਾਹਰ ਹੋ ਜਾਵੇ। ਉਹ ਅਸਫਲਤਾ ਡੇਟਾਬੇਸ ਸਮੱਸਿਆ ਵਰਗੀ ਲੱਗਦੀ ਹੈ ਅਤੇ ਅਸਲ ਵਿੱਚ ਅਜਿਹਾ ਭੇਸ ਧਾਰਨ ਕੀਤਾ ਡਿਜ਼ਾਈਨ ਸਮੱਸਿਆ ਹੈ। ਫੈਸਲੇ ਨੂੰ ਡੇਟਾ ਪਰਤ ਵਿੱਚ ਲਿਜਾਣ ਨਾਲ ਆਮ ਤੌਰ ਤੇ ਇਹ ਪੂਰੀ ਤਰ੍ਹਾਂ ਦੂਰ ਹੋ ਜਾਂਦੀ ਹੈ।
BEGIN;
UPDATE inventory SET reserved = reserved + 1
WHERE sku = 'A-100' AND available >= 1;
INSERT INTO reservation (sku, order_id) VALUES ('A-100', 'ord-9f');
COMMIT;
ਉਸ ਰੇਖਾ-ਚਿੱਤਰ ਨੂੰ ਸੀਮਾ ਵਜੋਂ ਪੜ੍ਹੋ, ਪ੍ਰਦਰਸ਼ਨ ਸਿਫ਼ਾਰਸ਼ ਵਜੋਂ ਨਹੀਂ। ਗੱਲ ਇਹ ਹੈ ਕਿ ਜਾਂਚ ਅਤੇ ਪ੍ਰਵੇਸ਼ ਇੱਕੋ ਕਮਿਟ ਸਾਂਝਾ ਕਰਦੇ ਹਨ, ਇਸ ਲਈ ਸਮਕਾਲੀ ਆਰਡਰ ਜਾਂ ਤਾਂ ਸਟਾਕ ਵਰਤਿਆ ਹੋਇਆ ਦੇਖਦਾ ਹੈ ਜਾਂ ਬਿਲਕੁਲ ਨਹੀਂ ਦੇਖਦਾ।
ਪ੍ਰਤੀਕ੍ਰਿਤ ਡੇਟਾਬੇਸ ਕੀ ਦਿੰਦਾ ਹੈ ਅਤੇ ਕੀ ਨਹੀਂ ਦਿੰਦਾ
ਪ੍ਰਤੀਕ੍ਰਿਤ ਡੇਟਾਬੇਸ ਆਪਣੇ ਟ੍ਰਾਂਜ਼ੈਕਸ਼ਨ ਮਾਡਲ ਦੇ ਸਮਰਥਨ ਨਾਲ ਵਧੇਰੇ ਚੌੜੀ ਸੀਮਾ ਦੇ ਸਕਦਾ ਹੈ। Spanner ਤਾਲਿਕਾਵਾਂ ਵਿੱਚ ਇੱਕੋ ਡੇਟਾਬੇਸ ਦੇ ਅੰਦਰ ਪਰਮਾਣੂ ਪੜ੍ਹਨ-ਲਿਖਣ ਟ੍ਰਾਂਜ਼ੈਕਸ਼ਨਾਂ ਨੂੰ ਨਿਰਧਾਰਤ ਵਿਅਕਤੀਕਰਨ ਅਤੇ ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਵਿਵਹਾਰ ਸਹਿਤ ਦਸਤਾਵੇਜ਼ ਕਰਦਾ ਹੈ। ਇਹ ਅਜਿਹੀ ਗਰੰਟੀ ਹੈ ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਪੜ੍ਹਦੇ ਹੋ, ਪਰਖਦੇ ਹੋ ਅਤੇ ਜਾਣ-ਬੁੱਝ ਕੇ ਇਸ ਉੱਤੇ ਭਰੋਸਾ ਕਰਦੇ ਹੋ।
ਇਹ ਉਤਪਾਦ ਤੋਂ ਆਉਣ ਵਾਲੀ ਗਰੰਟੀ ਵੀ ਹੈ, ਮਾਰਗ ਤੋਂ ਨਹੀਂ। ਖੇਤਰਾਂ ਵਿਚਕਾਰ VPN ਬਦਲਦਾ ਹੈ ਕਿ ਪੈਕੇਟ ਕਿਵੇਂ ਸਫ਼ਰ ਕਰਦੇ ਹਨ ਅਤੇ ਅਸਫਲਤਾਵਾਂ ਕਿਵੇਂ ਦਿਖਦੀਆਂ ਹਨ। ਟਨਲ ਕਿੰਨੀ ਵੀ ਸਿਹਤਮੰਦ ਲੱਗੇ, ਇਹ ਟ੍ਰਾਂਜ਼ੈਕਸ਼ਨ ਸੀਮਾ ਨੂੰ ਇੱਕ ਕਤਾਰ ਵੀ ਨਹੀਂ ਵਧਾਉਂਦਾ। ਦੋਵਾਂ ਨੂੰ ਰਲਾ ਦੇਣ ਨਾਲ ਅਜਿਹੀਆਂ ਬਣਾਵਟਾਂ ਬਣਦੀਆਂ ਹਨ ਜਿੱਥੇ ਹਰ ਹਿੱਸਾ ਆਪਣੀ ਜਾਂਚ ਪਾਸ ਕਰਦਾ ਹੈ ਅਤੇ ਡੇਟਾ ਫਿਰ ਵੀ ਨਹੀਂ ਮਿਲਦਾ।
ਦੋ ਡੇਟਾਬੇਸ ਇੱਕ ਸਿਸਟਮ ਨਹੀਂ ਬਣਦੇ
ਸੁਤੰਤਰ ਤੌਰ ਤੇ ਪ੍ਰਬੰਧਿਤ ਦੋ ਡੇਟਾਬੇਸ ਸਾਂਝਾ ਟ੍ਰਾਂਜ਼ੈਕਸ਼ਨ ਪ੍ਰਬੰਧਕ ਨਹੀਂ ਪਾ ਲੈਂਦੇ ਕਿਉਂਕਿ ਕਲਾਇੰਟ ਦੋਵਾਂ ਤੱਕ ਪਹੁੰਚ ਸਕਦੇ ਹਨ। ਜੇ ਕਾਰੋਬਾਰ ਨੂੰ ਸੱਚਮੁੱਚ ਇਸ ਜੋੜੀ ਉੱਤੇ ਪਰਮਾਣੂ ਵਚਨਬੱਧਤਾ ਚਾਹੀਦੀ ਹੈ, ਤਾਂ ਤਾਲਮੇਲ ਵਿਧੀ, ਭਾਗੀਦਾਰ ਅਤੇ ਰਿਕਵਰੀ ਪ੍ਰਕਿਰਿਆ ਸਭ ਨੂੰ ਮੰਨਣ ਦੀ ਥਾਂ ਚੁਣਿਆ ਅਤੇ ਯੋਗ ਠਹਿਰਾਇਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।
ਉਸ ਪਲ ਬਾਰੇ ਸੋਚੋ ਜਦੋਂ ਕੰਮ ਤਿਆਰ ਹੋਣ ਤੋਂ ਬਾਅਦ ਕੋਈ ਭਾਗੀਦਾਰ ਜਾਂ ਲਿੰਕ ਗਾਇਬ ਹੋ ਜਾਂਦਾ ਹੈ। ਸਮਰਥਿਤ ਵੰਡਿਆ ਕਮਿਟ ਇੱਕ ਅਣਸੁਲਝੀ ਹਾਲਤ ਛੱਡ ਸਕਦਾ ਹੈ ਜਿਸ ਲਈ ਰਿਕਵਰੀ ਵਿਧੀ ਅਤੇ ਮਨੁੱਖੀ ਫੈਸਲਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਇਹ ਕੋਈ ਵਾਅਦਾ ਨਹੀਂ ਦਿੰਦਾ ਕਿ ਹਰ ਵੰਡ ਦੌਰਾਨ ਹਰ ਖੇਤਰ ਲਿਖਣਯੋਗ ਰਹੇਗਾ।
ਜੇ ਇਸ ਦੀ ਥਾਂ ਅਸਮਕਾਲੀ ਤਾਲਮੇਲ ਸਵੀਕਾਰਯੋਗ ਹੈ, ਤਾਂ ਇਹ ਸਪਸ਼ਟ ਕਹੋ ਅਤੇ ਵਿਚਕਾਰਲੀਆਂ ਕਾਰੋਬਾਰੀ ਹਾਲਤਾਂ ਅਤੇ ਮੇਲ-ਮਿਲਾਪ ਨਿਯਮ ਲਿਖੋ। ਮੁਆਵਜ਼ੇ ਨਾਲ ਸਥਾਨਕ ਤੌਰ ਤੇ ਕਮਿਟ ਹੋਏ ਕਦਮਾਂ ਦੀ ਲੜੀ ਜਾਇਜ਼ ਡਿਜ਼ਾਈਨ ਹੈ; ਇਹ ਸਿਰਫ਼ ਦੂਜੇ ਨਾਮ ਹੇਠ ਇੱਕ ਪਰਮਾਣੂ ਟ੍ਰਾਂਜ਼ੈਕਸ਼ਨ ਨਹੀਂ ਹੈ।
ਪਹਿਲੀ ਰੁਕਾਵਟ ਤੋਂ ਪਹਿਲਾਂ ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਡਿਜ਼ਾਈਨ ਕਰੋ
ਕਾਰਵਾਈ ਕਮਿਟ ਹੋਣ ਤੋਂ ਬਾਅਦ ਕਲਾਇੰਟ ਜਵਾਬ ਗੁਆ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ ਕਾਲਰ ਸਮਾਂ-ਸੀਮਾ ਨੂੰ ਅਸਫਲਤਾ ਨਹੀਂ ਮੰਨ ਸਕਦਾ। ਟਿਕਾਊ ਬੇਨਤੀ ਪਛਾਣ ਸੰਭਾਲੋ ਅਤੇ ਤਬਦੀਲੀ ਮੁੜ ਅਜ਼ਮਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਸੇਵਾ ਦਾ ਨਤੀਜਾ ਜਾਂ ਨਿਸ਼ਕ੍ਰਿਯਤਾ ਵਿਧੀ ਵਰਤੋ, ਨਹੀਂ ਤਾਂ ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਦੂਜੀ ਲਿਖਾਈ ਬਣ ਜਾਂਦੀ ਹੈ।
ਆਪਣੇ-ਆਪ ਟ੍ਰਾਂਜ਼ੈਕਸ਼ਨ ਕਾਲਬੈਕ ਮੁੜ-ਕੋਸ਼ਿਸ਼ਯੋਗ ਰੱਦ ਤੋਂ ਬਾਅਦ ਇੱਕ ਤੋਂ ਵੱਧ ਵਾਰ ਚੱਲ ਸਕਦੇ ਹਨ, ਜੋ ਉਨ੍ਹਾਂ ਨੂੰ ਨਾ-ਪਲਟਣਯੋਗ ਬਾਹਰੀ ਪ੍ਰਭਾਵਾਂ ਲਈ ਮਾੜਾ ਘਰ ਬਣਾਉਂਦਾ ਹੈ। ਜਦੋਂ ਤੱਕ ਕਾਰਜ-ਪ੍ਰਵਾਹ ਉਨ੍ਹਾਂ ਲਈ ਸਪਸ਼ਟ ਸੁਰੱਖਿਅਤ ਪ੍ਰੋਟੋਕੋਲ ਨਿਰਧਾਰਤ ਨਹੀਂ ਕਰਦਾ, ਉਨ੍ਹਾਂ ਨੂੰ ਕਾਲਬੈਕ ਤੋਂ ਬਾਹਰ ਰੱਖੋ। ਉਹੀ ਸਾਵਧਾਨੀ ਪੈਸਾ ਖਰਚਣ ਜਾਂ ਸੁਨੇਹਾ ਭੇਜਣ ਵਾਲੀ ਹਰ ਚੀਜ਼ ਉੱਤੇ ਲਾਗੂ ਹੁੰਦੀ ਹੈ। ਦੋਹਰਾ ਚਾਰਜ ਦੋਹਰੀ ਲੌਗ ਲਾਈਨ ਨਾਲੋਂ ਕਿਤੇ ਔਖੀ ਗੱਲਬਾਤ ਹੈ।
ਸਵੀਕ੍ਰਿਤੀ ਨੂੰ ਚਾਰ ਹਾਲਤਾਂ ਮੁੜ ਚਲਾਉਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ: ਉਸੇ ਕਤਾਰ ਲਈ ਮੁਕਾਬਲਾ ਕਰਦੇ ਦੋ ਕਲਾਇੰਟ, ਸੇਵਾ ਵੱਲੋਂ ਮੁੜ-ਕੋਸ਼ਿਸ਼ਯੋਗ ਦੱਸਿਆ ਰੱਦ, ਅਜਿਹਾ ਕਮਿਟ ਜਿਸ ਦਾ ਜਵਾਬ ਕਦੇ ਨਹੀਂ ਆਉਂਦਾ, ਅਤੇ ਇੱਕ ਖੇਤਰ ਜਾਂ ਉਨ੍ਹਾਂ ਵਿਚਕਾਰਲੇ ਲਿੰਕ ਦਾ ਨੁਕਸਾਨ। ਕਮਿਟ ਹੋਇਆ ਕਾਰੋਬਾਰੀ ਨਤੀਜਾ ਅਤੇ ਨਾ-ਸੁਲਝੀਆਂ ਹਾਲਤਾਂ ਨੂੰ ਰੂਟਿੰਗ ਡਿਜ਼ਾਈਨ ਕੋਲ ਦਰਜ ਕਰੋ, ਤਾਂ ਜੋ ਕੋਈ ਨੈੱਟਵਰਕ ਨੂੰ ਗਰੰਟੀ ਦੇਣ ਵਾਲਾ ਹਿੱਸਾ ਨਾ ਸਮਝ ਲਵੇ।