VKontakte ಸಂದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಪುನಃ ಬರೆಯಿರಿ ಮತ್ತು ಬದುಕುಳಿಯಿರಿ

ನಮ್ಮ ಬಳಕೆದಾರರು ಆಯಾಸವನ್ನು ತಿಳಿಯದೆ ಪರಸ್ಪರ ಸಂದೇಶಗಳನ್ನು ಬರೆಯುತ್ತಾರೆ.
VKontakte ಸಂದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಪುನಃ ಬರೆಯಿರಿ ಮತ್ತು ಬದುಕುಳಿಯಿರಿ
ಅದು ಬಹಳಷ್ಟಿದೆ. ನೀವು ಎಲ್ಲಾ ಬಳಕೆದಾರರ ಎಲ್ಲಾ ಸಂದೇಶಗಳನ್ನು ಓದಲು ಹೊರಟರೆ, ಅದು 150 ಸಾವಿರ ವರ್ಷಗಳಿಗಿಂತ ಹೆಚ್ಚು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ನೀವು ಸಾಕಷ್ಟು ಮುಂದುವರಿದ ಓದುಗ ಮತ್ತು ಪ್ರತಿ ಸಂದೇಶದಲ್ಲಿ ಒಂದು ಸೆಕೆಂಡ್‌ಗಿಂತ ಹೆಚ್ಚು ಸಮಯ ಕಳೆಯುವುದಿಲ್ಲ ಎಂದು ಒದಗಿಸಲಾಗಿದೆ.

ಅಂತಹ ಡೇಟಾದ ಪರಿಮಾಣದೊಂದಿಗೆ, ಅದನ್ನು ಸಂಗ್ರಹಿಸಲು ಮತ್ತು ಪ್ರವೇಶಿಸಲು ತರ್ಕವನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿ ನಿರ್ಮಿಸಲಾಗಿದೆ. ಇಲ್ಲದಿದ್ದರೆ, ಒಂದು ಅದ್ಭುತವಲ್ಲದ ಕ್ಷಣದಲ್ಲಿ, ಎಲ್ಲವೂ ಶೀಘ್ರದಲ್ಲೇ ತಪ್ಪಾಗುತ್ತದೆ ಎಂಬುದು ಸ್ಪಷ್ಟವಾಗಬಹುದು.

ನಮಗೆ, ಈ ಕ್ಷಣವು ಒಂದೂವರೆ ವರ್ಷಗಳ ಹಿಂದೆ ಬಂದಿತು. ನಾವು ಇದಕ್ಕೆ ಹೇಗೆ ಬಂದೆವು ಮತ್ತು ಕೊನೆಯಲ್ಲಿ ಏನಾಯಿತು - ನಾವು ನಿಮಗೆ ಕ್ರಮವಾಗಿ ಹೇಳುತ್ತೇವೆ.

ಹಿನ್ನೆಲೆ

ಮೊದಲ ಅನುಷ್ಠಾನದಲ್ಲಿ, VKontakte ಸಂದೇಶಗಳು PHP ಬ್ಯಾಕೆಂಡ್ ಮತ್ತು MySQL ಸಂಯೋಜನೆಯಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸಿದವು. ಸಣ್ಣ ವಿದ್ಯಾರ್ಥಿ ವೆಬ್‌ಸೈಟ್‌ಗೆ ಇದು ಸಂಪೂರ್ಣವಾಗಿ ಸಾಮಾನ್ಯ ಪರಿಹಾರವಾಗಿದೆ. ಆದಾಗ್ಯೂ, ಈ ಸೈಟ್ ಅನಿಯಂತ್ರಿತವಾಗಿ ಬೆಳೆಯಿತು ಮತ್ತು ಸ್ವತಃ ಡೇಟಾ ರಚನೆಗಳ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ಒತ್ತಾಯಿಸಲು ಪ್ರಾರಂಭಿಸಿತು.

2009 ರ ಕೊನೆಯಲ್ಲಿ, ಮೊದಲ ಪಠ್ಯ-ಎಂಜಿನ್ ರೆಪೊಸಿಟರಿಯನ್ನು ಬರೆಯಲಾಯಿತು ಮತ್ತು 2010 ರಲ್ಲಿ ಸಂದೇಶಗಳನ್ನು ಅದಕ್ಕೆ ವರ್ಗಾಯಿಸಲಾಯಿತು.

ಪಠ್ಯ-ಎಂಜಿನ್‌ನಲ್ಲಿ, ಸಂದೇಶಗಳನ್ನು ಪಟ್ಟಿಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ - ಒಂದು ರೀತಿಯ “ಮೇಲ್‌ಬಾಕ್ಸ್‌ಗಳು”. ಅಂತಹ ಪ್ರತಿಯೊಂದು ಪಟ್ಟಿಯನ್ನು ಯುಐಡಿ ನಿರ್ಧರಿಸುತ್ತದೆ - ಈ ಎಲ್ಲಾ ಸಂದೇಶಗಳನ್ನು ಹೊಂದಿರುವ ಬಳಕೆದಾರರು. ಸಂದೇಶವು ಗುಣಲಕ್ಷಣಗಳ ಗುಂಪನ್ನು ಹೊಂದಿದೆ: ಇಂಟರ್ಲೋಕ್ಯೂಟರ್ ಗುರುತಿಸುವಿಕೆ, ಪಠ್ಯ, ಲಗತ್ತುಗಳು, ಇತ್ಯಾದಿ. "ಬಾಕ್ಸ್" ಒಳಗಿನ ಸಂದೇಶ ಗುರುತಿಸುವಿಕೆ ಲೋಕಲ್_ಐಡಿ ಆಗಿದೆ, ಇದು ಎಂದಿಗೂ ಬದಲಾಗುವುದಿಲ್ಲ ಮತ್ತು ಹೊಸ ಸಂದೇಶಗಳಿಗಾಗಿ ಅನುಕ್ರಮವಾಗಿ ನಿಯೋಜಿಸಲಾಗಿದೆ. "ಪೆಟ್ಟಿಗೆಗಳು" ಸ್ವತಂತ್ರವಾಗಿರುತ್ತವೆ ಮತ್ತು ಎಂಜಿನ್ ಒಳಗೆ ಪರಸ್ಪರ ಸಿಂಕ್ರೊನೈಸ್ ಆಗುವುದಿಲ್ಲ; ಅವುಗಳ ನಡುವೆ ಸಂವಹನವು PHP ಮಟ್ಟದಲ್ಲಿ ಸಂಭವಿಸುತ್ತದೆ. ನೀವು ಒಳಗಿನಿಂದ ಪಠ್ಯ-ಎಂಜಿನ್‌ನ ಡೇಟಾ ರಚನೆ ಮತ್ತು ಸಾಮರ್ಥ್ಯಗಳನ್ನು ನೋಡಬಹುದು ಇಲ್ಲಿ.
VKontakte ಸಂದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಪುನಃ ಬರೆಯಿರಿ ಮತ್ತು ಬದುಕುಳಿಯಿರಿ
ಇಬ್ಬರು ಬಳಕೆದಾರರ ನಡುವಿನ ಪತ್ರವ್ಯವಹಾರಕ್ಕೆ ಇದು ಸಾಕಷ್ಟು ಸಾಕಾಗಿತ್ತು. ಮುಂದೆ ಏನಾಯಿತು ಎಂದು ಊಹಿಸಿ?

ಮೇ 2011 ರಲ್ಲಿ, VKontakte ಹಲವಾರು ಭಾಗವಹಿಸುವವರೊಂದಿಗೆ ಸಂಭಾಷಣೆಗಳನ್ನು ಪರಿಚಯಿಸಿತು-ಮಲ್ಟಿ-ಚಾಟ್. ಅವರೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು, ನಾವು ಎರಡು ಹೊಸ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ರಚಿಸಿದ್ದೇವೆ - ಸದಸ್ಯ-ಚಾಟ್‌ಗಳು ಮತ್ತು ಚಾಟ್-ಸದಸ್ಯರು. ಮೊದಲನೆಯದು ಬಳಕೆದಾರರಿಂದ ಚಾಟ್‌ಗಳ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ, ಎರಡನೆಯದು ಚಾಟ್‌ಗಳ ಮೂಲಕ ಬಳಕೆದಾರರ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ. ಪಟ್ಟಿಗಳ ಜೊತೆಗೆ, ಇದು, ಉದಾಹರಣೆಗೆ, ಆಹ್ವಾನಿಸುವ ಬಳಕೆದಾರರು ಮತ್ತು ಅವರು ಚಾಟ್‌ಗೆ ಸೇರಿಸಿದ ಸಮಯವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.

