ਸਮਕਾਲੀਕਰਨ
bae ਦਾ ਸਮਕਾਲੀਕਰਨ coven ਦਾ ਸਮਕਾਲੀਕਰਨ ਹੈ: bae ਆਪਣੀਆਂ ਟੇਬਲਾਂ ਅਤੇ ਬਲੌਬ declare ਕਰਦਾ ਹੈ, ਅਤੇ coven ਬਾਕੀ ਕਰਦਾ ਹੈ। ਇਹ ਪੰਨਾ ਉਹ mechanics ਹੈ ਜੋ bae ਉੱਤੇ ਲਾਗੂ ਹੁੰਦੀ ਹੈ; coven ਦੇ ਆਪਣੇ docs ਹਰ ਹਿੱਸੇ ਨੂੰ ਪੂਰੀ ਗਹਿਰਾਈ ਵਿੱਚ ਸਮਝਾਉਂਦੇ ਹਨ।
ਫੜਨਾ
ਇਸ ਭਾਗ ਦਾ ਲਿੰਕcoven SQLite ਕਨੈਕਸ਼ਨ ਦਾ ਮਾਲਕ ਹੈ, ਇਸ ਲਈ bae ਦੀ ਹਰ commit ਕੀਤੀ ਲਿਖਤ ਉਸ ਰਾਹੀਂ ਜਾਂਦੀ ਹੈ। ਜਦੋਂ ਸਮਕਾਲੀ ਸਾਰਣੀਆਂ ਬਦਲਣ ਵਾਲਾ transaction commit ਹੁੰਦਾ ਹੈ, coven ਉਸੇ transaction ਵਿੱਚ ਹਰ ਕਤਾਰ ਦੀ ਤਬਦੀਲੀ, ਉਸਦੇ ਛੂਹੇ ਕਾਲਮਾਂ ਸਮੇਤ, ਦਰਜ ਕਰਦਾ ਹੈ, ਇਸ ਲਈ commit ਹੋਈ ਤਬਦੀਲੀ ਕਦੇ ਗੁਆਚਦੀ ਨਹੀਂ, ਭਾਵੇਂ ਐਪ ਇੱਕ ਪਲ ਬਾਅਦ crash ਹੋ ਜਾਵੇ। ਕੋਈ diffing ਨਹੀਂ, ਕੋਈ dirty flags ਨਹੀਂ: capture ਕਨੈਕਸ਼ਨ ਦਾ ਗੁਣ ਹੈ, ਅਤੇ ਕੋਈ ਲਿਖਤ ਖੁੰਝ ਨਹੀਂ ਸਕਦੀ। ਤਬਦੀਲੀ ਯੰਤਰ ਉੱਤੇ ਉਡੀਕਦੀ ਹੈ ਅਤੇ ਸਿਰਫ਼ ਭੇਜਣ ਵੇਲੇ ਇਨਕ੍ਰਿਪਟ ਤੇ ਦਸਤਖਤੀ ਹੁੰਦੀ ਹੈ, ਇਸ ਲਈ ਲਿਖਣ ਲਈ ਕੁੰਜੀ ਜਾਂ ਨੈੱਟਵਰਕ ਨਹੀਂ ਚਾਹੀਦਾ।
ਕਲਾਉਡ ਘਰ ਵਿੱਚ ਸੰਗ੍ਰਹਿ ਦਾ ਪੂਰਾ ਇਤਿਹਾਸ ਵਸਤੂਆਂ ਦੀ ਇੱਕ ਨੰਬਰਦਾਰ ਲੜੀ ਹੈ। ਹਰ ਇੱਕ ਵਿੱਚ ਇੱਕ ਯੰਤਰ ਦੀਆਂ ਤਬਦੀਲੀਆਂ ਦਾ ਸਮੂਹ, ਇੱਕ admin entry, ਇੱਕ ਮੈਂਬਰ ਲਈ ਮੋਹਰਬੰਦ ਕੁੰਜੀ, ਜਾਂ snapshot ਦੀ ਘੋਸ਼ਣਾ ਹੁੰਦੀ ਹੈ। ਹਰ ਯੰਤਰ ਇਨ੍ਹਾਂ ਨੂੰ ਤਰਤੀਬ ਵਿੱਚ ਲਾਗੂ ਕਰਦਾ ਹੈ ਅਤੇ ਕੋਈ ਨਹੀਂ ਛੱਡਦਾ, ਇਸ ਲਈ ਸਾਰੇ ਯੰਤਰ ਸਹਿਮਤ ਹੁੰਦੇ ਹਨ ਕਿ ਕੀ ਅਤੇ ਕਦੋਂ ਹੋਇਆ। ਯੰਤਰ ਪਹਿਲਾਂ ਦੀ ਹਰ ਵਸਤੂ ਲਾਗੂ ਕਰਨ ਤੋਂ ਬਾਅਦ ਹੀ ਅਗਲੀ ਵਸਤੂ ਜੋੜਦਾ ਹੈ।
ਇੱਕ ਸਮਕਾਲੀਕਰਨ ਚੱਕਰ ਯੰਤਰ ਵੱਲੋਂ ਆਖਰੀ ਵਾਰ ਲਾਗੂ ਕੀਤੀ ਵਸਤੂ ਤੋਂ ਅੱਗੇ ਪੜ੍ਹਦਾ ਹੈ ਜਦ ਤੱਕ ਕੋਈ ਗੈਰਹਾਜ਼ਰ ਨਾ ਮਿਲੇ, ਹਰ ਇੱਕ ਦੇ ਦਸਤਖਤ ਜਾਂਚ ਕੇ ਲਾਗੂ ਕਰਦਾ ਹੈ, ਇਸ ਯੰਤਰ ਦੀਆਂ ਕਤਾਰ ਵਿਚਲੀਆਂ ਤਬਦੀਲੀਆਂ ਇੱਕ ਨਵੀਂ ਵਸਤੂ ਵਜੋਂ ਭੇਜਦਾ ਹੈ, ਫਿਰ ਨਵੀਂ ਹਾਲਤ ਜੋ ਕੰਮ ਮੰਗਦੀ ਹੈ ਉਹ ਕਰਦਾ ਹੈ: ਪਹੁੰਚ ਸਾਂਝੀ ਕਰਨੀ ਜਾਂ ਹਟਾਉਣੀ, snapshots ਲੈਣੇ, ਪੁਰਾਣਾ ਇਤਿਹਾਸ ਮਿਟਾਉਣਾ। ਸ਼ਾਂਤ ਸੰਗ੍ਰਹਿ ਉੱਤੇ ਇੱਕ ਚੱਕਰ ਦੋ ਬੇਨਤੀਆਂ ਲੈਂਦਾ ਹੈ, ਆਕਾਰ ਭਾਵੇਂ ਜੋ ਹੋਵੇ।
ਚੱਕਰ ਸਥਾਨਕ ਤਬਦੀਲੀਆਂ ਤੋਂ ਬਾਅਦ, ਨਿਸ਼ਕ੍ਰਿਆ ਸਮਾਂ-ਯੰਤਰ ਉੱਤੇ, ਅਤੇ Sync Now ਉੱਤੇ ਤੁਰੰਤ ਚੱਲਦੇ ਹਨ। ਅਸਫਲਤਾਵਾਂ ਇੱਕੋ backoff ਯੋਜਨਾ ਨਾਲ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰਦੀਆਂ ਹਨ, ਅਤੇ ਜੋ ਅੱਗੇ ਨਹੀਂ ਵਧ ਸਕਦਾ ਉਹ ਦੱਸਦਾ ਹੈ ਕਿ ਕਿਸ ਦੀ ਉਡੀਕ ਹੈ, ਜੋ bae ਆਪਣੀ ਸਮਕਾਲੀਕਰਨ ਹਾਲਤ ਲਾਈਨ ਵਿੱਚ ਦਿਖਾਉਂਦਾ ਹੈ।
ਮਿਲਾਉਣਾ
ਇਸ ਭਾਗ ਦਾ ਲਿੰਕਦੋ ਯੰਤਰ ਦਾ ਦੂਰ ਹੋਣ ਵੇਲੇ ਇੱਕੋ ਸੰਗ੍ਰਹਿ edit ਕਰਨਾ ਆਮ ਹਾਲਤ ਹੈ, ਅਪਵਾਦ ਨਹੀਂ। ਜਦੋਂ ਉਹਨਾਂ ਦੇ ਬਦਲਾਅ ਮਿਲਦੇ ਹਨ:
- different rows or different columns ਉੱਤੇ ਸੋਧਾਂ ਦੋਵੇਂ apply ਹੁੰਦੇ ਹਨ। ਲੈਪਟਾਪ ਉੱਤੇ ਰਿਲੀਜ਼ ਦਾ year edit ਕਰਨਾ ਅਤੇ desktop ਉੱਤੇ ਇਸਦਾ label edit ਕਰਨਾ ਦੋਵੇਂ ਦਿੰਦਾ ਹੈ।
- ਇੱਕੋ ਕਤਾਰ ਦੇ ਇੱਕੋ ਕਾਲਮ ਉੱਤੇ ਸੋਧਾਂ timestamp ਨਾਲ ਕ੍ਰਮਬੱਧ ਹਨ: ਬਾਅਦਲੀ ਸੋਧ ਜਿੱਤਦੀ ਹੈ, ਨਿਰਧਾਰਿਤ ਤੌਰ ਉੱਤੇ ਅਤੇ ਹਰ ਯੰਤਰ ਉੱਤੇ ਇਕਸਾਰ।
- ਇਕੱਠੀਆਂ ਸੋਧਾਂ ਉੱਤੇ ਮਿਟਾਉਣਾ ਜਿੱਤਦਾ ਹੈ: ਬਾਅਦ ਵਿੱਚ ਮਿਟਾਈ ਕਤਾਰ ਉੱਤੇ ਕੀਤੀ ਸੋਧ ਜਦੋਂ ਵੀ ਪਹੁੰਚੇ ਹਾਰਦੀ ਹੈ, ਇਸ ਲਈ ਇੱਕ ਯੰਤਰ ਉੱਤੇ ਮਿਟਾਈ ਰਿਲੀਜ਼ ਮਿਟਾਈ ਹੀ ਰਹਿੰਦੀ ਹੈ ਭਾਵੇਂ ਹੋਰ ਯੰਤਰ ਨੇ ਉਸੇ ਅੰਤਰਾਲ ਵਿੱਚ ਸੋਧੀ ਹੋਵੇ।
coven ਹਰ ਪਛਾੜੇ ਮੁੱਲ ਨੂੰ ਗੁਆਚਾ ਮੁੱਲ ਵਜੋਂ ਰੱਖਦਾ ਹੈ; bae ਇਨ੍ਹਾਂ ਵਿੱਚੋਂ ਕੋਈ ਨਹੀਂ ਦਿਖਾਉਂਦਾ ਜਾਂ ਮਿਟਾਉਂਦਾ, ਇਸ ਲਈ ਟਕਰਾਅ UI ਨਹੀਂ ਹੈ। ਪਹੁੰਚਣ ਦੀ ਤਰਤੀਬ ਭਾਵੇਂ ਜੋ ਹੋਵੇ, ਹਰ ਯੰਤਰ ਉਸੇ ਨਤੀਜੇ ਉੱਤੇ ਪਹੁੰਚਦਾ ਹੈ।
ਸਨੈਪਸ਼ਾਟ
ਇਸ ਭਾਗ ਦਾ ਲਿੰਕਜੁੜਦਾ ਜਾਂ ਬਹਾਲ ਹੁੰਦਾ ਯੰਤਰ ਇਤਿਹਾਸ ਸ਼ੁਰੂ ਤੋਂ replay ਨਹੀਂ ਕਰਦਾ। ਯੰਤਰ snapshots ਲੈਂਦੇ ਹਨ, ਯਾਨੀ ਲੜੀ ਦੇ ਇੱਕ ਬਿੰਦੂ ਉੱਤੇ ਸੰਗ੍ਰਹਿ ਦੀ ਪੂਰੀ ਹਾਲਤ, ਅਤੇ ਸੰਗ੍ਰਹਿ ਤੇ ਹਰ ਨਿੱਜੀ circle ਕੋਲ ਇੱਕ ਹੋਣ ਤੋਂ ਬਾਅਦ ਉਸ ਤੋਂ ਪਹਿਲਾਂ ਦਾ ਇਤਿਹਾਸ ਮਿਟਾਇਆ ਜਾਂਦਾ ਹੈ। ਨਵਾਂ ਯੰਤਰ ਸਭ ਤੋਂ ਨਵਾਂ snapshot ਲੋਡ ਕਰਦਾ ਹੈ, ਫਿਰ ਸਿਰਫ਼ ਉਸ ਤੋਂ ਬਾਅਦ ਆਇਆ ਲਾਗੂ ਕਰਦਾ ਹੈ। ਰੱਖੇ ਇਤਿਹਾਸ ਤੋਂ ਵੱਧ ਸਮਾਂ ਦੂਰ ਰਿਹਾ ਯੰਤਰ ਵੀ ਇਹੀ ਕਰਦਾ ਹੈ, ਅਤੇ ਆਪਣੀਆਂ ਨਾ-ਭੇਜੀਆਂ ਸੋਧਾਂ ਰੱਖਦਾ ਹੈ।
ਸਕੀਮਾ ਵਰਜਨ
ਇਸ ਭਾਗ ਦਾ ਲਿੰਕbae ਦਾ schema ਇੱਕੋ migration ਹੈ, ਅਤੇ ਯੰਤਰ ਵੱਲੋਂ ਭੇਜੀ ਹਰ ਤਬਦੀਲੀ ਉਹ schema ਸੰਸਕਰਣ ਦਰਜ ਕਰਦੀ ਹੈ ਜਿਸ ਨਾਲ ਉਹ ਬਣੀ। ਆਪਣੇ ਤੋਂ ਨਵੇਂ schema ਦੀ ਤਬਦੀਲੀ ਤੱਕ ਪਹੁੰਚਦਾ ਯੰਤਰ ਉੱਥੇ ਹੀ ਰੁਕ ਜਾਂਦਾ ਹੈ, ਐਪ ਅੱਪਡੇਟ ਹੋਣ ਤੱਕ ਉਸ ਤੋਂ ਬਾਅਦ ਕੁਝ ਲਾਗੂ ਨਹੀਂ ਕਰਦਾ; ਕੁਝ ਗੁਆਚਦਾ ਨਹੀਂ ਅਤੇ ਕੁਝ ਗਲਤ ਲਾਗੂ ਨਹੀਂ ਹੁੰਦਾ।
ਸਕੀਮਾ ਵਰਜਨ ਤੋਂ ਵੱਧ ਮੋਟਾ compatibility era ਹੈ: ਹਰ ਬਾਈਨਰੀ ਵਿੱਚ ਸ਼ਾਮਲ pin ਕੀਤਾ coven ਸੰਸ਼ੋਧਨ। ਦੋ ਬਣਾਵਟਾਂ ਸਿਰਫ਼ ਇੱਕ ਯੁੱਗ ਅੰਦਰ ਸਮਕਾਲੀਕਰਨ ਕਰਦੇ ਹਨ; coven ਵਾਇਰ-ਫਾਰਮੈਟ ਟੁੱਟਣ ਨਵਾਂ ਯੁੱਗ ਅਤੇ ਹਰ app ਉੱਤੇ ਮੁੱਖ ਵਰਜਨ bump ਹੈ। ਪੂਰਵ-1.0, ਹਰ ਬਣਾਵਟ ਯੁੱਗ ਸਿਫ਼ਰ ਹੈ ਅਤੇ ਫਾਰਮੈਟ ਮਾਈਗ੍ਰੇਸ਼ਨ ਬਿਨਾ ਬਦਲਦੇ ਹਨ।
ਦਾਤਾ ਕੀ ਵੇਖਦਾ ਹੈ
ਇਸ ਭਾਗ ਦਾ ਲਿੰਕਦਾਤਾ ਇਨਕ੍ਰਿਪਟ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ, snapshots, ਮੈਂਬਰਤਾ ਰਿਕਾਰਡ ਅਤੇ ਫਾਈਲਾਂ ਰੱਖਦਾ ਹੈ; ਇਹ ਵਸਤੂਆਂ ਗਿਣ ਸਕਦਾ ਹੈ, ਆਕਾਰ ਅਤੇ ਸਮਾਂ ਵੇਖ ਸਕਦਾ ਹੈ, ਅਤੇ ਵੇਖ ਸਕਦਾ ਹੈ ਕਿ ਕਿਹੜਾ ਖਾਤਾ ਹਰ ਵਸਤੂ ਲਿਖਦਾ ਹੈ, ਪਰ ਸਮੱਗਰੀ ਵਿੱਚੋਂ ਕੁਝ ਨਹੀਂ ਪੜ੍ਹ ਸਕਦਾ। ਯੰਤਰ ਵੱਲੋਂ ਲਿਆਂਦੀ ਹਰ ਵਸਤੂ ਡਾਟਾਬੇਸ ਨੂੰ ਛੂਹਣ ਤੋਂ ਪਹਿਲਾਂ ਦਸਤਖਤ ਅਤੇ ਮੈਂਬਰਤਾ ਦੋਵਾਂ ਨਾਲ ਜਾਂਚੀ ਜਾਂਦੀ ਹੈ: ਭੰਡਾਰਣ ਇੱਕ ਨਿਸ਼ਕ੍ਰਿਆ, ਨਾ-ਭਰੋਸੇਯੋਗ ਡਾਕ-ਡੱਬਾ ਹੈ। ਇਨਕ੍ਰਿਪਸ਼ਨ ਅਤੇ ਪਛਾਣ ਅਤੇ ਸਦੱਸਤਾ ਵੇਖੋ।