Google Docs ಏಕಕಾಲಿಕ ಎಡಿಟ್‌ಗಳನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತದೆ

Google Docs ಒಂದೇ ಸಮಯದಲ್ಲಿ ಅನೇಕ ಜನರು ಒಂದು ದಾಖಲೆಯನ್ನು ಎಡಿಟ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.

ಇಬ್ಬರು ವ್ಯಕ್ತಿಗಳು ಒಂದೇ ಸೆಕೆಂಡಿನಲ್ಲಿ ಸರಿಯಾಗಿ ಒಂದೇ ಸಾಲನ್ನು ಎಡಿಟ್ ಮಾಡಿದಾಗ ಏನಾಗುತ್ತದೆ?

ಒಂದು ಸಾಮಾನ್ಯ ವ್ಯವಸ್ಥೆಯು ಡೇಟಾವನ್ನು ಓದುವ, ಮಾರ್ಪಡಿಸುವ ಮತ್ತು ಉಳಿಸುವ ಮೂಲಕ ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಇಬ್ಬರು ವ್ಯಕ್ತಿಗಳು ಏಕಕಾಲದಲ್ಲಿ ಸೇವ್ ಮಾಡಿದರೆ, ಎರಡನೇ ವ್ಯಕ್ತಿಯು ಮೊದಲನೆಯವರ ಮಾಹಿತಿಯನ್ನು ಅಳಿಸಿ ಹೊಸದನ್ನು ಬರೆಯುತ್ತಾನೆ (overwrites). ಮೊದಲ ವ್ಯಕ್ತಿಯು ತನ್ನ ಕೆಲಸವನ್ನು ಕಳೆದುಕೊಳ್ಳುತ್ತಾನೆ.

Google Docs ಇದನ್ನು Operational Transformation (OT) ಬಳಸಿ ತಪ್ಪಿಸುತ್ತದೆ.

ನೀವು ಪ್ರತಿ ಬಾರಿ ಟೈಪ್ ಮಾಡುವಾಗಲೂ ಇದು ಇಡೀ ದಾಖಲೆಯನ್ನು ಕಳುಹಿಸುವುದಿಲ್ಲ. ಬದಲಾಗಿ ಸಣ್ಣ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು (operations) ಕಳುಹಿಸುತ್ತದೆ.

ಉದಾಹರಣೆಗೆ:

  • ಬಳಕೆದಾರ A 6 ನೇ ಸ್ಥಾನದಲ್ಲಿ "Beautiful" ಅನ್ನು ಸೇರಿಸುತ್ತಾನೆ.
  • ಬಳಕೆದಾರ B 6 ನೇ ಸ್ಥಾನದಲ್ಲಿ "Amazing" ಅನ್ನು ಸೇರಿಸುತ್ತಾನೆ.

ಸರ್ವರ್ ಇವುಗಳನ್ನು ಯಾವುದೇ ಬದಲಾವಣೆಗಳಿಲ್ಲದೆ ಅನ್ವಯಿಸಿದರೆ, ಒಂದು ಎಡಿಟ್ ಮಾಯವಾಗುತ್ತದೆ.

ಬದಲಾಗಿ, ಸರ್ವರ್ ಈ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ರೂಪಾಂತರಿಸುತ್ತದೆ (transforms).

ಬಳಕೆದಾರ A ಮೊದಲು ದಾಖಲೆಯನ್ನು ಅಪ್‌ಡೇಟ್ ಮಾಡಿದ್ದನ್ನು ಸರ್ವರ್ ಗಮನಿಸುತ್ತದೆ. ದಾಖಲೆಯ ಗಾತ್ರ ಹೆಚ್ಚಾಗುತ್ತದೆ. ಸರ್ವರ್ ಬಳಕೆದಾರ B ಅನ್ನು ಪ್ರೊಸೆಸ್ ಮಾಡುವಾಗ, ಅದು ಸ್ಥಾನವನ್ನು 6 ರಿಂದ 16 ಕ್ಕೆ ಬದಲಾಯಿಸುತ್ತದೆ.

ಅಂತಿಮ ಪಠ್ಯವು ಹೀಗಾಗುತ್ತದೆ: Hello Beautiful Amazing World.

ಎರಡೂ ಎಡಿಟ್‌ಗಳು ಉಳಿಯುತ್ತವೆ.