"PHP, ಚಾಟ್‌ಗೆ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸೋಣ" ಎಂದು ಬಳಕೆದಾರರು ಹೇಳುತ್ತಾರೆ.
"ಬನ್ನಿ, {username}," PHP ಹೇಳುತ್ತದೆ.
VKontakte ಸಂದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಪುನಃ ಬರೆಯಿರಿ ಮತ್ತು ಬದುಕುಳಿಯಿರಿ
ಈ ಯೋಜನೆಗೆ ಅನಾನುಕೂಲತೆಗಳಿವೆ. ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಇನ್ನೂ PHP ಯ ಜವಾಬ್ದಾರಿಯಾಗಿದೆ. ದೊಡ್ಡ ಚಾಟ್‌ಗಳು ಮತ್ತು ಬಳಕೆದಾರರಿಗೆ ಏಕಕಾಲದಲ್ಲಿ ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸುವುದು ಅಪಾಯಕಾರಿ ಕಥೆಯಾಗಿದೆ. ಪಠ್ಯ-ಎಂಜಿನ್ ನಿದರ್ಶನವು ಯುಐಡಿಯನ್ನು ಅವಲಂಬಿಸಿರುವುದರಿಂದ, ಚಾಟ್ ಭಾಗವಹಿಸುವವರು ವಿಭಿನ್ನ ಸಮಯಗಳಲ್ಲಿ ಒಂದೇ ಸಂದೇಶವನ್ನು ಸ್ವೀಕರಿಸಬಹುದು. ಪ್ರಗತಿ ನಿಂತರೆ ಇದರೊಂದಿಗೆ ಬದುಕಬಹುದು. ಆದರೆ ಅದು ಆಗುವುದಿಲ್ಲ.

2015 ರ ಕೊನೆಯಲ್ಲಿ, ನಾವು ಸಮುದಾಯ ಸಂದೇಶಗಳನ್ನು ಪ್ರಾರಂಭಿಸಿದ್ದೇವೆ ಮತ್ತು 2016 ರ ಆರಂಭದಲ್ಲಿ, ನಾವು ಅವರಿಗೆ API ಅನ್ನು ಪ್ರಾರಂಭಿಸಿದ್ದೇವೆ. ಸಮುದಾಯಗಳಲ್ಲಿ ದೊಡ್ಡ ಚಾಟ್‌ಬಾಟ್‌ಗಳ ಆಗಮನದೊಂದಿಗೆ, ಲೋಡ್ ವಿತರಣೆಯನ್ನು ಸಹ ಮರೆಯಲು ಸಾಧ್ಯವಾಯಿತು.

ಉತ್ತಮ ಬೋಟ್ ದಿನಕ್ಕೆ ಹಲವಾರು ಮಿಲಿಯನ್ ಸಂದೇಶಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ - ಹೆಚ್ಚು ಮಾತನಾಡುವ ಬಳಕೆದಾರರು ಸಹ ಇದರ ಬಗ್ಗೆ ಹೆಗ್ಗಳಿಕೆಗೆ ಒಳಗಾಗುವುದಿಲ್ಲ. ಇದರರ್ಥ ಪಠ್ಯ-ಎಂಜಿನ್‌ನ ಕೆಲವು ನಿದರ್ಶನಗಳು, ಅಂತಹ ಬಾಟ್‌ಗಳು ವಾಸಿಸುತ್ತಿದ್ದವು, ಪೂರ್ಣವಾಗಿ ಅನುಭವಿಸಲು ಪ್ರಾರಂಭಿಸಿದವು.

2016 ರಲ್ಲಿ ಸಂದೇಶ ಎಂಜಿನ್‌ಗಳು ಚಾಟ್-ಸದಸ್ಯರು ಮತ್ತು ಸದಸ್ಯ-ಚಾಟ್‌ಗಳ 100 ನಿದರ್ಶನಗಳು ಮತ್ತು 8000 ಪಠ್ಯ-ಎಂಜಿನ್‌ಗಳಾಗಿವೆ. ಅವುಗಳನ್ನು ಸಾವಿರ ಸರ್ವರ್‌ಗಳಲ್ಲಿ ಹೋಸ್ಟ್ ಮಾಡಲಾಗಿದೆ, ಪ್ರತಿಯೊಂದೂ 64 GB ಮೆಮೊರಿಯೊಂದಿಗೆ. ಮೊದಲ ತುರ್ತು ಕ್ರಮವಾಗಿ, ನಾವು ಮೆಮೊರಿಯನ್ನು ಮತ್ತೊಂದು 32 GB ಹೆಚ್ಚಿಸಿದ್ದೇವೆ. ನಾವು ಮುನ್ಸೂಚನೆಗಳನ್ನು ಅಂದಾಜು ಮಾಡಿದ್ದೇವೆ. ತೀವ್ರವಾದ ಬದಲಾವಣೆಗಳಿಲ್ಲದೆ, ಇದು ಸುಮಾರು ಇನ್ನೊಂದು ವರ್ಷಕ್ಕೆ ಸಾಕಾಗುತ್ತದೆ. ನೀವು ಹಾರ್ಡ್‌ವೇರ್ ಅನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಬೇಕು ಅಥವಾ ಡೇಟಾಬೇಸ್‌ಗಳನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಿಕೊಳ್ಳಬೇಕು.

ವಾಸ್ತುಶಿಲ್ಪದ ಸ್ವರೂಪದಿಂದಾಗಿ, ಹಾರ್ಡ್‌ವೇರ್ ಅನ್ನು ಮಲ್ಟಿಪಲ್‌ಗಳಲ್ಲಿ ಹೆಚ್ಚಿಸುವುದು ಮಾತ್ರ ಅರ್ಥಪೂರ್ಣವಾಗಿದೆ. ಅಂದರೆ, ಕನಿಷ್ಠ ಕಾರುಗಳ ಸಂಖ್ಯೆಯನ್ನು ದ್ವಿಗುಣಗೊಳಿಸುವುದು - ನಿಸ್ಸಂಶಯವಾಗಿ, ಇದು ದುಬಾರಿ ಮಾರ್ಗವಾಗಿದೆ. ನಾವು ಆಪ್ಟಿಮೈಸ್ ಮಾಡುತ್ತೇವೆ.

ಹೊಸ ಪರಿಕಲ್ಪನೆ

ಹೊಸ ವಿಧಾನದ ಕೇಂದ್ರ ಸಾರವು ಚಾಟ್ ಆಗಿದೆ. ಒಂದು ಚಾಟ್ ಅದಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಸಂದೇಶಗಳ ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿದೆ. ಬಳಕೆದಾರರು ಚಾಟ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿದ್ದಾರೆ.

