ಕೋರ್ಸ್ ಪ್ರಾರಂಭದ ಮುನ್ನಾದಿನದಂದು ಲೇಖನದ ಅನುವಾದವನ್ನು ಸಿದ್ಧಪಡಿಸಲಾಗಿದೆ
ಮೂಲ ಕ್ಷಣಗಳು:
- ಮೊಂಗೋಡಿಬಿಯಲ್ಲಿ ಐಚ್ಛಿಕವಾಗಿದ್ದರೂ ಸ್ಕೀಮಾವನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವುದು ಬಹಳ ಮುಖ್ಯ.
- ಅಂತೆಯೇ, ಸೂಚ್ಯಂಕಗಳು ನಿಮ್ಮ ಸ್ಕೀಮಾ ಮತ್ತು ಪ್ರವೇಶ ಮಾದರಿಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗಬೇಕು.
- ದೊಡ್ಡ ವಸ್ತುಗಳು ಮತ್ತು ದೊಡ್ಡ ಸರಣಿಗಳನ್ನು ಬಳಸುವುದನ್ನು ತಪ್ಪಿಸಿ.
- MongoDB ಸೆಟ್ಟಿಂಗ್ಗಳೊಂದಿಗೆ ಜಾಗರೂಕರಾಗಿರಿ, ವಿಶೇಷವಾಗಿ ಭದ್ರತೆ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹತೆಗೆ ಬಂದಾಗ.
- MongoDB ಪ್ರಶ್ನೆ ಆಪ್ಟಿಮೈಜರ್ ಅನ್ನು ಹೊಂದಿಲ್ಲ, ಆದ್ದರಿಂದ ನೀವು ಪ್ರಶ್ನೆ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸುವಾಗ ಜಾಗರೂಕರಾಗಿರಬೇಕು.
ನಾನು ಬಹಳ ಸಮಯದಿಂದ ಡೇಟಾಬೇಸ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದೇನೆ, ಆದರೆ ಮೊಂಗೊಡಿಬಿಯನ್ನು ಇತ್ತೀಚೆಗೆ ಕಂಡುಹಿಡಿದಿದ್ದೇನೆ. ನಾನು ಅದರೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಪ್ರಾರಂಭಿಸುವ ಮೊದಲು ನಾನು ತಿಳಿದುಕೊಳ್ಳಲು ಬಯಸುವ ಕೆಲವು ವಿಷಯಗಳಿವೆ. ಒಬ್ಬ ವ್ಯಕ್ತಿಯು ಈಗಾಗಲೇ ನಿರ್ದಿಷ್ಟ ಕ್ಷೇತ್ರದಲ್ಲಿ ಅನುಭವವನ್ನು ಹೊಂದಿರುವಾಗ, ಡೇಟಾಬೇಸ್ಗಳು ಯಾವುವು ಮತ್ತು ಅವರು ಏನು ಮಾಡುತ್ತಾರೆ ಎಂಬುದರ ಕುರಿತು ಅವರು ಪೂರ್ವಭಾವಿ ಕಲ್ಪನೆಗಳನ್ನು ಹೊಂದಿರುತ್ತಾರೆ. ಇತರರಿಗೆ ಸುಲಭವಾಗಿ ಅರ್ಥವಾಗುವಂತೆ ಮಾಡುವ ಭರವಸೆಯಲ್ಲಿ, ನಾನು ಸಾಮಾನ್ಯ ತಪ್ಪುಗಳ ಪಟ್ಟಿಯನ್ನು ಪ್ರಸ್ತುತಪಡಿಸುತ್ತೇನೆ.
ದೃಢೀಕರಣವಿಲ್ಲದೆ MongoDB ಸರ್ವರ್ ಅನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ
ದುರದೃಷ್ಟವಶಾತ್, MongoDB ಅನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ದೃಢೀಕರಣವಿಲ್ಲದೆ ಸ್ಥಾಪಿಸಲಾಗಿದೆ. ಸ್ಥಳೀಯವಾಗಿ ಪ್ರವೇಶಿಸಿದ ಕಾರ್ಯಸ್ಥಳಕ್ಕೆ, ಈ ಅಭ್ಯಾಸವು ಸಾಮಾನ್ಯವಾಗಿದೆ. ಆದರೆ ಮೊಂಗೊಡಿಬಿ ಬಹು-ಬಳಕೆದಾರ ವ್ಯವಸ್ಥೆಯಾಗಿದ್ದು ಅದು ದೊಡ್ಡ ಪ್ರಮಾಣದ ಮೆಮೊರಿಯನ್ನು ಬಳಸಲು ಇಷ್ಟಪಡುತ್ತದೆ, ನೀವು ಅದನ್ನು ಅಭಿವೃದ್ಧಿಗೆ ಮಾತ್ರ ಬಳಸುತ್ತಿದ್ದರೂ ಸಹ, ಸಾಧ್ಯವಾದಷ್ಟು RAM ಹೊಂದಿರುವ ಸರ್ವರ್ನಲ್ಲಿ ಇರಿಸಿದರೆ ಅದು ಉತ್ತಮವಾಗಿರುತ್ತದೆ. ಡೀಫಾಲ್ಟ್ ಪೋರ್ಟ್ ಮೂಲಕ ಸರ್ವರ್ನಲ್ಲಿ ಸ್ಥಾಪಿಸುವುದು ಸಮಸ್ಯಾತ್ಮಕವಾಗಿರುತ್ತದೆ, ವಿಶೇಷವಾಗಿ ವಿನಂತಿಯಲ್ಲಿ ಯಾವುದೇ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದರೆ (ಉದಾಹರಣೆಗೆ, $where
ಒಂದು ಕಲ್ಪನೆಯಂತೆ
ಹಲವಾರು ದೃಢೀಕರಣ ವಿಧಾನಗಳಿವೆ, ಆದರೆ ಬಳಕೆದಾರ ID/ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಹೊಂದಿಸುವುದು ಸುಲಭವಾಗಿದೆ. ಅಲಂಕಾರಿಕ ದೃಢೀಕರಣದ ಆಧಾರದ ಮೇಲೆ ನೀವು ಯೋಚಿಸುವಾಗ ಈ ಕಲ್ಪನೆಯನ್ನು ಬಳಸಿ
ನಿಮ್ಮ ದಾಳಿಯ ಮೇಲ್ಮೈಯನ್ನು MongoDB ಗೆ ಬಂಧಿಸಲು ಮರೆಯಬೇಡಿ
,
ಅಥವಾ
. ಡೇಟಾ ಫೈಲ್ಗಳನ್ನು ಪ್ರಮಾಣಿತ MongoDB ಯಲ್ಲಿ ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಲಾಗಿಲ್ಲವಾದ್ದರಿಂದ, MongoDB ಅನ್ನು ಇದರೊಂದಿಗೆ ಚಲಾಯಿಸಲು ಇದು ಅರ್ಥಪೂರ್ಣವಾಗಿದೆ
ಸರ್ಕ್ಯೂಟ್ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವಾಗ ದೋಷ
MongoDB ಸ್ಕೀಮಾವನ್ನು ಬಳಸುವುದಿಲ್ಲ. ಆದರೆ ಯೋಜನೆ ಅಗತ್ಯವಿಲ್ಲ ಎಂದು ಇದರ ಅರ್ಥವಲ್ಲ. ನೀವು ಯಾವುದೇ ಸ್ಥಿರವಾದ ಮಾದರಿಯಿಲ್ಲದೆ ಡಾಕ್ಯುಮೆಂಟ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಬಯಸಿದರೆ, ಅವುಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಮತ್ತು ಸುಲಭವಾಗಿ ಸಂಗ್ರಹಿಸಬಹುದು, ಆದರೆ ನಂತರ ಅವುಗಳನ್ನು ಹಿಂಪಡೆಯುವುದು ಕಷ್ಟಕರವಾಗಿರುತ್ತದೆ.
ಕ್ಲಾಸಿಕ್ ಲೇಖನ "
ವಿಂಗಡಣೆಯ ಕ್ರಮವನ್ನು ಮರೆಯಬೇಡಿ
ವಿಂಗಡಣೆಯ ಕ್ರಮವನ್ನು ಮರೆತುಬಿಡುವುದು ಯಾವುದೇ ಇತರ ತಪ್ಪಾದ ಕಾನ್ಫಿಗರೇಶನ್ಗಿಂತ ಹೆಚ್ಚು ನಿರಾಶೆಯನ್ನು ಉಂಟುಮಾಡಬಹುದು ಮತ್ತು ಹೆಚ್ಚಿನ ಸಮಯವನ್ನು ವ್ಯರ್ಥ ಮಾಡಬಹುದು. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ MongoBD ಬಳಸುತ್ತದೆ
ದೊಡ್ಡ ದಾಖಲೆಗಳೊಂದಿಗೆ ಸಂಗ್ರಹಣೆಗಳನ್ನು ರಚಿಸಿ
MongoDB ಸಂಗ್ರಹಣೆಗಳಲ್ಲಿ 16MB ವರೆಗಿನ ದೊಡ್ಡ ದಾಖಲೆಗಳನ್ನು ಹೋಸ್ಟ್ ಮಾಡಲು ಸಂತೋಷವಾಗಿದೆ ಮತ್ತು
ದೊಡ್ಡ ಸರಣಿಗಳೊಂದಿಗೆ ದಾಖಲೆಗಳನ್ನು ರಚಿಸುವುದು
ದಾಖಲೆಗಳು ಅರೇಗಳನ್ನು ಒಳಗೊಂಡಿರಬಹುದು. ರಚನೆಯಲ್ಲಿನ ಅಂಶಗಳ ಸಂಖ್ಯೆಯು ನಾಲ್ಕು-ಅಂಕಿಯ ಸಂಖ್ಯೆಯಿಂದ ದೂರವಿದ್ದರೆ ಅದು ಉತ್ತಮವಾಗಿದೆ. ಒಂದು ಶ್ರೇಣಿಗೆ ಅಂಶಗಳನ್ನು ಆಗಾಗ್ಗೆ ಸೇರಿಸಿದರೆ, ಅದು ಅದನ್ನು ಒಳಗೊಂಡಿರುವ ಡಾಕ್ಯುಮೆಂಟ್ ಅನ್ನು ಮೀರಿಸುತ್ತದೆ ಮತ್ತು ಅದು ಬೇಕಾಗುತ್ತದೆ
MongoDB ಎಂಬುದೊಂದು ಇದೆ
ಅರೇ ಇಂಡೆಕ್ಸಿಂಗ್ ಇಲ್ಲದೆಯೇ ನೀವು ಮಾಡಬಹುದು ಎಂದು ನೀವು ಭಾವಿಸಬಹುದು. ದುರದೃಷ್ಟವಶಾತ್, ಸೂಚ್ಯಂಕಗಳ ಕೊರತೆಯು ನಿಮಗೆ ಇತರ ಸಮಸ್ಯೆಗಳನ್ನು ಉಂಟುಮಾಡಬಹುದು. ಡಾಕ್ಯುಮೆಂಟ್ಗಳನ್ನು ಪ್ರಾರಂಭದಿಂದ ಅಂತ್ಯದವರೆಗೆ ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗಿರುವುದರಿಂದ, ರಚನೆಯ ಕೊನೆಯಲ್ಲಿ ಅಂಶಗಳಿಗಾಗಿ ಹುಡುಕಲು ಹೆಚ್ಚು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಅಂತಹ ಡಾಕ್ಯುಮೆಂಟ್ಗೆ ಸಂಬಂಧಿಸಿದ ಹೆಚ್ಚಿನ ಕಾರ್ಯಾಚರಣೆಗಳು
ಒಟ್ಟುಗೂಡಿಸುವಿಕೆಯ ಹಂತಗಳ ಕ್ರಮವು ಮುಖ್ಯವಾಗಿದೆ ಎಂಬುದನ್ನು ಮರೆಯಬೇಡಿ
ಪ್ರಶ್ನೆ ಆಪ್ಟಿಮೈಜರ್ ಹೊಂದಿರುವ ಡೇಟಾಬೇಸ್ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ, ನೀವು ಬರೆಯುವ ಪ್ರಶ್ನೆಗಳು ನೀವು ಏನನ್ನು ಪಡೆಯಲು ಬಯಸುತ್ತೀರಿ ಎಂಬುದರ ವಿವರಣೆಗಳಾಗಿವೆ, ಅದನ್ನು ಹೇಗೆ ಪಡೆಯುವುದು ಎಂಬುದರಲ್ಲ. ಈ ಕಾರ್ಯವಿಧಾನವು ರೆಸ್ಟಾರೆಂಟ್ನಲ್ಲಿ ಆರ್ಡರ್ ಮಾಡುವುದರೊಂದಿಗೆ ಸಾದೃಶ್ಯದ ಮೂಲಕ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ: ಸಾಮಾನ್ಯವಾಗಿ ನೀವು ಸರಳವಾಗಿ ಖಾದ್ಯವನ್ನು ಆದೇಶಿಸುತ್ತೀರಿ ಮತ್ತು ಅಡುಗೆಯವರಿಗೆ ವಿವರವಾದ ಸೂಚನೆಗಳನ್ನು ನೀಡುವುದಿಲ್ಲ.
ಮೊಂಗೋಡಿಬಿಯಲ್ಲಿ, ನೀವು ಅಡುಗೆಯವರಿಗೆ ಸೂಚನೆ ನೀಡುತ್ತೀರಿ. ಉದಾಹರಣೆಗೆ, ಡೇಟಾ ಹಾದುಹೋಗುತ್ತದೆ ಎಂದು ನೀವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬೇಕು reduce
ಬಳಸಿಕೊಂಡು ಪೈಪ್ಲೈನ್ನಲ್ಲಿ ಸಾಧ್ಯವಾದಷ್ಟು ಬೇಗ $match
и $project
, ಮತ್ತು ವಿಂಗಡಣೆ ನಂತರ ಮಾತ್ರ ಸಂಭವಿಸುತ್ತದೆ reduce
, ಮತ್ತು ಹುಡುಕಾಟವು ನಿಮಗೆ ಬೇಕಾದ ಕ್ರಮದಲ್ಲಿ ನಿಖರವಾಗಿ ನಡೆಯುತ್ತದೆ. ಅನಾವಶ್ಯಕ ಕೆಲಸವನ್ನು ತೆಗೆದುಹಾಕುವ, ಕ್ರಮಗಳನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿ ಅನುಕ್ರಮಗೊಳಿಸುವ ಮತ್ತು ಸೇರುವ ಪ್ರಕಾರಗಳನ್ನು ಆಯ್ಕೆ ಮಾಡುವ ಪ್ರಶ್ನೆ ಆಪ್ಟಿಮೈಜರ್ ಅನ್ನು ಹೊಂದಿರುವುದು ನಿಮ್ಮನ್ನು ಹಾಳುಮಾಡುತ್ತದೆ. MongoDB ಯೊಂದಿಗೆ, ಅನುಕೂಲಕ್ಕಾಗಿ ನೀವು ಹೆಚ್ಚಿನ ನಿಯಂತ್ರಣವನ್ನು ಹೊಂದಿರುತ್ತೀರಿ.
ಮುಂತಾದ ಪರಿಕರಗಳು
ತ್ವರಿತ ರೆಕಾರ್ಡಿಂಗ್ ಅನ್ನು ಬಳಸುವುದು
ಹೆಚ್ಚಿನ ವೇಗ ಆದರೆ ಕಡಿಮೆ ವಿಶ್ವಾಸಾರ್ಹತೆಯನ್ನು ಹೊಂದಲು MongoDB ಬರೆಯುವ ಆಯ್ಕೆಗಳನ್ನು ಎಂದಿಗೂ ಹೊಂದಿಸಬೇಡಿ. ಈ ಮೋಡ್ "ಫೈಲ್-ಮತ್ತು-ಮರೆತು" ಬರೆಯುವಿಕೆಯು ಸಂಭವಿಸುವ ಮೊದಲು ಆಜ್ಞೆಯು ಹಿಂತಿರುಗುವ ಕಾರಣ ವೇಗವಾಗಿ ತೋರುತ್ತದೆ. ಡೇಟಾವನ್ನು ಡಿಸ್ಕ್ಗೆ ಬರೆಯುವ ಮೊದಲು ಸಿಸ್ಟಮ್ ಕ್ರ್ಯಾಶ್ ಆಗಿದ್ದರೆ, ಅದು ಕಳೆದುಹೋಗುತ್ತದೆ ಮತ್ತು ಅಸಮಂಜಸ ಸ್ಥಿತಿಯಲ್ಲಿ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ. ಅದೃಷ್ಟವಶಾತ್, 64-ಬಿಟ್ MongoDB ಲಾಗಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದೆ.
MMAPv1 ಮತ್ತು WiredTiger ಶೇಖರಣಾ ಎಂಜಿನ್ಗಳು ಇದನ್ನು ತಡೆಯಲು ಲಾಗಿಂಗ್ ಅನ್ನು ಬಳಸುತ್ತವೆ, ಆದಾಗ್ಯೂ WiredTiger ಕೊನೆಯ ಸ್ಥಿರತೆಗೆ ಚೇತರಿಸಿಕೊಳ್ಳಬಹುದು.
ಚೇತರಿಕೆಯ ನಂತರ ಡೇಟಾಬೇಸ್ ಸ್ಥಿರ ಸ್ಥಿತಿಯಲ್ಲಿದೆ ಮತ್ತು ಅದನ್ನು ಲಾಗ್ಗೆ ಬರೆಯುವವರೆಗೆ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತದೆ ಎಂದು ಜರ್ನಲಿಂಗ್ ಖಚಿತಪಡಿಸುತ್ತದೆ. ರೆಕಾರ್ಡಿಂಗ್ಗಳ ಆವರ್ತನವನ್ನು ನಿಯತಾಂಕವನ್ನು ಬಳಸಿಕೊಂಡು ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ
.
ನಮೂದುಗಳ ಬಗ್ಗೆ ಖಚಿತವಾಗಿರಲು, ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ನಲ್ಲಿ ಲಾಗಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ
, ಮತ್ತು ರೆಕಾರ್ಡಿಂಗ್ಗಳ ಆವರ್ತನವು ನೀವು ಕಳೆದುಕೊಳ್ಳುವ ಮಾಹಿತಿಯ ಮೊತ್ತಕ್ಕೆ ಅನುರೂಪವಾಗಿದೆ.
ಸೂಚ್ಯಂಕವಿಲ್ಲದೆ ವಿಂಗಡಿಸುವುದು
ಹುಡುಕುವಾಗ ಮತ್ತು ಒಟ್ಟುಗೂಡಿಸುವಾಗ, ಆಗಾಗ್ಗೆ ಡೇಟಾವನ್ನು ವಿಂಗಡಿಸುವ ಅವಶ್ಯಕತೆಯಿದೆ. ವಿಂಗಡಿಸಲಾದ ಡೇಟಾದ ಪ್ರಮಾಣವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಫಲಿತಾಂಶವನ್ನು ಫಿಲ್ಟರ್ ಮಾಡಿದ ನಂತರ ಇದನ್ನು ಅಂತಿಮ ಹಂತದಲ್ಲಿ ಮಾಡಲಾಗುತ್ತದೆ ಎಂದು ಭಾವಿಸೋಣ. ಮತ್ತು ಈ ಸಂದರ್ಭದಲ್ಲಿ ಸಹ, ವಿಂಗಡಿಸಲು ನಿಮಗೆ ಅಗತ್ಯವಿರುತ್ತದೆ
ಸೂಕ್ತವಾದ ಸೂಚ್ಯಂಕ ಇಲ್ಲದಿದ್ದರೆ, ಮೊಂಗೊಡಿಬಿ ಅದು ಇಲ್ಲದೆ ಮಾಡುತ್ತದೆ. ಎಲ್ಲಾ ಡಾಕ್ಯುಮೆಂಟ್ಗಳ ಒಟ್ಟು ಗಾತ್ರದಲ್ಲಿ 32 MB ಯ ಮೆಮೊರಿ ಮಿತಿ ಇದೆ
ಸೂಚ್ಯಂಕ ಬೆಂಬಲವಿಲ್ಲದೆ ಹುಡುಕಿ
ಹುಡುಕಾಟ ಪ್ರಶ್ನೆಗಳು SQL ನಲ್ಲಿನ JOIN ಕಾರ್ಯಾಚರಣೆಯಂತೆಯೇ ಕಾರ್ಯವನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ. ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಲು, ಅವರಿಗೆ ವಿದೇಶಿ ಕೀಲಿಯಾಗಿ ಬಳಸುವ ಕೀಲಿಯ ಮೌಲ್ಯದ ಸೂಚ್ಯಂಕ ಅಗತ್ಯವಿದೆ. ಬಳಕೆಯಲ್ಲಿ ಪ್ರತಿಫಲಿಸದ ಕಾರಣ ಇದು ಸ್ಪಷ್ಟವಾಗಿಲ್ಲ explain()
. ಅಂತಹ ಸೂಚ್ಯಂಕಗಳು ಬರೆಯಲಾದ ಸೂಚ್ಯಂಕಕ್ಕೆ ಹೆಚ್ಚುವರಿಯಾಗಿವೆ explain()
, ಇದನ್ನು ಪೈಪ್ಲೈನ್ ನಿರ್ವಾಹಕರು ಬಳಸುತ್ತಾರೆ $match
и $sort
, ಅವರು ಪೈಪ್ಲೈನ್ನ ಆರಂಭದಲ್ಲಿ ಭೇಟಿಯಾದಾಗ. ಸೂಚ್ಯಂಕಗಳು ಈಗ ಯಾವುದೇ ಹಂತವನ್ನು ಒಳಗೊಳ್ಳಬಹುದು
ಬಹು-ನವೀಕರಣಗಳನ್ನು ಬಳಸುವುದರಿಂದ ಹೊರಗುಳಿಯುವುದು
ವಿಧಾನ
ನೀವು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ನಿಯತಾಂಕವನ್ನು ಅವಲಂಬಿಸಿ, ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಡಾಕ್ಯುಮೆಂಟ್ ಅಥವಾ ಸಂಪೂರ್ಣ ಡಾಕ್ಯುಮೆಂಟ್ನ ಭಾಗವನ್ನು ಬದಲಾಯಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ.
. ನೀವು ಆಯ್ಕೆಯನ್ನು ಹೊಂದಿಸದ ಹೊರತು ಅದು ಸಂಗ್ರಹದಲ್ಲಿರುವ ಎಲ್ಲಾ ದಾಖಲೆಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದಿಲ್ಲ ಎಂಬುದು ಅಷ್ಟು ಸ್ಪಷ್ಟವಾಗಿಲ್ಲ
ವಿನಂತಿಯ ಮಾನದಂಡಗಳನ್ನು ಪೂರೈಸುವ ಎಲ್ಲಾ ದಾಖಲೆಗಳನ್ನು ನವೀಕರಿಸಲು.
ಹ್ಯಾಶ್ ಟೇಬಲ್ನಲ್ಲಿ ಕೀಗಳ ಕ್ರಮದ ಪ್ರಾಮುಖ್ಯತೆಯನ್ನು ಮರೆಯಬೇಡಿ
JSON ನಲ್ಲಿ, ಒಂದು ವಸ್ತುವು ಗಾತ್ರದ ಶೂನ್ಯ ಅಥವಾ ಹೆಚ್ಚಿನ ಹೆಸರು/ಮೌಲ್ಯ ಜೋಡಿಗಳ ಕ್ರಮವಿಲ್ಲದ ಸಂಗ್ರಹವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಅಲ್ಲಿ ಹೆಸರು ಸ್ಟ್ರಿಂಗ್ ಆಗಿರುತ್ತದೆ ಮತ್ತು ಮೌಲ್ಯವು ಸ್ಟ್ರಿಂಗ್, ಸಂಖ್ಯೆ, ಬೂಲಿಯನ್, ಶೂನ್ಯ, ಆಬ್ಜೆಕ್ಟ್ ಅಥವಾ ಅರೇ ಆಗಿರುತ್ತದೆ.
ದುರದೃಷ್ಟವಶಾತ್, ಹುಡುಕುವಾಗ BSON ಆದೇಶಕ್ಕೆ ಹೆಚ್ಚಿನ ಒತ್ತು ನೀಡುತ್ತದೆ. ಮೊಂಗೋಡಿಬಿಯಲ್ಲಿ, ಅಂತರ್ನಿರ್ಮಿತ ವಸ್ತುಗಳೊಳಗಿನ ಕೀಗಳ ಕ್ರಮ { firstname: "Phil", surname: "factor" }
- ಇದು ಒಂದೇ ಅಲ್ಲ { { surname: "factor", firstname: "Phil" }
. ಅಂದರೆ, ನಿಮ್ಮ ಡಾಕ್ಯುಮೆಂಟ್ಗಳಲ್ಲಿ ಹೆಸರು/ಮೌಲ್ಯ ಜೋಡಿಗಳ ಕ್ರಮವನ್ನು ನೀವು ಶೇಖರಿಸಿಡಬೇಕು.
ಗೊಂದಲ ಬೇಡ "ಸೊನ್ನೆ" и "ವ್ಯಾಖ್ಯಾನಿಸದ"
ಮೌಲ್ಯವನ್ನು "ವ್ಯಾಖ್ಯಾನಿಸದ" JSON ನಲ್ಲಿ ಎಂದಿಗೂ ಮಾನ್ಯವಾಗಿಲ್ಲ, ಪ್ರಕಾರ $null
, ಇದು ಯಾವಾಗಲೂ ಉತ್ತಮ ಪರಿಹಾರವಲ್ಲ.
ಬಳಸಿ $limit()
ಇಲ್ಲದೆ $sort()
ಆಗಾಗ್ಗೆ ನೀವು MongoDB ಯಲ್ಲಿ ಅಭಿವೃದ್ಧಿಪಡಿಸುತ್ತಿರುವಾಗ, ಪ್ರಶ್ನೆ ಅಥವಾ ಒಟ್ಟುಗೂಡಿಸುವಿಕೆಯಿಂದ ಹಿಂತಿರುಗಿಸಲಾದ ಫಲಿತಾಂಶದ ಮಾದರಿಯನ್ನು ನೋಡಲು ಇದು ಉಪಯುಕ್ತವಾಗಿದೆ. ಈ ಕಾರ್ಯಕ್ಕಾಗಿ ನಿಮಗೆ ಅಗತ್ಯವಿರುತ್ತದೆ $limit()
, ಆದರೆ ನೀವು ಮೊದಲು ಬಳಸದ ಹೊರತು ಅದು ಅಂತಿಮ ಕೋಡ್ನಲ್ಲಿ ಇರಬಾರದು $sort
. ಈ ಮೆಕ್ಯಾನಿಕ್ ಅವಶ್ಯಕವಾಗಿದೆ ಏಕೆಂದರೆ ಇಲ್ಲದಿದ್ದರೆ ನೀವು ಫಲಿತಾಂಶದ ಕ್ರಮವನ್ನು ಖಾತರಿಪಡಿಸುವುದಿಲ್ಲ, ಮತ್ತು ನೀವು ಡೇಟಾವನ್ನು ವಿಶ್ವಾಸಾರ್ಹವಾಗಿ ವೀಕ್ಷಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ಫಲಿತಾಂಶದ ಮೇಲ್ಭಾಗದಲ್ಲಿ ನೀವು ವಿಂಗಡಣೆಯನ್ನು ಅವಲಂಬಿಸಿ ವಿಭಿನ್ನ ನಮೂದುಗಳನ್ನು ಪಡೆಯುತ್ತೀರಿ. ವಿಶ್ವಾಸಾರ್ಹವಾಗಿ ಕೆಲಸ ಮಾಡಲು, ಪ್ರಶ್ನೆಗಳು ಮತ್ತು ಒಟ್ಟುಗೂಡಿಸುವಿಕೆಗಳು ನಿರ್ಣಾಯಕವಾಗಿರಬೇಕು, ಅಂದರೆ, ಪ್ರತಿ ಬಾರಿಯೂ ಅವುಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿದಾಗ ಅದೇ ಫಲಿತಾಂಶಗಳನ್ನು ನೀಡುತ್ತದೆ. ಒಳಗೊಂಡಿರುವ ಕೋಡ್ $limit()
, ಆದರೆ ಇಲ್ಲ $sort
, ನಿರ್ಣಾಯಕವಾಗಿರುವುದಿಲ್ಲ ಮತ್ತು ತರುವಾಯ ಪತ್ತೆಹಚ್ಚಲು ಕಷ್ಟಕರವಾದ ದೋಷಗಳನ್ನು ಉಂಟುಮಾಡಬಹುದು.
ತೀರ್ಮಾನಕ್ಕೆ
MongoDB ಯೊಂದಿಗೆ ನಿರಾಶೆಗೊಳ್ಳುವ ಏಕೈಕ ಮಾರ್ಗವೆಂದರೆ ಅದನ್ನು DBMS ನಂತಹ ಮತ್ತೊಂದು ರೀತಿಯ ಡೇಟಾಬೇಸ್ಗೆ ನೇರವಾಗಿ ಹೋಲಿಸುವುದು ಅಥವಾ ಕೆಲವು ನಿರೀಕ್ಷೆಗಳ ಆಧಾರದ ಮೇಲೆ ಅದನ್ನು ಬಳಸಲು ಬರುವುದು. ಇದು ಕಿತ್ತಳೆ ಹಣ್ಣನ್ನು ಫೋರ್ಕ್ಗೆ ಹೋಲಿಸಿದಂತೆ. ಡೇಟಾಬೇಸ್ ವ್ಯವಸ್ಥೆಗಳು ನಿರ್ದಿಷ್ಟ ಉದ್ದೇಶಗಳನ್ನು ಪೂರೈಸುತ್ತವೆ. ಈ ವ್ಯತ್ಯಾಸಗಳನ್ನು ನಿಮಗಾಗಿ ಸರಳವಾಗಿ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಪ್ರಶಂಸಿಸುವುದು ಉತ್ತಮ. ಮೊಂಗೊಡಿಬಿ ಡೆವಲಪರ್ಗಳನ್ನು ಡಿಬಿಎಂಎಸ್ ಹಾದಿಯಲ್ಲಿ ಬಲವಂತಪಡಿಸಿದ ಮಾರ್ಗದ ಮೇಲೆ ಒತ್ತಡ ಹೇರುವುದು ನಾಚಿಕೆಗೇಡಿನ ಸಂಗತಿಯಾಗಿದೆ. ಡೇಟಾ ಸಮಗ್ರತೆಯನ್ನು ಖಾತರಿಪಡಿಸುವುದು ಮತ್ತು ವೈಫಲ್ಯ ಮತ್ತು ದುರುದ್ದೇಶಪೂರಿತ ದಾಳಿಗಳಿಗೆ ಸ್ಥಿತಿಸ್ಥಾಪಕತ್ವವನ್ನು ಹೊಂದಿರುವ ಡೇಟಾ ಸಿಸ್ಟಮ್ಗಳನ್ನು ರಚಿಸುವಂತಹ ಹಳೆಯ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಹೊಸ ಮತ್ತು ಆಸಕ್ತಿದಾಯಕ ಮಾರ್ಗಗಳನ್ನು ನಾನು ನೋಡಲು ಬಯಸುತ್ತೇನೆ.
ಆವೃತ್ತಿ 4.0 ರಲ್ಲಿ MongoDB ನ ACID ವಹಿವಾಟಿನ ಪರಿಚಯವು ನವೀನ ರೀತಿಯಲ್ಲಿ ಪ್ರಮುಖ ಸುಧಾರಣೆಗಳನ್ನು ಪರಿಚಯಿಸುವ ಉತ್ತಮ ಉದಾಹರಣೆಯಾಗಿದೆ. ಬಹು-ಡಾಕ್ಯುಮೆಂಟ್ ಮತ್ತು ಬಹು-ಹೇಳಿಕೆ ವಹಿವಾಟುಗಳು ಈಗ ಪರಮಾಣುಗಳಾಗಿವೆ. ಲಾಕ್ಗಳನ್ನು ಸ್ವಾಧೀನಪಡಿಸಿಕೊಳ್ಳಲು ಮತ್ತು ಅಂಟಿಕೊಂಡಿರುವ ವಹಿವಾಟುಗಳನ್ನು ಕೊನೆಗೊಳಿಸಲು ಅಗತ್ಯವಿರುವ ಸಮಯವನ್ನು ಸರಿಹೊಂದಿಸಲು ಸಹ ಸಾಧ್ಯವಿದೆ, ಜೊತೆಗೆ ಪ್ರತ್ಯೇಕತೆಯ ಮಟ್ಟವನ್ನು ಬದಲಾಯಿಸಬಹುದು.
ಮತ್ತಷ್ಟು ಓದು:
ಮೂಲ: www.habr.com