ಪೋಲಾರ್ಸ್ 2.0: ಜಾಯಿನ್ಗಳು ಇನ್ನು ಮುಂದೆ ತಮ್ಮ ಸಾಲಿನ ಕ್ರಮವನ್ನು ಏಕೆ ಉಳಿಸಿಕೊಳ್ಳುವುದಿಲ್ಲ
ಪೋಲಾರ್ಸ್ 2.0 ಡೀಫಾಲ್ಟ್ ಆಗಿ ಸ್ಟ್ರೀಮಿಂಗ್ ಎಂಜಿನ್ನಲ್ಲಿ ಸಂಗ್ರಹವನ್ನು ನಡೆಸುತ್ತದೆ.
ಪೋಲಾರ್ಸ್ 2.0 ಡೀಫಾಲ್ಟ್ ಆಗಿ ಸ್ಟ್ರೀಮಿಂಗ್ ಎಂಜಿನ್ನಲ್ಲಿ ಸಂಗ್ರಹವನ್ನು ನಡೆಸುತ್ತದೆ. ಜಾಯಿನ್, group_by ಮತ್ತು unpivot ಗಾಗಿ, ನೀವು maintain_order ಅನ್ನು ಹೊಂದಿಸದ ಹೊರತು ಅಥವಾ ಸ್ಪಷ್ಟವಾಗಿ ವಿಂಗಡಿಸದ ಹೊರತು ಬಿಡುಗಡೆಯು ಇನ್ನು ಮುಂದೆ ಇನ್ಪುಟ್ ಸಾಲಿನ ಕ್ರಮವನ್ನು ಖಾತರಿಪಡಿಸುವುದಿಲ್ಲ. ನಮ್ಮ ಪೋಲಾರ್ಸ್ 2.0.0 ರನ್ನಲ್ಲಿ, 2,000,000-ಸಾಲಿನ ಆಂತರಿಕ ಜಾಯಿನ್ ಡೀಫಾಲ್ಟ್ ಆಗಿ ಇನ್ಪುಟ್ ಕ್ರಮದಿಂದ ಹೊರಗಿನ ಸಾಲುಗಳನ್ನು ಹಿಂದಿರುಗಿಸಿತು ಮತ್ತು maintain_order ಅನ್ನು ಹೊಂದಿಸಿದಾಗ ಕ್ರಮವನ್ನು ಉಳಿಸಿಕೊಂಡಿತು. ಬಿಡುಗಡೆಯು ಔಟ್-ಆಫ್-ಕೋರ್ ಸ್ಪಿಲ್ಲಿಂಗ್ ಅನ್ನು ಸಹ ಆನ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಬೆಂಚ್ಮಾರ್ಕ್ ಹಕ್ಕುಗಳನ್ನು ಮಾರಾಟಗಾರರ ಸ್ವಂತ ಮಾಡುತ್ತದೆ.
ಲಿಖಿತ ಆವೃತ್ತಿಯನ್ನು ಓದಿ (ಇಂಗ್ಲಿಷ್) ↗
ಈ ವೀಡಿಯೊ ಏನನ್ನು ಒಳಗೊಂಡಿದೆ
- ಲೇಜಿ ಪ್ರಶ್ನೆಯ ಮೇಲೆ collect() ಅನ್ನು ಕರೆಯುವುದರಿಂದ ಈಗ ಡೀಫಾಲ್ಟ್ ಆಗಿ ಸ್ಟ್ರೀಮಿಂಗ್ ಎಂಜಿನ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಇದು ಜಾಯಿನ್, group_by ಮತ್ತು unpivot ಗಾಗಿ ಸಾಲಿನ ಕ್ರಮವನ್ನು ಖಾತರಿಪಡಿಸುವುದಿಲ್ಲ.
- ವಲಸೆ ಮಾರ್ಗದರ್ಶಿ ಹೇಳುತ್ತದೆ, 2.0 ಪೂರ್ವದ ಕ್ರಮ ಇನ್ನು ಮುಂದೆ ಇಲ್ಲ ಮತ್ತು ಅದನ್ನು ಖಾತರಿಪಡಿಸಲಾಗುವುದಿಲ್ಲ; ನೀವು ಅದರ ಮೇಲೆ ಅವಲಂಬಿತರಾಗಿದ್ದರೆ ಸ್ಪಷ್ಟವಾದ ವಿಂಗಡಣೆಯನ್ನು ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.
- ನಮ್ಮ ರನ್ನಲ್ಲಿ, ಡೀಫಾಲ್ಟ್ ಆಂತರಿಕ ಜಾಯಿನ್ ಇನ್ಪುಟ್ ಆರ್ಡರ್ ಅನ್ನು ಸುಳ್ಳು ಎಂದು ಹಿಂದಿರುಗಿಸಿತು; ಜಾಯಿನ್ನಲ್ಲಿ maintain_order="left_right" ಅನ್ನು ನಿಜ ಎಂದು ಹಿಂದಿರುಗಿಸಿತು. ಒಂದು ಯಂತ್ರ, ಒಂದು ರನ್, ಒಂದು ಜಾಯಿನ್ ಆಕಾರ.
- ಔಟ್-ಆಫ್-ಕೋರ್ ಸ್ಪಿಲ್ಲಿಂಗ್ ಡೀಫಾಲ್ಟ್ ಆಗಿ ಆನ್ ಆಗಿದೆ: ಇದು RAM ನ ಸುಮಾರು 80% ರಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, 64 GB ಡೀಫಾಲ್ಟ್ ಡಿಸ್ಕ್ ಬಜೆಟ್ನೊಂದಿಗೆ. ಔಟ್-ಆಫ್-ಕೋರ್ ಜಾಯಿನ್ ಮತ್ತು group_by ರೋಡ್ಮ್ಯಾಪ್ನಲ್ಲಿವೆ.
- collect_schema() ಯಾವುದೇ ಡೇಟಾವನ್ನು ಓದುವ ಮೊದಲು ಕಾಣೆಯಾದ ಕಾಲಮ್ ಅನ್ನು ಹಿಡಿಯುತ್ತದೆ, ಆದರೆ ಒಂದು ಮೌಲ್ಯದಲ್ಲಿ ವಿಫಲಗೊಳ್ಳುವ ಕಾಸ್ಟ್ collect() ನಲ್ಲಿ ಮಾತ್ರ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ.
- TPC-H ಮತ್ತು TPC-DS ಹೋಲಿಕೆಯು ಮಾರಾಟಗಾರರ ಸ್ವಂತ ಪಡೆದ ಡೇಟಾದ ಮೇಲಿನ ರನ್ ಆಗಿದೆ, ಮತ್ತು ಅದರ ಅಡಿಟಿಪ್ಪಣಿ ಹೇಳುತ್ತದೆ, ಫಲಿತಾಂಶಗಳು ಅಧಿಕೃತ ಬೆಂಚ್ಮಾರ್ಕ್ಗಳಿಗೆ ಹೋಲಿಸಲಾಗುವುದಿಲ್ಲ.
ಅನುವಾದಿತ ಪ್ರತಿಲೇಖನ
ಮೂಲ ಇಂಗ್ಲಿಷ್ ನಿರೂಪಣೆಯಿಂದ ಅನುವಾದಿಸಲಾಗಿದೆ. ಲಭ್ಯವಿರುವ ಆಡಿಯೋ ಮತ್ತು ಶೀರ್ಷಿಕೆಗಳನ್ನು YouTube ನಿಯಂತ್ರಿಸುತ್ತದೆ.
ಡೀಫಾಲ್ಟ್ ಆದೇಶ ಏಕೆ ಬದಲಾಯಿತು?
0:00 ನೀವು ಜಾಯಿನ್ ನಿಮ್ಮ ಸಾಲುಗಳನ್ನು ನೀವು ಬರೆದ ಕ್ರಮದಲ್ಲಿ ಹಿಂತಿರುಗಿಸುತ್ತದೆ ಎಂದು ಭಾವಿಸುತ್ತೀರಿ. ಪೋಲಾರ್ಸ್ 2.0 ಡೀಫಾಲ್ಟ್ ಆಗಿ ಆ ಉದ್ದೇಶಕ್ಕಾಗಿ ಅದನ್ನು ಭರವಸೆ ನೀಡುವುದನ್ನು ನಿಲ್ಲಿಸಿತು. ಈ ವೀಡಿಯೊದಲ್ಲಿ: ಡೀಫಾಲ್ಟ್ ಏಕೆ ಬದಲಾಯಿತು? ಅದು ಏನು ಖರೀದಿಸಿತು? ಮತ್ತು ನಿಮ್ಮ ಯಾವ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಮೊದಲು ಮುರಿಯುತ್ತವೆ? ಇದು ದಿ ಡೈಲಿ ಡಿಫ್, ಹುಡ್ ಅಡಿಯಲ್ಲಿ. ಪೋಲಾರ್ಸ್ ಒಂದು ತೆರೆದ ಮೂಲ ಡೇಟಾಫ್ರೇಮ್ ಲೈಬ್ರರಿಯಾಗಿದೆ: ನೀವು ಪೈಥಾನ್ನಿಂದ ಕರೆಯುವ ಟೇಬಲ್ ಎಂಜಿನ್,
0:20 ಅದರ ಕೋರ್ ಅನ್ನು ರಸ್ಟ್ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ. ಇದು MIT ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ಉಚಿತವಾಗಿದೆ, ಮತ್ತು ನೀವು ಅದನ್ನು pip install polars ನೊಂದಿಗೆ ಸ್ಥಾಪಿಸುತ್ತೀರಿ. ಮೊದಲು ಒಂದು ವಿವರ. ಹಳೆಯ ಆದೇಶವನ್ನು ಮರಳಿ ತರುವ ಸ್ವಿಚ್ ಜಾಯಿನ್ ಗೆ ಒಂದು ಆರ್ಗ್ಯುಮೆಂಟ್ ಆಗಿದೆ. ನಾನು ಕೊನೆಯಲ್ಲಿ ಅದಕ್ಕೆ ಹಿಂತಿರುಗುತ್ತೇನೆ. 2.0 ರಿಂದ, ಸಂಗ್ರಹವು ಡೀಫಾಲ್ಟ್ ಆಗಿ ಸ್ಟ್ರೀಮಿಂಗ್ ಎಂಜಿನ್ ಅನ್ನು ನಡೆಸುತ್ತದೆ. ಸ್ಟ್ರೀಮಿಂಗ್ ಪ್ರಶ್ನೆಯನ್ನು ಸಮಾನಾಂತರವಾಗಿ ಚಲಿಸುವ ತುಣುಕುಗಳಾಗಿ ವಿಭಜಿಸುತ್ತದೆ, ಮತ್ತು ತುಣುಕುಗಳು ಅವು ಮುಗಿದಾಗ ಮುಗಿಯುತ್ತವೆ.
0:42 ಜಾಯಿನ್, group by ಮತ್ತು unpivot ಗಾಗಿ, ಬಿಡುಗಡೆಯು ಆದೇಶವನ್ನು ಭರವಸೆ ನೀಡುವುದಿಲ್ಲ. ಯಾರು ಮೊದಲು ಹೊಡೆತ ತಿನ್ನುತ್ತಾರೆ? ಸಾಲಾಗಿ ಸಾಲು, ಉಳಿಸಿದ ಫೈಲ್ಗೆ ಔಟ್ಪುಟ್ ಅನ್ನು ಹೋಲಿಸುವವರು. ಆ ಪರೀಕ್ಷೆ ನಿಮ್ಮ ಲ್ಯಾಪ್ಟಾಪ್ನಲ್ಲಿ ಪಾಸ್ ಆಗಬಹುದು ಮತ್ತು ಬೇರೆ ಯಂತ್ರದಲ್ಲಿ ವಿಫಲಗೊಳ್ಳಬಹುದು. ಮುಂದೆ, ವಲಸೆ ಮಾರ್ಗದರ್ಶಿ.
ವಲಸೆ ಮಾರ್ಗದರ್ಶಿ ಏನು ಭರವಸೆ ನೀಡುತ್ತದೆ?
0:57 ಮೇಲೆ ತೋರಿಸಿರುವ ನಿಖರವಾದ ಸಾಲಿನ ಕ್ರಮವನ್ನು ಖಾತರಿಪಡಿಸಲಾಗುವುದಿಲ್ಲ ಎಂದು ಅದು ಹೇಳುತ್ತದೆ. ಆದ್ದರಿಂದ ನೀವು ಆದೇಶದ ಮೇಲೆ ಅವಲಂಬಿತರಾಗಿದ್ದರೆ, ಸ್ಪಷ್ಟವಾಗಿ ವಿಂಗಡಿಸಿ. ಔಟ್-ಆಫ್-ಕೋರ್ ಕೂಡ ಡೀಫಾಲ್ಟ್ ಆಗಿ ಆನ್ ಆಗಿದೆ. ಇದು RAM ನ ಸುಮಾರು ಎಂಬತ್ತರಷ್ಟು ಪ್ರತಿಶತದಲ್ಲಿ ಡಿಸ್ಕ್ಗೆ ಸ್ಪಿಲ್ಲಿಂಗ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ, ಅರವತ್ತನಾಲ್ಕು ಗಿಗಾಬೈಟ್ ಬಜೆಟ್ನೊಂದಿಗೆ. ವಿಂಗಡಣೆ, ವಿಂಡೋ ಕಾರ್ಯಗಳು ಮತ್ತು ಅನೇಕ ಅಭಿವ್ಯಕ್ತಿಗಳು ಈಗ ಸ್ಪಿಲ್ ಆಗಬಹುದು. ಜಾಯಿನ್ಗಳು ಮತ್ತು group-bys ಬರುತ್ತಿವೆ.
ಬೆಂಚ್ಮಾರ್ಕ್ ನ್ಯಾಯಸಮ್ಮತವಾದ ಹೋರಾಟವೇ?
1:17 TPC-H ಮತ್ತು TPC-DS ಬೆಂಚ್ಮಾರ್ಕ್ಗಳಲ್ಲಿ DataFusion ಮತ್ತು DuckDB ಅನ್ನು Polars ಸೋಲಿಸುತ್ತದೆ ಎಂದು Polars ಹೇಳುತ್ತದೆ. ಅಂಕಿಅಂಶಗಳು ತಮ್ಮದೇ ಆದ ರನ್ಗಳಿಂದ ಬಂದವು, ಪಡೆದ ಡೇಟಾದ ಮೇಲೆ, ಮತ್ತು ಅವುಗಳ ಅಡಿಟಿಪ್ಪಣಿ ಹೇಳುತ್ತದೆ, ಅವು ಅಧಿಕೃತ ಫಲಿತಾಂಶಗಳಿಗೆ ಹೋಲಿಸಲಾಗುವುದಿಲ್ಲ. ಅವರ ಸ್ವಂತ ಸಂಖ್ಯೆಗಳು ಹೇಳುತ್ತವೆ, TPC-H ನಲ್ಲಿ ಹದಿನಾರು ಕೋರ್ಗಳಿಂದ ನೂರ ತೊಂಬತ್ತೆರಡು ಕೋರ್ಗಳಿಗೆ Polars ಸುಮಾರು ಮೂರು ಪಾಯಿಂಟ್ ಎಂಟು ಪಟ್ಟು ವೇಗವಾಗಿ ಪಡೆಯುತ್ತದೆ. ಅವರು ದೊಡ್ಡ ಯಂತ್ರದ ಹೆಚ್ಚುವರಿ ಥ್ರೆಡ್ಗಳು ಸಣ್ಣ ಪ್ರಶ್ನೆಗಳನ್ನು ನಿಧಾನಗೊಳಿಸುತ್ತವೆ ಎಂದು ಸಹ ಹೇಳುತ್ತಾರೆ. ನಾವು Polars 2.0.0 ನಲ್ಲಿ ಅದೇ ಜಾಯಿನ್ ಅನ್ನು ಎರಡು ಬಾರಿ ನಡೆಸಿದ್ದೇವೆ.
ನಾವು ಅದನ್ನು ನಡೆಸಿದಾಗ ಏನು ನೋಡುತ್ತೇವೆ?
1:41 ಡೀಫಾಲ್ಟ್ ರನ್ ಸಾಲುಗಳನ್ನು ಷಫಲ್ ಮಾಡುತ್ತದೆ. ಫ್ಲಾಗ್ನೊಂದಿಗೆ, ಇನ್ಪುಟ್ ಕ್ರಮ ಉಳಿಯುತ್ತದೆ. ಪರೀಕ್ಷೆಗೆ ಆಹಾರ ನೀಡುವ ಜಾಯಿನ್ಗಳನ್ನು ಹುಡುಕಿ. ಅದರ ನಂತರ ವಿಂಗಡಣೆ ಇಲ್ಲದ ಯಾವುದೇ ಜಾಯಿನ್ ನೀವು ಎಂದಿಗೂ ಮಾಡದ ಸಾಲಿನ ಕ್ರಮದ ನಿರ್ಧಾರವಾಗಿದೆ. Polars 2.0 ಪ್ರಕಾರಗಳ ಬಗ್ಗೆ ಕಟ್ಟುನಿಟ್ಟಾಗಿದೆ. ಸ್ಕೀಮಾ ಚೆಕ್ ಯಾವುದೇ ಡೇಟಾವನ್ನು ಓದುವ ಮೊದಲು ಕಾಣೆಯಾದ ಕಾಲಮ್ ಅನ್ನು ಹಿಡಿಯುತ್ತದೆ.
ಕಠಿಣವಾಗಿರುವುದು ಮುಂಚೆಯೇ ಎಂದರ್ಥವೇ?
1:58 ಒಂದು ಸಾಲಿನಲ್ಲಿ ವಿಫಲಗೊಳ್ಳುವ ಕಾಸ್ಟ್ ಅನ್ನು ಅದು ಹಿಡಿಯಲು ಸಾಧ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಆ ದೋಷವು ಡೇಟಾಕ್ಕಾಗಿ ಕಾಯುತ್ತದೆ. ಈಗ ನಾನು ತೆರೆದ ಲೂಪ್. ಸ್ವಿಚ್ ಜಾಯಿನ್ ಮೇಲೆ ವಾಸಿಸುತ್ತದೆ.
ನಾನು ಹಳೆಯ ಆದೇಶವನ್ನು ಹೇಗೆ ಮರಳಿ ಪಡೆಯುವುದು?
2:08 ಜಾಯಿನ್ ಮೇಲೆ maintain order ಅನ್ನು ಹೊಂದಿಸಿ, ಅಥವಾ ಅದರ ನಂತರ ಒಂದು ವಿಂಗಡಣೆಯನ್ನು ಸೇರಿಸಿ. ಮಾರ್ಗದರ್ಶಿ ವಿಂಗಡಣೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ. ನಮ್ಮ ರನ್ನಲ್ಲಿ ಜಾಯಿನ್ ಫ್ಲಾಗ್ ಕ್ರಮವನ್ನು ಉಳಿಸಿಕೊಂಡಿತು, ಎಡಭಾಗದ ಕ್ರಮವನ್ನು ಎಡ, ಬಲ ಎಂದು ಉಳಿಸಿಕೊಳ್ಳಲಾಯಿತು. ತೀರ್ಪು, ಹುಡ್ ಅಡಿಯಲ್ಲಿ: ಪರಿಶೀಲಿಸುವ ಅಗತ್ಯವಿದೆ. ಅಪ್ಗ್ರೇಡ್ ಮಾಡುವ ಮೊದಲು ನಾನು ಪ್ರತಿ ಜಾಯಿನ್ ಅನ್ನು ಪರಿಶೀಲಿಸುತ್ತೇನೆ.
ತೀರ್ಪು ಏನು?
2:22 ಇದರ ಬಗ್ಗೆ ಪ್ರಶ್ನೆ ಇದೆಯೇ? ಅದನ್ನು ಕಾಮೆಂಟ್ಗಳಲ್ಲಿ ಹಾಕಿ. ಮತ್ತು ಅದು ಇಂದಿನ ಡಿಫ್. ನಾನು ಆಕ್ಸ್ರಿಸಿಯಿಂದ ನಿಕೋ. ಜವಾಬ್ದಾರಿಯುತವಾಗಿ ವಿಲೀನಗೊಳಿಸಿ. ಪೋಲಾರ್ಸ್ 2.0 ಪ್ರಕಾರಗಳ ಬಗ್ಗೆ ಕಟ್ಟುನಿಟ್ಟಾಗಿದೆ.
ಮೂಲಗಳು
- Release of Polars 2.0Polars (pola.rs)
- Polars 2.0 upgrade guidePolars documentation
- Polars homepagePolars (pola.rs)
- polars-2.0-benchmark repositoryPolars on GitHub
- Release of Polars 2.0 (Hacker News discussion)Hacker News