ಅಗತ್ಯವಿರುವ ಕನಿಷ್ಠ ಎರಡು ಹೊಸ ಡೇಟಾಬೇಸ್‌ಗಳು:

  • ಚಾಟ್-ಎಂಜಿನ್. ಇದು ಚಾಟ್ ವೆಕ್ಟರ್‌ಗಳ ರೆಪೊಸಿಟರಿಯಾಗಿದೆ. ಪ್ರತಿ ಚಾಟ್‌ಗೆ ಸಂಬಂಧಿಸಿದ ಸಂದೇಶಗಳ ವೆಕ್ಟರ್ ಇರುತ್ತದೆ. ಪ್ರತಿಯೊಂದು ಸಂದೇಶವು ಚಾಟ್‌ನಲ್ಲಿ ಪಠ್ಯ ಮತ್ತು ಅನನ್ಯ ಸಂದೇಶ ಗುರುತಿಸುವಿಕೆಯನ್ನು ಹೊಂದಿದೆ - chat_local_id.
  • ಬಳಕೆದಾರ-ಎಂಜಿನ್. ಇದು ಬಳಕೆದಾರರ ವಾಹಕಗಳ ಸಂಗ್ರಹವಾಗಿದೆ - ಬಳಕೆದಾರರಿಗೆ ಲಿಂಕ್‌ಗಳು. ಪ್ರತಿ ಬಳಕೆದಾರನು peer_id ನ ವೆಕ್ಟರ್ (ಸಂವಾದಕರು - ಇತರ ಬಳಕೆದಾರರು, ಬಹು-ಚಾಟ್ ಅಥವಾ ಸಮುದಾಯಗಳು) ಮತ್ತು ಸಂದೇಶಗಳ ವೆಕ್ಟರ್ ಅನ್ನು ಹೊಂದಿರುತ್ತಾರೆ. ಪ್ರತಿ peer_id ಅದಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಸಂದೇಶಗಳ ವೆಕ್ಟರ್ ಅನ್ನು ಹೊಂದಿದೆ. ಪ್ರತಿಯೊಂದು ಸಂದೇಶವು chat_local_id ಮತ್ತು ಆ ಬಳಕೆದಾರರಿಗಾಗಿ ಅನನ್ಯ ಸಂದೇಶ ID ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ - user_local_id.

VKontakte ಸಂದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಪುನಃ ಬರೆಯಿರಿ ಮತ್ತು ಬದುಕುಳಿಯಿರಿ
ಹೊಸ ಕ್ಲಸ್ಟರ್‌ಗಳು TCP ಬಳಸಿಕೊಂಡು ಪರಸ್ಪರ ಸಂವಹನ ನಡೆಸುತ್ತವೆ - ಇದು ವಿನಂತಿಗಳ ಕ್ರಮವು ಬದಲಾಗುವುದಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. ವಿನಂತಿಗಳು ಮತ್ತು ಅವುಗಳಿಗೆ ದೃಢೀಕರಣಗಳನ್ನು ಹಾರ್ಡ್ ಡ್ರೈವಿನಲ್ಲಿ ದಾಖಲಿಸಲಾಗಿದೆ - ಆದ್ದರಿಂದ ನಾವು ವೈಫಲ್ಯ ಅಥವಾ ಎಂಜಿನ್ನ ಮರುಪ್ರಾರಂಭದ ನಂತರ ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಸರದಿಯ ಸ್ಥಿತಿಯನ್ನು ಮರುಸ್ಥಾಪಿಸಬಹುದು. ಬಳಕೆದಾರ-ಎಂಜಿನ್ ಮತ್ತು ಚಾಟ್-ಎಂಜಿನ್ ತಲಾ 4 ಸಾವಿರ ಚೂರುಗಳಾಗಿರುವುದರಿಂದ, ಕ್ಲಸ್ಟರ್‌ಗಳ ನಡುವಿನ ವಿನಂತಿಯ ಸರತಿಯನ್ನು ಸಮವಾಗಿ ವಿತರಿಸಲಾಗುತ್ತದೆ (ಆದರೆ ವಾಸ್ತವದಲ್ಲಿ ಯಾವುದೂ ಇಲ್ಲ - ಮತ್ತು ಇದು ಬಹಳ ಬೇಗನೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ).

ಹೆಚ್ಚಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ ನಮ್ಮ ಡೇಟಾಬೇಸ್‌ಗಳಲ್ಲಿ ಡಿಸ್ಕ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು ಬದಲಾವಣೆಗಳ ಬೈನರಿ ಲಾಗ್ (ಬಿನ್‌ಲಾಗ್), ಸ್ಟ್ಯಾಟಿಕ್ ಸ್ನ್ಯಾಪ್‌ಶಾಟ್‌ಗಳು ಮತ್ತು ಮೆಮೊರಿಯಲ್ಲಿನ ಭಾಗಶಃ ಚಿತ್ರದ ಸಂಯೋಜನೆಯನ್ನು ಆಧರಿಸಿದೆ. ದಿನದ ಬದಲಾವಣೆಗಳನ್ನು ಬಿನ್‌ಲಾಗ್‌ಗೆ ಬರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಪ್ರಸ್ತುತ ಸ್ಥಿತಿಯ ಸ್ನ್ಯಾಪ್‌ಶಾಟ್ ಅನ್ನು ನಿಯತಕಾಲಿಕವಾಗಿ ರಚಿಸಲಾಗುತ್ತದೆ. ಸ್ನ್ಯಾಪ್‌ಶಾಟ್ ಎನ್ನುವುದು ನಮ್ಮ ಉದ್ದೇಶಗಳಿಗಾಗಿ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿದ ಡೇಟಾ ರಚನೆಗಳ ಸಂಗ್ರಹವಾಗಿದೆ. ಇದು ಹೆಡರ್ (ಚಿತ್ರದ ಮೆಟೈಂಡೆಕ್ಸ್) ಮತ್ತು ಮೆಟಾಫೈಲ್‌ಗಳ ಗುಂಪನ್ನು ಒಳಗೊಂಡಿದೆ. ಶಿರೋಲೇಖವನ್ನು ಶಾಶ್ವತವಾಗಿ RAM ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಸ್ನ್ಯಾಪ್‌ಶಾಟ್‌ನಿಂದ ಡೇಟಾವನ್ನು ಎಲ್ಲಿ ನೋಡಬೇಕೆಂದು ಸೂಚಿಸುತ್ತದೆ. ಪ್ರತಿಯೊಂದು ಮೆಟಾಫೈಲ್ ಸಮಯಕ್ಕೆ ಹತ್ತಿರದಲ್ಲಿ ಅಗತ್ಯವಿರುವ ಡೇಟಾವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ-ಉದಾಹರಣೆಗೆ, ಒಬ್ಬ ಬಳಕೆದಾರರಿಗೆ ಸಂಬಂಧಿಸಿದೆ. ಸ್ನ್ಯಾಪ್‌ಶಾಟ್ ಹೆಡರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ನೀವು ಡೇಟಾಬೇಸ್ ಅನ್ನು ಪ್ರಶ್ನಿಸಿದಾಗ, ಅಗತ್ಯವಿರುವ ಮೆಟಾಫೈಲ್ ಅನ್ನು ಓದಲಾಗುತ್ತದೆ ಮತ್ತು ನಂತರ ಸ್ನ್ಯಾಪ್‌ಶಾಟ್ ಅನ್ನು ರಚಿಸಿದ ನಂತರ ಸಂಭವಿಸಿದ ಬಿನ್‌ಲಾಗ್‌ನಲ್ಲಿನ ಬದಲಾವಣೆಗಳನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತದೆ. ಈ ವಿಧಾನದ ಪ್ರಯೋಜನಗಳ ಬಗ್ಗೆ ನೀವು ಇನ್ನಷ್ಟು ಓದಬಹುದು ಇಲ್ಲಿ.

ಅದೇ ಸಮಯದಲ್ಲಿ, ಹಾರ್ಡ್ ಡ್ರೈವಿನಲ್ಲಿನ ಡೇಟಾವು ದಿನಕ್ಕೆ ಒಮ್ಮೆ ಮಾತ್ರ ಬದಲಾಗುತ್ತದೆ - ಮಾಸ್ಕೋದಲ್ಲಿ ತಡರಾತ್ರಿಯಲ್ಲಿ, ಲೋಡ್ ಕಡಿಮೆಯಾದಾಗ. ಇದಕ್ಕೆ ಧನ್ಯವಾದಗಳು (ಡಿಸ್ಕ್‌ನಲ್ಲಿನ ರಚನೆಯು ದಿನವಿಡೀ ಸ್ಥಿರವಾಗಿರುತ್ತದೆ ಎಂದು ತಿಳಿದುಕೊಂಡು), ನಾವು ವೆಕ್ಟರ್‌ಗಳನ್ನು ಸ್ಥಿರ ಗಾತ್ರದ ಸರಣಿಗಳೊಂದಿಗೆ ಬದಲಾಯಿಸಲು ಶಕ್ತರಾಗಿದ್ದೇವೆ - ಮತ್ತು ಈ ಕಾರಣದಿಂದಾಗಿ, ಮೆಮೊರಿಯನ್ನು ಗಳಿಸಿ.

