Shopify ತನ್ನ ಇನ್ವೆಂಟರಿ ಮೀಸಲಾತಿಯನ್ನು MySQL ಗೆ ಸರಿಸಿದೆ
Shopify ತನ್ನ ಇನ್ವೆಂಟರಿ ರಿಸರ್ವೇಶನ್ ಸಿಸ್ಟಮ್ ಅನ್ನು Redis ನಿಂದ MySQL ಡೇಟಾಬೇಸ್ಗೆ ಸ್ಥಳಾಂತರಿಸಿತು, ಅದು ಈಗಾಗಲೇ ಇನ್ವೆಂಟರಿ ಲೆಡ್ಜರ್ ಅನ್ನು ಹೊಂದಿತ್ತು.
Shopify ತನ್ನ ಇನ್ವೆಂಟರಿ ರಿಸರ್ವೇಶನ್ ಸಿಸ್ಟಮ್ ಅನ್ನು Redis ನಿಂದ MySQL ಡೇಟಾಬೇಸ್ಗೆ ಸ್ಥಳಾಂತರಿಸಿತು, ಅದು ಈಗಾಗಲೇ ಇನ್ವೆಂಟರಿ ಲೆಡ್ಜರ್ ಅನ್ನು ಹೊಂದಿತ್ತು. ಪ್ರತ್ಯೇಕವಾಗಿ ಲಾಕ್ ಮಾಡಬಹುದಾದ ಯುನಿಟ್ ರೋಗಳ ಬೌಂಡೆಡ್ ಪೂಲ್ ಏಕಕಾಲೀನ ಚೆಕ್ಔಟ್ಗಳಿಗೆ SKIP LOCKED ಅನ್ನು ಬಳಸಿಕೊಂಡು ವಿಭಿನ್ನ ಅರ್ಹ ಯುನಿಟ್ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ. ಈ ವಿನ್ಯಾಸವು ಟ್ರಾನ್ಸಾಕ್ಷನ್ ಬೌಂಡರಿಗಳು, ಪ್ರೈಮರಿ-ಕೀ ವಿನ್ಯಾಸ, ಮರುಪೂರಣ ನಿಯಮಗಳು ಮತ್ತು ಚೆಕ್ಔಟ್ನಾದ್ಯಂತ ಸಂಪರ್ಕ ಹೋಲ್ಡ್ ಸಮಯವನ್ನು ಗಮನಿಸುವುದರ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ.
ಲಿಖಿತ ಆವೃತ್ತಿಯನ್ನು ಓದಿ (ಇಂಗ್ಲಿಷ್) ↗
ಈ ವೀಡಿಯೊ ಏನನ್ನು ಒಳಗೊಂಡಿದೆ
- ಹಳೆಯ Redis ಪ್ರಮಾಣ-ಕೌಂಟರ್ ಮಾದರಿಯು ಏಕಕಾಲೀನತೆಯನ್ನು ನಿರ್ವಹಿಸಿತು, ಆದರೆ ರಿಸರ್ವೇಶನ್ ಕ್ಲೀನಪ್ ಮತ್ತು MySQL ಲೆಡ್ಜರ್ ಅಪ್ಡೇಟ್ ಒಂದೇ ಸ್ಥಳೀಯ ಅಟಾಮಿಕ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.
- ಬದಲಿಯು ಪ್ರತಿ ಐಟಂ/ಸ್ಥಳ ಸಂಯೋಜನೆಗೆ 1,000ಕ್ಕೆ ಸೀಮಿತವಾದ ಪೂಲ್ನಲ್ಲಿ ಪ್ರತಿ ಲಭ್ಯವಿರುವ ಯುನಿಟ್ಗೆ ಒಂದು ರೋ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಖಾಲಿ ಪೂಲ್ ಮರುಪೂರಣ ಲಾಕ್ ಹಿಂದೆ ಕಾಯುತ್ತಿರುವ ಏಕಕಾಲೀನ ವಿನಂತಿಗಳೊಂದಿಗೆ ಇನ್ಲೈನ್ ಮರುಪೂರಣವನ್ನು ಪ್ರಚೋದಿಸಬಹುದು.
- ಕಾಂಪೋಸಿಟ್ ಪ್ರೈಮರಿ ಕೀ (shop_id, inventory_item_id, inventory_group_id, id) ಆಗಿದೆ. Shopify ತನ್ನ ಮೂಲಮಾದರಿಯಲ್ಲಿ ಲಾಕ್ ಓವರ್ಹೆಡ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿತು ಮತ್ತು ಮರುಪೂರಣವನ್ನು ನಿರ್ಬಂಧಿಸಿದ ಗ್ಯಾಪ್ ಲಾಕ್ಗಳನ್ನು ತಪ್ಪಿಸಲು READ COMMITTED ಅನ್ನು ಬಳಸಿತು.
- ರಿಸರ್ವ್, ರಿಸರ್ವೇಶನ್ ದಾಖಲೆಗಳನ್ನು ಸೇರಿಸುವ ಮೊದಲು ಪೂಲ್ ರೋಗಳನ್ನು ಅಳಿಸುತ್ತದೆ. ಕಮಿಟಿಂಗ್ ಡೇಟಾಬೇಸ್ ಲಾಕ್ಗಳನ್ನು ಬಿಡುಗಡೆ ಮಾಡುತ್ತದೆ, ಆದರೆ ಸಂಗ್ರಹಿಸಿದ ಹೋಲ್ಡ್ ಪಾವತಿಯಾದ್ಯಂತ ಉಳಿಯುತ್ತದೆ; ಯಶಸ್ವಿ ಪಾವತಿ ಲೆಡ್ಜರ್ ಅನ್ನು ಕ್ಲೈಮ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ನಂತರದ ಅಟಾಮಿಕ್ ಟ್ರಾನ್ಸಾಕ್ಷನ್ನಲ್ಲಿ ರಿಸರ್ವೇಶನ್ ಅನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ.
- MySQL SKIP LOCKED ಅನ್ನು ಲಾಕ್ ಮಾಡಲಾದ ರೋಗಳನ್ನು ಹೊರತುಪಡಿಸುವ ಅಸಮಂಜಸ ನೋಟ ಎಂದು ದಾಖಲಿಸುತ್ತದೆ. ಇದು ಸಂಪೂರ್ಣ ಸ್ಟಾಕ್ ಎಣಿಕೆ ಅಥವಾ ನ್ಯಾಯಯುತ ಸರದಿ-ತೆಗೆದುಕೊಳ್ಳುವಿಕೆಯನ್ನು ಸ್ಥಾಪಿಸುವುದಿಲ್ಲ, ರೋ-ಮಟ್ಟದ ಲಾಕ್ಗಳಿಗೆ ಮಾತ್ರ ಅನ್ವಯಿಸುತ್ತದೆ ಮತ್ತು ಸ್ಟೇಟ್ಮೆಂಟ್-ಆಧಾರಿತ ರೆಪ್ಲಿಕೇಶನ್ಗೆ ಅಸುರಕ್ಷಿತವಾಗಿದೆ.
- ಮೂಲ ಉದಾಹರಣೆಯು expires_at ಅನ್ನು ಒಳಗೊಂಡಿದೆ, ಆದರೆ Shopify MySQL ಎಕ್ಸ್ಪಿರೇಶನ್-ಕ್ಲೀನಪ್ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ದಾಖಲಿಸುವುದಿಲ್ಲ. ವೀಡಿಯೊದ ಬಿಡುಗಡೆ/ಎಕ್ಸ್ಪೈರಿ ಶಾಖೆಯು ವಿವರಣಾತ್ಮಕ ಜೀವನಚಕ್ರದ ಅವಶ್ಯಕತೆಯಾಗಿದೆ.
- ಇತರ ಚೆಕ್ಔಟ್ ಕೋಡ್ನಲ್ಲಿನ ಸಂಪರ್ಕ ಹೋಲ್ಡ್ ಸಮಯವು ಅಂತಿಮ ಥ್ರೂಪುಟ್ ಬಾಟಲ್ನೆಕ್ ಆಗಿತ್ತು. Shopify ಎರಡೂ ಸಿಸ್ಟಮ್ಗಳನ್ನು ಶಾಡೋ-ರೈಟ್ ಮಾಡಿತು, ಫಲಿತಾಂಶಗಳನ್ನು ಹೋಲಿಸಿತು ಮತ್ತು Redis ಕಿಲ್-ಸ್ವಿಚ್ ಫಾಲ್ಬ್ಯಾಕ್ನೊಂದಿಗೆ ಕ್ರಮೇಣ ಬದಲಾಯಿಸಿತು.
ಅನುವಾದಿತ ಪ್ರತಿಲೇಖನ
ಮೂಲ ಇಂಗ್ಲಿಷ್ ನಿರೂಪಣೆಯಿಂದ ಅನುವಾದಿಸಲಾಗಿದೆ. ಲಭ್ಯವಿರುವ ಆಡಿಯೋ ಮತ್ತು ಶೀರ್ಷಿಕೆಗಳನ್ನು YouTube ನಿಯಂತ್ರಿಸುತ್ತದೆ.
ರಿಸರ್ವೇಶನ್ಗಳನ್ನು MySQL ಗೆ ಏಕೆ ಸ್ಥಳಾಂತರಿಸಬೇಕು?
0:00 ಚೆಕ್ಔಟ್ ವೇಗವಾಗಿರಲು Redis ಅಗತ್ಯವಿದೆ. Shopify ಇನ್ವೆಂಟರಿ ರಿಸರ್ವೇಶನ್ಗಳನ್ನು MySQL ಗೆ ಸ್ಥಳಾಂತರಿಸಿದೆ, ಪ್ರತಿ ಯುನಿಟ್ಗೆ ಒಂದು ರೋ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸೀಮಿತ ಪೂಲ್ನಲ್ಲಿ. MySQL ಅನ್ನು ಏಕೆ ಆರಿಸಬೇಕು? ಲಾಕ್ಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಹೇಗೆ ಬಿಟ್ಟುಬಿಡಬೇಕು? ಇದು The Daily Diff, ತೆರೆಮರೆಯಲ್ಲಿ. ಮತ್ತು ವೇಗದ ಪ್ರಶ್ನೆಗಳು ಇನ್ನೂ ಮಿತಿಯನ್ನು ಏಕೆ ತಲುಪಿದವು? Shopify ಆನ್ಲೈನ್ನಲ್ಲಿ ಮತ್ತು ವೈಯಕ್ತಿಕವಾಗಿ ಮಾರಾಟ ಮಾಡಲು ಒಂದು ಕಾಮರ್ಸ್ ವೇದಿಕೆಯಾಗಿದೆ. Redis ಒಂದು ಇನ್-ಮೆಮೊರಿ ಡೇಟಾ ಸ್ಟೋರ್ ಆಗಿದೆ.
0:21 MySQL ಒಂದು ರಿಲೇಶನಲ್ ಡೇಟಾಬೇಸ್ ಆಗಿದೆ, ಮತ್ತು Shopify ಈಗಾಗಲೇ ತನ್ನ ಇನ್ವೆಂಟರಿ ಲೆಡ್ಜರ್ ಅನ್ನು ಅಲ್ಲಿ ಇರಿಸಿತ್ತು. ಖರೀದಿದಾರರು ಪಾವತಿಸುವಾಗ ರಿಸರ್ವೇಶನ್ ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಸ್ಟಾಕ್ ಅನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುತ್ತದೆ.
ಎರಡು ಸ್ಟೋರ್ಗಳು ಏಕೆ ಅಪಾಯಕಾರಿ?
0:29 ಅವರ Redis ಮಾದರಿಯು ಐಟಂ ಕೌಂಟರ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿದೆ. ಪಾವತಿಸಿದ ಆರ್ಡರ್ ಅನ್ನು ಕ್ಲೈಮ್ ಮಾಡುವುದು MySQL ಲೆಡ್ಜರ್ ಅನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡುವುದು ಮತ್ತು Redis ಅನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸುವುದು ಎಂದರ್ಥ. ಆ ಪ್ರತ್ಯೇಕ ಬರವಣಿಗೆಗಳು ಸ್ಟಾಕ್ ಅನ್ನು ಎರಡು ಬಾರಿ ಮಾರಾಟ ಮಾಡಬಹುದು ಅಥವಾ ಮಾರಾಟವಾಗಬೇಕಾದಾಗ ಲಭ್ಯವಿಲ್ಲದೆ ಮಾಡಬಹುದು. ಹಳೆಯ ಮಾದರಿಯು ಸ್ಥಳದ ಅರಿವನ್ನು ಸಹ ಹೊಂದಿರಲಿಲ್ಲ. ಬದಲಿ ಆದೇಶವನ್ನು ಪೂರೈಸುವ ಸ್ಥಳದಿಂದ ಸ್ಟಾಕ್ ಅನ್ನು ಆರಿಸಬೇಕು. ತಪ್ಪಾದ ಖಂಡದಲ್ಲಿರುವ ಗೋದಾಮು ಅತ್ಯುತ್ತಮ ಡೇಟಾಬೇಸ್ ಪ್ರವೇಶವನ್ನು ಮತ್ತು ಭಯಾನಕ ವಿತರಣಾ ಭರವಸೆಯನ್ನು ನೀಡುತ್ತದೆ. ಹಿಂದಿನ MySQL ಪ್ರಯತ್ನಗಳು ಪ್ರಮಾಣದ ರೋ ಅನ್ನು ಬಳಸಿದವು, ಆದ್ದರಿಂದ ಸ್ಪರ್ಧಾತ್ಮಕ ಚೆಕ್ಔಟ್ಗಳು ಒಂದೇ ಲಾಕ್ನಲ್ಲಿ ಸಾಲುಗಟ್ಟಿ ನಿಂತಿದ್ದವು.
ಲಾಕ್ ಮಾಡಬಹುದಾದ ಯುನಿಟ್ ಏನಾಗುತ್ತದೆ?
0:56 ಸ್ಪ್ರೆಡ್ಶೀಟ್ ಸೆಲ್ ಸುತ್ತಲೂ ಒಂದು ವೆಲ್ವೆಟ್ ರೋಪ್ ಅನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಹೆಚ್ಚು ಕಾರ್ಮಿಕರನ್ನು ಸೇರಿಸುವುದು ಕೇವಲ ಕ್ಯೂ ಅನ್ನು ಉದ್ದಗೊಳಿಸುತ್ತದೆ. Shopify ಲಾಕ್ ಮಾಡಬಹುದಾದ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಬದಲಾಯಿಸಿದೆ. ಪ್ರತಿ ಲಭ್ಯವಿರುವ ಯುನಿಟ್ಗೆ ತನ್ನದೇ ಆದ ರೋ ಸಿಗುತ್ತದೆ. ಲಾಕಿಂಗ್ ರೀಡ್ ಇನ್ನೊಂದು ಟ್ರಾನ್ಸಾಕ್ಷನ್ ಹೊಂದಿರುವ ಯುನಿಟ್ಗಳನ್ನು ಬಿಟ್ಟುಬಿಡುತ್ತದೆ ಮತ್ತು ಇತರ ಅರ್ಹ ಯುನಿಟ್ಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ. ವಿಭಿನ್ನ ಕಾರ್ಮಿಕರು ವಿಭಿನ್ನ ರೋಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಬಹುದು, ಹಾಟ್ ಕೌಂಟರ್ ಅವರ ದಾರಿಯಲ್ಲಿ ಬರದಂತೆ.
ಪೂಲ್ ಖಾಲಿಯಾದಾಗ ಏನಾಗುತ್ತದೆ?
1:15 ಆ ಪೂಲ್ ಪ್ರತಿ ಐಟಂ ಮತ್ತು ಸ್ಥಳಕ್ಕೆ ಸಾವಿರ ರೋಗಳಿಗೆ ಸೀಮಿತವಾಗಿದೆ. ಮರುಪೂರಣವು ಲೆಡ್ಜರ್ನಿಂದ ಸೆಳೆಯುತ್ತದೆ. ಅದು ಖಾಲಿಯಾದರೆ, ರಿಸರ್ವ್ ಪಾತ್ ಇನ್ಲೈನ್ ಆಗಿ ಮರುಪೂರಣ ಮಾಡುತ್ತದೆ, ಸ್ಪರ್ಧಾತ್ಮಕ ವಿನಂತಿಗಳು ಮರುಪೂರಣ ಲಾಕ್ ಹಿಂದೆ ಕಾಯುತ್ತಾ. ಖಾಲಿ ಪೂಲ್ ಎಂದರೆ ಖಾಲಿ ಗೋದಾಮು ಎಂದಲ್ಲ. ರಿಸರ್ವ್ ಆಯ್ದ ಪೂಲ್ ರೋಗಳನ್ನು ಅಳಿಸುತ್ತದೆ, ನಂತರ ಟ್ರಾನ್ಸಾಕ್ಷನ್ನಲ್ಲಿ ರಿಸರ್ವೇಶನ್ ದಾಖಲೆಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ. ಕಮಿಟ್ ಡೇಟಾಬೇಸ್ ಲಾಕ್ಗಳನ್ನು ಬಿಡುಗಡೆ ಮಾಡುತ್ತದೆ. ರೋಲ್ಬ್ಯಾಕ್ ಬದಲಾವಣೆಗಳನ್ನು ರದ್ದುಗೊಳಿಸುತ್ತದೆ.
1:35 ರಿಸರ್ವೇಶನ್ ಪಾವತಿ ಪ್ರಕ್ರಿಯೆಯಾದ್ಯಂತ ಸಂಗ್ರಹಿಸಿದ ಸ್ಥಿತಿಯಾಗಿ ಉಳಿಯುತ್ತದೆ. ಯಶಸ್ವಿ ಪಾವತಿ ಲೆಡ್ಜರ್ ಅನ್ನು ಕ್ಲೈಮ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ರಿಸರ್ವೇಶನ್ ಅನ್ನು ಅಟಾಮಿಕ್ ಆಗಿ ತೆಗೆದುಹಾಕುತ್ತದೆ. ಡೇಟಾಬೇಸ್ ಲಾಕ್ಗಳು ಪಾವತಿ ಫಾರ್ಮ್ ಅನ್ನು ನೋಡಿಕೊಳ್ಳಬೇಕಾಗಿಲ್ಲ. ಅವರ ಕಾಂಪೋಸಿಟ್ ಪ್ರೈಮರಿ ಕೀ ಅಂಗಡಿ, ಐಟಂ, ಗುಂಪು, ನಂತರ ಯುನಿಟ್ ಗುರುತಿನೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ಲುಕಪ್ ಅನ್ನು ಹೊಂದಿಸುವುದು ಅವರ ಮೂಲಮಾದರಿಯಲ್ಲಿ ಸೂಚ್ಯಂಕ ಲಾಕಿಂಗ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಿದೆ. ಅವರು ಪೂಲ್ ಮರುಪೂರಣವನ್ನು ನಿರ್ಬಂಧಿಸಿದ ಗ್ಯಾಪ್ ಲಾಕ್ಗಳನ್ನು ತಪ್ಪಿಸಲು read committed ಅನ್ನು ಸಹ ಬಳಸುತ್ತಾರೆ, ಮತ್ತು ವೃತ್ತಾಕಾರದ ಕಾಯುವಿಕೆಗಳನ್ನು ತಡೆಯಲು ಸ್ಥಿರ ಟೇಬಲ್ ಕ್ರಮವನ್ನು ಬಳಸುತ್ತಾರೆ.
1:57 ಪ್ರಕಟಿತ ಉದಾಹರಣೆಯು ಮುಕ್ತಾಯದ ಸಮಯವನ್ನು ದಾಖಲಿಸುತ್ತದೆ. ತ್ಯಜಿಸಿದ ಪಾವತಿಗಳಿಗೆ ಅಂತಿಮವಾಗಿ ಸ್ಟಾಕ್ ಬಿಡುಗಡೆ ಮಾಡಬೇಕಾಗುತ್ತದೆ, ಇಲ್ಲದಿದ್ದರೆ ಶಾಪಿಂಗ್ ಕಾರ್ಟ್ ಭೂಮಾಲೀಕನಾಗುತ್ತದೆ. Shopify ನ ಪೋಸ್ಟ್ ಆ ಸ್ವಚ್ಛಗೊಳಿಸುವ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಅನಿರ್ದಿಷ್ಟವಾಗಿ ಬಿಡುತ್ತದೆ, ಆದ್ದರಿಂದ ಈ ರೇಖಾಚಿತ್ರವು ಜೀವನಚಕ್ರದ ಅವಶ್ಯಕತೆಯನ್ನು ತೋರಿಸುತ್ತದೆ. ಇಲ್ಲಿ ಕ್ಯಾಚ್ ಇದೆ. Skip locked ಲಾಕ್ ಮಾಡಲಾದ ರೋಗಳನ್ನು ಹೊರತುಪಡಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಮ್ಯಾನುಯಲ್ ಅದರ ಫಲಿತಾಂಶವನ್ನು ಅಸಮಂಜಸ ನೋಟ ಎಂದು ಕರೆಯುತ್ತದೆ.
SKIP LOCKED ಏನನ್ನು ಹೊರತುಪಡಿಸುತ್ತದೆ?
2:14 ಇದು ಸಂಪೂರ್ಣ ಸ್ಟಾಕ್ ಎಣಿಕೆ ಅಥವಾ ನ್ಯಾಯಯುತ ಸರದಿ-ತೆಗೆದುಕೊಳ್ಳುವಿಕೆಯನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ. ಲಭ್ಯತೆಯ ನಿರ್ಧಾರ ಮತ್ತು ಮರುಪೂರಣ ನಿಯಮಗಳನ್ನು ಅದರ ಸುತ್ತಲೂ ಇರಿಸಿ. ಮತ್ತು ಆ ಮಿತಿ?
ನಿಜವಾದ ಮಿತಿ ಎಲ್ಲಿದೆ?
2:26 ಇತರ ಚೆಕ್ಔಟ್ ಕೋಡ್ ಡೇಟಾಬೇಸ್ ಸಂಪರ್ಕಗಳನ್ನು ಹೆಚ್ಚು ಕಾಲ ಹಿಡಿದಿಟ್ಟುಕೊಂಡಿತ್ತು. Shopify ಕರೆ ಮಾಡುವವರನ್ನು ಟ್ಯಾಗ್ ಮಾಡಿದೆ ಮತ್ತು ಸಂಪರ್ಕ ಹೋಲ್ಡ್ ಸಮಯವನ್ನು ಅಳೆಯಿತು, ನಂತರ ಚೆಕ್ಔಟ್ ಪಾತ್ ಅನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿತು ಮತ್ತು ಥ್ರೆಡ್ ಏಕಕಾಲೀನತೆಯನ್ನು ಪುನರ್ಪರಿಶೀಲಿಸಿತು. ವೇಗದ ಪ್ರಶ್ನೆಗಳು ಇನ್ನೂ ಪ್ರಶ್ನೆಯ ಹೊರಗೆ ಸಾಲುಗಟ್ಟಬಹುದು. ಅವರು ಎರಡೂ ಸಿಸ್ಟಮ್ಗಳನ್ನು Redis ಅಧಿಕೃತವಾಗಿ ಶಾಡೋ-ರೈಟ್ ಮಾಡಿದರು,
ನಾನು ಈ ವಿನ್ಯಾಸವನ್ನು ಏಕೆ SHIP ಮಾಡಬೇಕು?
2:38 ಫಲಿತಾಂಶಗಳನ್ನು ಹೋಲಿಸಿದರು, ನಂತರ ಕಿಲ್ ಸ್ವಿಚ್ನೊಂದಿಗೆ ಕ್ರಮೇಣ ಬದಲಾಯಿಸಿದರು. ನನ್ನ ತೀರ್ಪು SHIP IT. ನಾನು ಹಂಚಿಕೊಂಡ ಟ್ರಾನ್ಸಾಕ್ಷನ್ ಬೌಂಡರಿ ಮತ್ತು ಆ ರೋಲ್ಬ್ಯಾಕ್ ಮಾಡಬಹುದಾದ ರೋಲ್ಔಟ್ ಅನ್ನು SHIP ಮಾಡುತ್ತೇನೆ, ಸಂಪೂರ್ಣ ಚೆಕ್ಔಟ್ ಪಾತ್ ಅನ್ನು ಇನ್ಸ್ಟ್ರುಮೆಂಟ್ ಮಾಡಲಾಗಿದೆ. ಇದರ ಬಗ್ಗೆ ಪ್ರಶ್ನೆ ಇದೆಯೇ? ಕಾಮೆಂಟ್ಗಳಲ್ಲಿ ಹಾಕಿ. ಮತ್ತು ಇದು ಇಂದಿನ ಡಿಫ್. ನಾನು Axrisi ನಿಂದ Niko.
2:54 ಜವಾಬ್ದಾರಿಯುತವಾಗಿ ವಿಲೀನಗೊಳಿಸಿ. Merge responsibly.
ಮೂಲಗಳು
- We replaced Redis with MySQL for inventory reservations—and it scaledShopify Engineering — Emilie Noel
- Simplified reservation SQL embedded in Shopify's articleShopify Engineering / CourtneySymons on GitHub Gist
- MySQL 8.0 — Locking ReadsOracle / MySQL Reference Manual
- MySQL 8.0 — Transaction Isolation LevelsOracle / MySQL Reference Manual
- What Is Shopify and How Does It Work?Shopify
- Redis quick startsRedis documentation
- What is MySQL?Oracle / MySQL Reference Manual