ಈ ವ್ಯವಸ್ಥೆಯು ಈ ತಾಂತ್ರಿಕ ಸ್ತಂಭಗಳ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ:

  • ನಿರಂತರ ಸಂಪರ್ಕಕ್ಕಾಗಿ WebSockets.
  • ಯಾವ ಎಡಿಟ್ ಯಾವ ಆವೃತ್ತಿಯಿಂದ ಬಂದಿದೆ ಎಂದು ತಿಳಿಯಲು Version tracking.
  • ಬದಲಾವಣೆಗಳನ್ನು ಪ್ರಸಾರ ಮಾಡಲು Real-time event streams.

Google Docs ದಾಖಲೆಯನ್ನು ಲಾಕ್ ಮಾಡುವುದಿಲ್ಲ. ಒಬ್ಬ ವ್ಯಕ್ತಿ ಟೈಪ್ ಮಾಡುವಾಗ ಲಾಕ್ ಮಾಡುವುದರಿಂದ ಉಳಿದವರೆಲ್ಲರೂ ಕೆಲಸ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸಬೇಕಾಗುತ್ತದೆ.

ಬದಲಾಗಿ, ಇದು ಬುದ್ಧಿವಂತ ವಿಲೀನವನ್ನು (intelligent merging) ಬಳಸುತ್ತದೆ.

ಈ ವ್ಯವಸ್ಥೆಯು ನಿಮ್ಮ ಕರ್ಸರ್ (cursor) ಸ್ಥಾನವನ್ನೂ ಸಹ ರೂಪಾಂತರಿಸುತ್ತದೆ. ಯಾರಾದರೂ ನಿಮ್ಮ ಮುಂದೆ ಪಠ್ಯವನ್ನು ಸೇರಿಸಿದರೆ, ನೀವು ನಿಮ್ಮ ಸ್ಥಾನವನ್ನು ಕಳೆದುಕೊಳ್ಳದಂತೆ ನಿಮ್ಮ ಕರ್ಸರ್ ಮುಂದೆ ಚಲಿಸುತ್ತದೆ.

Google Docs OT ಅನ್ನು ಬಳಸಿದರೆ, Figma ನಂತಹ ಅನೇಕ ಹೊಸ ಪರಿಕರಗಳು Conflict-free Replicated Data Types (CRDT) ಅನ್ನು ಬಳಸುತ್ತವೆ. CRDTಗಳು ಕೇಂದ್ರ ಸರ್ವರ್ ಇಲ್ಲದೆಯೇ ಬಳಕೆದಾರರು ಬದಲಾವಣೆಗಳನ್ನು ವಿಲೀನಗೊಳಿಸಲು ಅನುಮತಿಸುತ್ತವೆ.

ನೀವು ಸಿಸ್ಟಮ್ ಡಿಸೈನ್ (system design) ಅಧ್ಯಯನ ಮಾಡುತ್ತಿದ್ದರೆ, ಈ ಅಂಶಗಳನ್ನು ನೆನಪಿಡಿ:

  • ಕಡಿಮೆ ವಿಳಂಬಕ್ಕಾಗಿ (low latency) WebSockets ಬಳಸಿ.
  • ಸಂಘರ್ಷ ಪರಿಹಾರಕ್ಕಾಗಿ (conflict resolution) OT ಅಥವಾ CRDT ಬಳಸಿ.
  • ಬದಲಾವಣೆಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು version numbers ಬಳಸಿ.
  • ಬಳಕೆದಾರರ ಅನುಭವವನ್ನು ಸುಧಾರಿಸಲು ಕರ್ಸರ್ ಅನ್ನು ಸಿಂಕ್ (Sync) ಮಾಡಿ.

Google Docs ಸಂಘರ್ಷಗಳನ್ನು ತಡೆಯುವುದಿಲ್ಲ. ಬದಲಾಗಿ, ಎಲ್ಲರೂ ಒಂದೇ ಫಲಿತಾಂಶವನ್ನು ನೋಡುವಂತೆ ಎಡಿಟ್‌ಗಳನ್ನು ರೂಪಾಂತರಿಸುವ ಮೂಲಕ ಅವುಗಳನ್ನು ಪರಿಹರಿಸುತ್ತದೆ.

ಮೂಲ: https://dev.to/khushindpatel/how-does-google-docs-handle-two-people-editing-the-same-line-at-the-exact-same-time-38gi