ಹೊಸ ಯೋಜನೆಯಲ್ಲಿ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುವುದು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ:

  1. ಸಂದೇಶವನ್ನು ಕಳುಹಿಸಲು ವಿನಂತಿಯೊಂದಿಗೆ PHP ಬ್ಯಾಕೆಂಡ್ ಬಳಕೆದಾರ-ಎಂಜಿನ್ ಅನ್ನು ಸಂಪರ್ಕಿಸುತ್ತದೆ.
  2. user-engine ಬಯಸಿದ ಚಾಟ್-ಎಂಜಿನ್ ನಿದರ್ಶನಕ್ಕೆ ವಿನಂತಿಯನ್ನು ಪ್ರಾಕ್ಸಿ ಮಾಡುತ್ತದೆ, ಇದು ಬಳಕೆದಾರ-ಎಂಜಿನ್ chat_local_id ಗೆ ಹಿಂತಿರುಗುತ್ತದೆ - ಈ ಚಾಟ್‌ನಲ್ಲಿ ಹೊಸ ಸಂದೇಶದ ಅನನ್ಯ ಗುರುತಿಸುವಿಕೆ. chat_engine ನಂತರ ಚಾಟ್‌ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಸ್ವೀಕೃತದಾರರಿಗೆ ಸಂದೇಶವನ್ನು ಪ್ರಸಾರ ಮಾಡುತ್ತದೆ.
  3. ಬಳಕೆದಾರ-ಎಂಜಿನ್ ಚಾಟ್-ಎಂಜಿನ್‌ನಿಂದ chat_local_id ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು user_local_id ಅನ್ನು PHP ಗೆ ಹಿಂತಿರುಗಿಸುತ್ತದೆ - ಈ ಬಳಕೆದಾರರಿಗೆ ಒಂದು ಅನನ್ಯ ಸಂದೇಶ ಗುರುತಿಸುವಿಕೆ. ಈ ಗುರುತಿಸುವಿಕೆಯನ್ನು ನಂತರ ಬಳಸಲಾಗುತ್ತದೆ, ಉದಾಹರಣೆಗೆ, API ಮೂಲಕ ಸಂದೇಶಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು.

VKontakte ಸಂದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಪುನಃ ಬರೆಯಿರಿ ಮತ್ತು ಬದುಕುಳಿಯಿರಿ
ಆದರೆ ವಾಸ್ತವವಾಗಿ ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸುವುದರ ಜೊತೆಗೆ, ನೀವು ಇನ್ನೂ ಕೆಲವು ಪ್ರಮುಖ ವಿಷಯಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕಾಗಿದೆ:

  • ಉಪಪಟ್ಟಿಗಳು, ಉದಾಹರಣೆಗೆ, ಸಂಭಾಷಣೆ ಪಟ್ಟಿಯನ್ನು ತೆರೆಯುವಾಗ ನೀವು ನೋಡುವ ಇತ್ತೀಚಿನ ಸಂದೇಶಗಳು. ಓದದಿರುವ ಸಂದೇಶಗಳು, ಟ್ಯಾಗ್‌ಗಳೊಂದಿಗೆ ಸಂದೇಶಗಳು ("ಪ್ರಮುಖ", "ಸ್ಪ್ಯಾಮ್", ಇತ್ಯಾದಿ).
  • ಚಾಟ್-ಎಂಜಿನ್‌ನಲ್ಲಿ ಸಂದೇಶಗಳನ್ನು ಸಂಕುಚಿತಗೊಳಿಸುವುದು
  • ಬಳಕೆದಾರ-ಎಂಜಿನ್‌ನಲ್ಲಿ ಸಂದೇಶಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವುದು
  • ಹುಡುಕಿ (ಎಲ್ಲಾ ಸಂವಾದಗಳ ಮೂಲಕ ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಒಂದರಲ್ಲಿ).
  • ನೈಜ-ಸಮಯದ ನವೀಕರಣ (ಲಾಂಗ್‌ಪೋಲಿಂಗ್).
  • ಮೊಬೈಲ್ ಕ್ಲೈಂಟ್‌ಗಳಲ್ಲಿ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವಿಕೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಇತಿಹಾಸವನ್ನು ಉಳಿಸಲಾಗುತ್ತಿದೆ.

ಎಲ್ಲಾ ಉಪಪಟ್ಟಿಗಳು ವೇಗವಾಗಿ ರಚನೆಗಳನ್ನು ಬದಲಾಯಿಸುತ್ತಿವೆ. ಅವರೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ನಾವು ಬಳಸುತ್ತೇವೆ ಸ್ಪ್ಲೇ ಮರಗಳು. ಮರದ ಮೇಲ್ಭಾಗದಲ್ಲಿ ನಾವು ಕೆಲವೊಮ್ಮೆ ಸ್ನ್ಯಾಪ್‌ಶಾಟ್‌ನಿಂದ ಸಂದೇಶಗಳ ಸಂಪೂರ್ಣ ಭಾಗವನ್ನು ಸಂಗ್ರಹಿಸುತ್ತೇವೆ ಎಂಬ ಅಂಶದಿಂದ ಈ ಆಯ್ಕೆಯನ್ನು ವಿವರಿಸಲಾಗಿದೆ - ಉದಾಹರಣೆಗೆ, ರಾತ್ರಿಯ ಮರುಇಂಡೆಕ್ಸಿಂಗ್ ನಂತರ, ಮರವು ಒಂದು ಮೇಲ್ಭಾಗವನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಇದು ಉಪಪಟ್ಟಿಯ ಎಲ್ಲಾ ಸಂದೇಶಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಸಮತೋಲನದ ಬಗ್ಗೆ ಯೋಚಿಸದೆಯೇ ಅಂತಹ ಶೃಂಗದ ಮಧ್ಯದಲ್ಲಿ ಸೇರಿಸಲು ಸ್ಪ್ಲೇ ಟ್ರೀ ಸುಲಭಗೊಳಿಸುತ್ತದೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಸ್ಪ್ಲೇ ಅನಗತ್ಯ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುವುದಿಲ್ಲ, ಅದು ನಮಗೆ ಮೆಮೊರಿಯನ್ನು ಉಳಿಸುತ್ತದೆ.

ಸಂದೇಶಗಳು ಹೆಚ್ಚಿನ ಪ್ರಮಾಣದ ಮಾಹಿತಿಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ, ಹೆಚ್ಚಾಗಿ ಪಠ್ಯ, ಸಂಕುಚಿತಗೊಳಿಸಲು ಉಪಯುಕ್ತವಾಗಿದೆ. ಒಂದು ವೈಯಕ್ತಿಕ ಸಂದೇಶವನ್ನು ಸಹ ನಾವು ನಿಖರವಾಗಿ ಅನ್‌ಆರ್ಕೈವ್ ಮಾಡಬಹುದು ಎಂಬುದು ಮುಖ್ಯ. ಸಂದೇಶಗಳನ್ನು ಕುಗ್ಗಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ ಹಫ್ಮನ್ ಅಲ್ಗಾರಿದಮ್ ನಮ್ಮದೇ ಆದ ಹ್ಯೂರಿಸ್ಟಿಕ್ಸ್‌ನೊಂದಿಗೆ - ಉದಾಹರಣೆಗೆ, ಸಂದೇಶಗಳಲ್ಲಿ ಪದಗಳು "ಪದಗಳಲ್ಲದ" - ಸ್ಥಳಗಳು, ವಿರಾಮ ಚಿಹ್ನೆಗಳೊಂದಿಗೆ ಪರ್ಯಾಯವಾಗಿರುತ್ತವೆ ಎಂದು ನಮಗೆ ತಿಳಿದಿದೆ ಮತ್ತು ರಷ್ಯಾದ ಭಾಷೆಗೆ ಚಿಹ್ನೆಗಳನ್ನು ಬಳಸುವ ಕೆಲವು ವಿಶಿಷ್ಟತೆಗಳನ್ನು ಸಹ ನಾವು ನೆನಪಿಸಿಕೊಳ್ಳುತ್ತೇವೆ.

ಚಾಟ್‌ಗಳಿಗಿಂತ ಕಡಿಮೆ ಬಳಕೆದಾರರಿರುವುದರಿಂದ, ಚಾಟ್-ಎಂಜಿನ್‌ನಲ್ಲಿ ಯಾದೃಚ್ಛಿಕ-ಪ್ರವೇಶದ ಡಿಸ್ಕ್ ವಿನಂತಿಗಳನ್ನು ಉಳಿಸಲು, ನಾವು ಬಳಕೆದಾರ-ಎಂಜಿನ್‌ನಲ್ಲಿ ಸಂದೇಶಗಳನ್ನು ಸಂಗ್ರಹಿಸುತ್ತೇವೆ.

ಈ ಬಳಕೆದಾರರ ಚಾಟ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಎಲ್ಲಾ ಚಾಟ್-ಎಂಜಿನ್ ನಿದರ್ಶನಗಳಿಗೆ ಬಳಕೆದಾರ-ಎಂಜಿನ್‌ನಿಂದ ಕರ್ಣೀಯ ಪ್ರಶ್ನೆಯಾಗಿ ಸಂದೇಶ ಹುಡುಕಾಟವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. ಫಲಿತಾಂಶಗಳನ್ನು ಬಳಕೆದಾರ-ಎಂಜಿನ್‌ನಲ್ಲಿಯೇ ಸಂಯೋಜಿಸಲಾಗಿದೆ.

ಸರಿ, ಎಲ್ಲಾ ವಿವರಗಳನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ, ಹೊಸ ಯೋಜನೆಗೆ ಬದಲಾಯಿಸಲು ಮಾತ್ರ ಉಳಿದಿದೆ - ಮತ್ತು ಬಳಕೆದಾರರು ಅದನ್ನು ಗಮನಿಸದೆಯೇ.

ಡೇಟಾ ವಲಸೆ

ಆದ್ದರಿಂದ, ನಾವು ಬಳಕೆದಾರರಿಂದ ಸಂದೇಶಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಪಠ್ಯ-ಎಂಜಿನ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ ಮತ್ತು ಎರಡು ಕ್ಲಸ್ಟರ್‌ಗಳು ಚಾಟ್-ಸದಸ್ಯರು ಮತ್ತು ಸದಸ್ಯ-ಚಾಟ್‌ಗಳು ಬಹು-ಚಾಟ್ ರೂಮ್‌ಗಳು ಮತ್ತು ಅವುಗಳಲ್ಲಿನ ಬಳಕೆದಾರರ ಬಗ್ಗೆ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುತ್ತವೆ. ಇದರಿಂದ ಹೊಸ ಬಳಕೆದಾರ ಇಂಜಿನ್ ಮತ್ತು ಚಾಟ್ ಇಂಜಿನ್‌ಗೆ ಹೋಗುವುದು ಹೇಗೆ?

ಹಳೆಯ ಸ್ಕೀಮ್‌ನಲ್ಲಿನ ಸದಸ್ಯ-ಚಾಟ್‌ಗಳನ್ನು ಪ್ರಾಥಮಿಕವಾಗಿ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಾಗಿ ಬಳಸಲಾಗಿದೆ. ನಾವು ಅದರಿಂದ ಅಗತ್ಯ ಡೇಟಾವನ್ನು ತ್ವರಿತವಾಗಿ ಚಾಟ್-ಸದಸ್ಯರಿಗೆ ವರ್ಗಾಯಿಸಿದ್ದೇವೆ ಮತ್ತು ನಂತರ ಅದು ಇನ್ನು ಮುಂದೆ ವಲಸೆ ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ ಭಾಗವಹಿಸುವುದಿಲ್ಲ.

ಚಾಟ್-ಸದಸ್ಯರಿಗೆ ಸರದಿ. ಇದು 100 ನಿದರ್ಶನಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ಆದರೆ ಚಾಟ್-ಎಂಜಿನ್ 4 ಸಾವಿರವನ್ನು ಹೊಂದಿದೆ. ಡೇಟಾವನ್ನು ವರ್ಗಾಯಿಸಲು, ನೀವು ಅದನ್ನು ಅನುಸರಣೆಗೆ ತರಬೇಕಾಗಿದೆ - ಇದಕ್ಕಾಗಿ, ಚಾಟ್-ಸದಸ್ಯರನ್ನು ಅದೇ 4 ಸಾವಿರ ಪ್ರತಿಗಳಾಗಿ ವಿಂಗಡಿಸಲಾಗಿದೆ ಮತ್ತು ನಂತರ ಚಾಟ್-ಸದಸ್ಯರ ಬಿನ್ಲಾಗ್ ಅನ್ನು ಓದುವುದನ್ನು ಚಾಟ್-ಎಂಜಿನ್ನಲ್ಲಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.
VKontakte ಸಂದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಪುನಃ ಬರೆಯಿರಿ ಮತ್ತು ಬದುಕುಳಿಯಿರಿ
ಈಗ ಚಾಟ್-ಎಂಜಿನ್‌ಗೆ ಚಾಟ್-ಸದಸ್ಯರಿಂದ ಬಹು-ಚಾಟ್ ಬಗ್ಗೆ ತಿಳಿದಿದೆ, ಆದರೆ ಇದು ಇನ್ನೂ ಇಬ್ಬರು ಸಂವಾದಕರೊಂದಿಗೆ ಸಂಭಾಷಣೆಗಳ ಬಗ್ಗೆ ಏನನ್ನೂ ತಿಳಿದಿಲ್ಲ. ಅಂತಹ ಸಂವಾದಗಳು ಬಳಕೆದಾರರನ್ನು ಉಲ್ಲೇಖಿಸಿ ಪಠ್ಯ-ಎಂಜಿನ್‌ನಲ್ಲಿವೆ. ಇಲ್ಲಿ ನಾವು "ಹೆಡ್-ಆನ್" ಡೇಟಾವನ್ನು ತೆಗೆದುಕೊಂಡಿದ್ದೇವೆ: ಪ್ರತಿ ಚಾಟ್-ಎಂಜಿನ್ ನಿದರ್ಶನವು ಅಗತ್ಯವಿರುವ ಸಂಭಾಷಣೆಯನ್ನು ಹೊಂದಿದ್ದರೆ ಎಲ್ಲಾ ಪಠ್ಯ-ಎಂಜಿನ್ ನಿದರ್ಶನಗಳನ್ನು ಕೇಳಿದೆ.

ಗ್ರೇಟ್ - ಚಾಟ್-ಎಂಜಿನ್‌ಗೆ ಮಲ್ಟಿ-ಚಾಟ್ ಚಾಟ್‌ಗಳು ಯಾವುವು ಎಂದು ತಿಳಿದಿದೆ ಮತ್ತು ಅಲ್ಲಿ ಯಾವ ಡೈಲಾಗ್‌ಗಳಿವೆ ಎಂದು ತಿಳಿದಿದೆ.
ನೀವು ಬಹು-ಚಾಟ್ ಚಾಟ್‌ಗಳಲ್ಲಿ ಸಂದೇಶಗಳನ್ನು ಸಂಯೋಜಿಸುವ ಅಗತ್ಯವಿದೆ ಇದರಿಂದ ನೀವು ಪ್ರತಿ ಚಾಟ್‌ನಲ್ಲಿ ಸಂದೇಶಗಳ ಪಟ್ಟಿಯೊಂದಿಗೆ ಕೊನೆಗೊಳ್ಳುತ್ತೀರಿ. ಮೊದಲಿಗೆ, ಚಾಟ್-ಎಂಜಿನ್ ಈ ಚಾಟ್‌ನಿಂದ ಎಲ್ಲಾ ಬಳಕೆದಾರರ ಸಂದೇಶಗಳನ್ನು ಪಠ್ಯ-ಎಂಜಿನ್‌ನಿಂದ ಹಿಂಪಡೆಯುತ್ತದೆ. ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ ಅವುಗಳಲ್ಲಿ ಸಾಕಷ್ಟು ಇವೆ (ನೂರಾರು ಮಿಲಿಯನ್ ವರೆಗೆ), ಆದರೆ ಅಪರೂಪದ ವಿನಾಯಿತಿಗಳೊಂದಿಗೆ ಚಾಟ್ ಸಂಪೂರ್ಣವಾಗಿ RAM ಗೆ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ. ನಾವು ಆರ್ಡರ್ ಮಾಡದ ಸಂದೇಶಗಳನ್ನು ಹೊಂದಿದ್ದೇವೆ, ಪ್ರತಿಯೊಂದೂ ಹಲವಾರು ಪ್ರತಿಗಳಲ್ಲಿದೆ - ಎಲ್ಲಾ ನಂತರ, ಬಳಕೆದಾರರಿಗೆ ಅನುಗುಣವಾದ ವಿಭಿನ್ನ ಪಠ್ಯ-ಎಂಜಿನ್ ನಿದರ್ಶನಗಳಿಂದ ಅವುಗಳನ್ನು ಎಳೆಯಲಾಗುತ್ತದೆ. ಸಂದೇಶಗಳನ್ನು ವಿಂಗಡಿಸುವುದು ಮತ್ತು ಅನಗತ್ಯ ಜಾಗವನ್ನು ತೆಗೆದುಕೊಳ್ಳುವ ಪ್ರತಿಗಳನ್ನು ತೊಡೆದುಹಾಕುವುದು ಗುರಿಯಾಗಿದೆ.

ಪ್ರತಿಯೊಂದು ಸಂದೇಶವು ಅದನ್ನು ಕಳುಹಿಸಿದ ಸಮಯ ಮತ್ತು ಪಠ್ಯವನ್ನು ಒಳಗೊಂಡಿರುವ ಟೈಮ್‌ಸ್ಟ್ಯಾಂಪ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ. ವಿಂಗಡಿಸಲು ನಾವು ಸಮಯವನ್ನು ಬಳಸುತ್ತೇವೆ - ನಾವು ಮಲ್ಟಿಚಾಟ್ ಭಾಗವಹಿಸುವವರ ಹಳೆಯ ಸಂದೇಶಗಳಿಗೆ ಪಾಯಿಂಟರ್‌ಗಳನ್ನು ಇರಿಸುತ್ತೇವೆ ಮತ್ತು ಉದ್ದೇಶಿತ ಪ್ರತಿಗಳ ಪಠ್ಯದಿಂದ ಹ್ಯಾಶ್‌ಗಳನ್ನು ಹೋಲಿಕೆ ಮಾಡುತ್ತೇವೆ, ಸಮಯಸ್ಟ್ಯಾಂಪ್ ಅನ್ನು ಹೆಚ್ಚಿಸುವ ಕಡೆಗೆ ಚಲಿಸುತ್ತೇವೆ. ಪ್ರತಿಗಳು ಒಂದೇ ಹ್ಯಾಶ್ ಮತ್ತು ಟೈಮ್‌ಸ್ಟ್ಯಾಂಪ್ ಅನ್ನು ಹೊಂದಿರುವುದು ತಾರ್ಕಿಕವಾಗಿದೆ, ಆದರೆ ಪ್ರಾಯೋಗಿಕವಾಗಿ ಇದು ಯಾವಾಗಲೂ ಅಲ್ಲ. ನಿಮಗೆ ನೆನಪಿರುವಂತೆ, ಹಳೆಯ ಸ್ಕೀಮ್‌ನಲ್ಲಿ ಸಿಂಕ್ರೊನೈಸೇಶನ್ ಅನ್ನು PHP ಯಿಂದ ನಡೆಸಲಾಯಿತು - ಮತ್ತು ಅಪರೂಪದ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಒಂದೇ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುವ ಸಮಯವು ವಿಭಿನ್ನ ಬಳಕೆದಾರರಲ್ಲಿ ಭಿನ್ನವಾಗಿರುತ್ತದೆ. ಈ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಟೈಮ್‌ಸ್ಟ್ಯಾಂಪ್ ಅನ್ನು ಎಡಿಟ್ ಮಾಡಲು ನಾವು ಅನುಮತಿಸಿದ್ದೇವೆ - ಸಾಮಾನ್ಯವಾಗಿ ಒಂದು ಸೆಕೆಂಡಿನಲ್ಲಿ. ಎರಡನೆಯ ಸಮಸ್ಯೆಯು ವಿಭಿನ್ನ ಸ್ವೀಕೃತದಾರರಿಗೆ ಸಂದೇಶಗಳ ವಿಭಿನ್ನ ಕ್ರಮವಾಗಿದೆ. ಅಂತಹ ಸಂದರ್ಭಗಳಲ್ಲಿ, ವಿಭಿನ್ನ ಬಳಕೆದಾರರಿಗೆ ವಿಭಿನ್ನ ಆರ್ಡರ್ ಮಾಡುವ ಆಯ್ಕೆಗಳೊಂದಿಗೆ ಹೆಚ್ಚುವರಿ ನಕಲನ್ನು ರಚಿಸಲು ನಾವು ಅನುಮತಿಸಿದ್ದೇವೆ.

ಇದರ ನಂತರ, ಮಲ್ಟಿಚಾಟ್‌ನಲ್ಲಿನ ಸಂದೇಶಗಳ ಬಗ್ಗೆ ಡೇಟಾವನ್ನು ಬಳಕೆದಾರ-ಎಂಜಿನ್‌ಗೆ ಕಳುಹಿಸಲಾಗುತ್ತದೆ. ಮತ್ತು ಇಲ್ಲಿ ಆಮದು ಮಾಡಿದ ಸಂದೇಶಗಳ ಅಹಿತಕರ ವೈಶಿಷ್ಟ್ಯವು ಬರುತ್ತದೆ. ಸಾಮಾನ್ಯ ಕಾರ್ಯಾಚರಣೆಯಲ್ಲಿ, ಎಂಜಿನ್‌ಗೆ ಬರುವ ಸಂದೇಶಗಳನ್ನು user_local_id ಮೂಲಕ ಆರೋಹಣ ಕ್ರಮದಲ್ಲಿ ಕಟ್ಟುನಿಟ್ಟಾಗಿ ಆದೇಶಿಸಲಾಗುತ್ತದೆ. ಹಳೆಯ ಎಂಜಿನ್‌ನಿಂದ ಬಳಕೆದಾರ-ಎಂಜಿನ್‌ಗೆ ಆಮದು ಮಾಡಲಾದ ಸಂದೇಶಗಳು ಈ ಉಪಯುಕ್ತ ಗುಣವನ್ನು ಕಳೆದುಕೊಂಡಿವೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ಪರೀಕ್ಷೆಯ ಅನುಕೂಲಕ್ಕಾಗಿ, ನೀವು ಅವುಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ, ಅವುಗಳಲ್ಲಿ ಏನನ್ನಾದರೂ ನೋಡಿ ಮತ್ತು ಹೊಸದನ್ನು ಸೇರಿಸಿ.

ಆಮದು ಮಾಡಿದ ಸಂದೇಶಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ನಾವು ವಿಶೇಷ ಡೇಟಾ ರಚನೆಯನ್ನು ಬಳಸುತ್ತೇವೆ.

ಇದು ಗಾತ್ರದ ವೆಕ್ಟರ್ ಅನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ VKontakte ಸಂದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಪುನಃ ಬರೆಯಿರಿ ಮತ್ತು ಬದುಕುಳಿಯಿರಿಎಲ್ಲರೂ ಎಲ್ಲಿ VKontakte ಸಂದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಪುನಃ ಬರೆಯಿರಿ ಮತ್ತು ಬದುಕುಳಿಯಿರಿ - ಅಂಶಗಳ ವಿಶೇಷ ಕ್ರಮದೊಂದಿಗೆ ವಿಭಿನ್ನ ಮತ್ತು ಅವರೋಹಣ ಕ್ರಮದಲ್ಲಿ ಆದೇಶಿಸಲಾಗಿದೆ. ಸೂಚ್ಯಂಕಗಳೊಂದಿಗೆ ಪ್ರತಿ ವಿಭಾಗದಲ್ಲಿ VKontakte ಸಂದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಪುನಃ ಬರೆಯಿರಿ ಮತ್ತು ಬದುಕುಳಿಯಿರಿ ಅಂಶಗಳನ್ನು ವಿಂಗಡಿಸಲಾಗಿದೆ. ಅಂತಹ ರಚನೆಯಲ್ಲಿ ಒಂದು ಅಂಶವನ್ನು ಹುಡುಕಲು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ VKontakte ಸಂದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಪುನಃ ಬರೆಯಿರಿ ಮತ್ತು ಬದುಕುಳಿಯಿರಿ ಮೂಲಕ VKontakte ಸಂದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಪುನಃ ಬರೆಯಿರಿ ಮತ್ತು ಬದುಕುಳಿಯಿರಿ ಬೈನರಿ ಹುಡುಕಾಟಗಳು. ಒಂದು ಅಂಶದ ಸೇರ್ಪಡೆಯು ವಿಮೋಚನೆಗೊಳ್ಳುತ್ತದೆ VKontakte ಸಂದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಪುನಃ ಬರೆಯಿರಿ ಮತ್ತು ಬದುಕುಳಿಯಿರಿ.

ಆದ್ದರಿಂದ, ಹಳೆಯ ಎಂಜಿನ್‌ಗಳಿಂದ ಹೊಸದಕ್ಕೆ ಡೇಟಾವನ್ನು ಹೇಗೆ ವರ್ಗಾಯಿಸುವುದು ಎಂದು ನಾವು ಕಂಡುಕೊಂಡಿದ್ದೇವೆ. ಆದರೆ ಈ ಪ್ರಕ್ರಿಯೆಯು ಹಲವಾರು ದಿನಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ - ಮತ್ತು ಈ ದಿನಗಳಲ್ಲಿ ನಮ್ಮ ಬಳಕೆದಾರರು ಪರಸ್ಪರ ಬರೆಯುವ ಅಭ್ಯಾಸವನ್ನು ಬಿಟ್ಟುಬಿಡುವ ಸಾಧ್ಯತೆಯಿಲ್ಲ. ಈ ಸಮಯದಲ್ಲಿ ಸಂದೇಶಗಳನ್ನು ಕಳೆದುಕೊಳ್ಳದಿರಲು, ನಾವು ಹಳೆಯ ಮತ್ತು ಹೊಸ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಬಳಸುವ ಕೆಲಸದ ಯೋಜನೆಗೆ ಬದಲಾಯಿಸುತ್ತೇವೆ.

ಡೇಟಾವನ್ನು ಚಾಟ್-ಸದಸ್ಯರು ಮತ್ತು ಬಳಕೆದಾರ-ಎಂಜಿನ್‌ಗೆ ಬರೆಯಲಾಗುತ್ತದೆ (ಮತ್ತು ಪಠ್ಯ-ಎಂಜಿನ್‌ಗೆ ಅಲ್ಲ, ಹಳೆಯ ಯೋಜನೆಯ ಪ್ರಕಾರ ಸಾಮಾನ್ಯ ಕಾರ್ಯಾಚರಣೆಯಂತೆ). ಬಳಕೆದಾರ-ಎಂಜಿನ್ ಚಾಟ್-ಎಂಜಿನ್‌ಗೆ ವಿನಂತಿಯನ್ನು ಪ್ರಾಕ್ಸಿ ಮಾಡುತ್ತದೆ - ಮತ್ತು ಇಲ್ಲಿ ವರ್ತನೆಯು ಈ ಚಾಟ್ ಅನ್ನು ಈಗಾಗಲೇ ವಿಲೀನಗೊಳಿಸಲಾಗಿದೆಯೇ ಅಥವಾ ಇಲ್ಲವೇ ಎಂಬುದರ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತದೆ. ಚಾಟ್ ಅನ್ನು ಇನ್ನೂ ವಿಲೀನಗೊಳಿಸದಿದ್ದರೆ, ಚಾಟ್-ಎಂಜಿನ್ ಸಂದೇಶವನ್ನು ಸ್ವತಃ ಬರೆಯುವುದಿಲ್ಲ ಮತ್ತು ಅದರ ಪ್ರಕ್ರಿಯೆಯು ಪಠ್ಯ-ಎಂಜಿನ್‌ನಲ್ಲಿ ಮಾತ್ರ ಸಂಭವಿಸುತ್ತದೆ. ಚಾಟ್ ಅನ್ನು ಈಗಾಗಲೇ ಚಾಟ್-ಎಂಜಿನ್‌ಗೆ ವಿಲೀನಗೊಳಿಸಿದ್ದರೆ, ಅದು chat_local_id ಅನ್ನು ಬಳಕೆದಾರ-ಎಂಜಿನ್‌ಗೆ ಹಿಂತಿರುಗಿಸುತ್ತದೆ ಮತ್ತು ಎಲ್ಲಾ ಸ್ವೀಕರಿಸುವವರಿಗೆ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುತ್ತದೆ. ಬಳಕೆದಾರ-ಎಂಜಿನ್ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಪಠ್ಯ-ಎಂಜಿನ್‌ಗೆ ಪ್ರಾಕ್ಸಿ ಮಾಡುತ್ತದೆ - ಇದರಿಂದ ಏನಾದರೂ ಸಂಭವಿಸಿದರೆ, ಹಳೆಯ ಎಂಜಿನ್‌ನಲ್ಲಿ ಪ್ರಸ್ತುತ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಹೊಂದಿರುವ ನಾವು ಯಾವಾಗಲೂ ಹಿಂತಿರುಗಬಹುದು. ಪಠ್ಯ-ಎಂಜಿನ್ user_local_id ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಇದು ಬಳಕೆದಾರ-ಎಂಜಿನ್ ಸಂಗ್ರಹಿಸುತ್ತದೆ ಮತ್ತು ಬ್ಯಾಕೆಂಡ್‌ಗೆ ಹಿಂತಿರುಗುತ್ತದೆ.
VKontakte ಸಂದೇಶ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಮೊದಲಿನಿಂದ ಪುನಃ ಬರೆಯಿರಿ ಮತ್ತು ಬದುಕುಳಿಯಿರಿ
ಪರಿಣಾಮವಾಗಿ, ಪರಿವರ್ತನೆ ಪ್ರಕ್ರಿಯೆಯು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ: ನಾವು ಖಾಲಿ ಬಳಕೆದಾರ-ಎಂಜಿನ್ ಮತ್ತು ಚಾಟ್-ಎಂಜಿನ್ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಸಂಪರ್ಕಿಸುತ್ತೇವೆ. ಚಾಟ್-ಎಂಜಿನ್ ಸಂಪೂರ್ಣ ಚಾಟ್-ಸದಸ್ಯರ ಬಿನ್‌ಲಾಗ್ ಅನ್ನು ಓದುತ್ತದೆ, ನಂತರ ಮೇಲೆ ವಿವರಿಸಿದ ಯೋಜನೆಯ ಪ್ರಕಾರ ಪ್ರಾಕ್ಸಿಯಿಂಗ್ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ನಾವು ಹಳೆಯ ಡೇಟಾವನ್ನು ವರ್ಗಾಯಿಸುತ್ತೇವೆ ಮತ್ತು ಎರಡು ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡಿದ ಕ್ಲಸ್ಟರ್‌ಗಳನ್ನು ಪಡೆಯುತ್ತೇವೆ (ಹಳೆಯ ಮತ್ತು ಹೊಸದು). ಪಠ್ಯ-ಎಂಜಿನ್‌ನಿಂದ ಬಳಕೆದಾರ-ಎಂಜಿನ್‌ಗೆ ಓದುವಿಕೆಯನ್ನು ಬದಲಾಯಿಸುವುದು ಮತ್ತು ಪ್ರಾಕ್ಸಿಯಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು ಮಾತ್ರ ಉಳಿದಿದೆ.

ರೆಸೆಲ್ಯೂಟ್ಸ್

ಹೊಸ ವಿಧಾನಕ್ಕೆ ಧನ್ಯವಾದಗಳು, ಎಂಜಿನ್‌ಗಳ ಎಲ್ಲಾ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೆಟ್ರಿಕ್‌ಗಳನ್ನು ಸುಧಾರಿಸಲಾಗಿದೆ ಮತ್ತು ಡೇಟಾ ಸ್ಥಿರತೆಯೊಂದಿಗಿನ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲಾಗಿದೆ. ಈಗ ನಾವು ಸಂದೇಶಗಳಲ್ಲಿ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು (ಮತ್ತು ಈಗಾಗಲೇ ಇದನ್ನು ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿದ್ದೇವೆ - ನಾವು ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯ ಚಾಟ್ ಭಾಗವಹಿಸುವವರನ್ನು ಹೆಚ್ಚಿಸಿದ್ದೇವೆ, ಫಾರ್ವರ್ಡ್ ಮಾಡಿದ ಸಂದೇಶಗಳಿಗಾಗಿ ಹುಡುಕಾಟವನ್ನು ಜಾರಿಗೊಳಿಸಿದ್ದೇವೆ, ಪಿನ್ ಮಾಡಿದ ಸಂದೇಶಗಳನ್ನು ಪ್ರಾರಂಭಿಸಿದ್ದೇವೆ ಮತ್ತು ಪ್ರತಿ ಬಳಕೆದಾರರಿಗೆ ಒಟ್ಟು ಸಂದೇಶಗಳ ಮಿತಿಯನ್ನು ಹೆಚ್ಚಿಸಿದ್ದೇವೆ) .

ತರ್ಕಶಾಸ್ತ್ರದಲ್ಲಿನ ಬದಲಾವಣೆಗಳು ನಿಜವಾಗಿಯೂ ಅಗಾಧವಾಗಿವೆ. ಮತ್ತು ಇದು ಯಾವಾಗಲೂ ಒಂದು ದೊಡ್ಡ ತಂಡ ಮತ್ತು ಅಸಂಖ್ಯಾತ ಕೋಡ್‌ಗಳ ಮೂಲಕ ಅಭಿವೃದ್ಧಿಯ ಸಂಪೂರ್ಣ ವರ್ಷಗಳ ಅರ್ಥವಲ್ಲ ಎಂದು ನಾನು ಗಮನಿಸಲು ಬಯಸುತ್ತೇನೆ. ಚಾಟ್-ಎಂಜಿನ್ ಮತ್ತು ಬಳಕೆದಾರ-ಎಂಜಿನ್ ಜೊತೆಗೆ ಎಲ್ಲಾ ಹೆಚ್ಚುವರಿ ಕಥೆಗಳಾದ ಹಫ್‌ಮ್ಯಾನ್ ಸಂದೇಶ ಸಂಕುಚನ, ಸ್ಪ್ಲೇ ಮರಗಳು ಮತ್ತು ಆಮದು ಮಾಡಿದ ಸಂದೇಶಗಳಿಗಾಗಿ ರಚನೆಯು 20 ಸಾವಿರ ಲೈನ್‌ಗಳಿಗಿಂತ ಕಡಿಮೆ ಕೋಡ್ ಆಗಿದೆ. ಮತ್ತು ಅವುಗಳನ್ನು ಕೇವಲ 3 ತಿಂಗಳುಗಳಲ್ಲಿ 10 ಡೆವಲಪರ್‌ಗಳು ಬರೆದಿದ್ದಾರೆ (ಆದಾಗ್ಯೂ, ಅದನ್ನು ನೆನಪಿನಲ್ಲಿಟ್ಟುಕೊಳ್ಳುವುದು ಯೋಗ್ಯವಾಗಿದೆ ಎಲ್ಲಾ ಮೂರು ಡೆವಲಪರ್ - ವಿಶ್ವ ಚಾಂಪಿಯನ್ ಕ್ರೀಡಾ ಕಾರ್ಯಕ್ರಮಗಳಲ್ಲಿ).

ಇದಲ್ಲದೆ, ಸರ್ವರ್‌ಗಳ ಸಂಖ್ಯೆಯನ್ನು ದ್ವಿಗುಣಗೊಳಿಸುವ ಬದಲು, ನಾವು ಅವುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಅರ್ಧದಷ್ಟು ಕಡಿಮೆಗೊಳಿಸಿದ್ದೇವೆ - ಈಗ ಬಳಕೆದಾರ-ಎಂಜಿನ್ ಮತ್ತು ಚಾಟ್-ಎಂಜಿನ್ 500 ಭೌತಿಕ ಯಂತ್ರಗಳಲ್ಲಿ ಲೈವ್ ಆಗಿವೆ, ಆದರೆ ಹೊಸ ಯೋಜನೆಯು ಲೋಡ್‌ಗೆ ದೊಡ್ಡ ಹೆಡ್‌ರೂಮ್ ಅನ್ನು ಹೊಂದಿದೆ. ನಾವು ಉಪಕರಣಗಳ ಮೇಲೆ ಬಹಳಷ್ಟು ಹಣವನ್ನು ಉಳಿಸಿದ್ದೇವೆ - ಕಾರ್ಯಾಚರಣೆಯ ವೆಚ್ಚದಲ್ಲಿ ಸುಮಾರು $ 5 ಮಿಲಿಯನ್ + ವರ್ಷಕ್ಕೆ $ 750 ಸಾವಿರ.

ಅತ್ಯಂತ ಸಂಕೀರ್ಣ ಮತ್ತು ದೊಡ್ಡ-ಪ್ರಮಾಣದ ಸಮಸ್ಯೆಗಳಿಗೆ ಉತ್ತಮ ಪರಿಹಾರಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು ನಾವು ಪ್ರಯತ್ನಿಸುತ್ತೇವೆ. ನಮ್ಮಲ್ಲಿ ಸಾಕಷ್ಟು ಇವೆ - ಮತ್ತು ಅದಕ್ಕಾಗಿಯೇ ನಾವು ಡೇಟಾಬೇಸ್ ವಿಭಾಗದಲ್ಲಿ ಪ್ರತಿಭಾವಂತ ಡೆವಲಪರ್‌ಗಳನ್ನು ಹುಡುಕುತ್ತಿದ್ದೇವೆ. ನೀವು ಪ್ರೀತಿಸುತ್ತಿದ್ದರೆ ಮತ್ತು ಅಂತಹ ಸಮಸ್ಯೆಗಳನ್ನು ಹೇಗೆ ಪರಿಹರಿಸಬೇಕೆಂದು ತಿಳಿದಿದ್ದರೆ, ಅಲ್ಗಾರಿದಮ್‌ಗಳು ಮತ್ತು ಡೇಟಾ ರಚನೆಗಳ ಅತ್ಯುತ್ತಮ ಜ್ಞಾನವನ್ನು ಹೊಂದಿದ್ದರೆ, ತಂಡಕ್ಕೆ ಸೇರಲು ನಾವು ನಿಮ್ಮನ್ನು ಆಹ್ವಾನಿಸುತ್ತೇವೆ. ನಮ್ಮನ್ನು ಸಂಪರ್ಕಿಸಿ HRವಿವರಗಳಿಗಾಗಿ.

ಈ ಕಥೆಯು ನಿಮ್ಮ ಬಗ್ಗೆ ಅಲ್ಲದಿದ್ದರೂ, ನಾವು ಶಿಫಾರಸುಗಳನ್ನು ಗೌರವಿಸುತ್ತೇವೆ ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. ಬಗ್ಗೆ ಸ್ನೇಹಿತರಿಗೆ ತಿಳಿಸಿ ಡೆವಲಪರ್ ಹುದ್ದೆಯ, ಮತ್ತು ಅವರು ಪ್ರಾಯೋಗಿಕ ಅವಧಿಯನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಪೂರ್ಣಗೊಳಿಸಿದರೆ, ನೀವು 100 ಸಾವಿರ ರೂಬಲ್ಸ್ಗಳ ಬೋನಸ್ ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತೀರಿ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