ನಮಸ್ಕಾರ ಗೆಳೆಯರೆ. ಮೇ ರಜಾದಿನಗಳ ಎರಡನೇ ಭಾಗಕ್ಕೆ ಹೊರಡುವ ಮೊದಲು, ಕೋರ್ಸ್ನಲ್ಲಿ ಹೊಸ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುವ ನಿರೀಕ್ಷೆಯಲ್ಲಿ ನಾವು ಅನುವಾದಿಸಿದ ವಿಷಯವನ್ನು ನಿಮ್ಮೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳುತ್ತೇವೆ
ಅಪ್ಲಿಕೇಶನ್ ಡೆವಲಪರ್ಗಳು ಉದ್ದೇಶಿತ ಕೆಲಸದ ಹೊರೆಗೆ ಸೂಕ್ತವಾದ ಒಂದನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಬಹು ಕಾರ್ಯಾಚರಣೆಯ ಡೇಟಾಬೇಸ್ಗಳನ್ನು ಹೋಲಿಸಲು ಸಾಕಷ್ಟು ಸಮಯವನ್ನು ಕಳೆಯುತ್ತಾರೆ. ಅಗತ್ಯತೆಗಳು ಸರಳೀಕೃತ ಡೇಟಾ ಮಾಡೆಲಿಂಗ್, ವಹಿವಾಟಿನ ಖಾತರಿಗಳು, ಓದಲು/ಬರೆಯುವ ಕಾರ್ಯಕ್ಷಮತೆ, ಸಮತಲ ಸ್ಕೇಲಿಂಗ್ ಮತ್ತು ತಪ್ಪು ಸಹಿಷ್ಣುತೆಯನ್ನು ಒಳಗೊಂಡಿರಬಹುದು. ಸಾಂಪ್ರದಾಯಿಕವಾಗಿ, ಆಯ್ಕೆಯು ಡೇಟಾಬೇಸ್ ವರ್ಗ, SQL ಅಥವಾ NoSQL ನೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಪ್ರತಿ ವರ್ಗವು ಸ್ಪಷ್ಟವಾದ ವ್ಯಾಪಾರ-ವಹಿವಾಟುಗಳನ್ನು ಪ್ರಸ್ತುತಪಡಿಸುತ್ತದೆ. ಕಡಿಮೆ ಸುಪ್ತತೆ ಮತ್ತು ಹೆಚ್ಚಿನ ಥ್ರೋಪುಟ್ ವಿಷಯದಲ್ಲಿ ಹೆಚ್ಚಿನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಟ್ರೇಡ್-ಆಫ್ ಅವಶ್ಯಕತೆಯಾಗಿ ನೋಡಲಾಗುತ್ತದೆ ಮತ್ತು ಆದ್ದರಿಂದ ಯಾವುದೇ ಮಾದರಿ ಡೇಟಾಬೇಸ್ಗೆ ಇದು ಅತ್ಯಗತ್ಯ.
ಅಪ್ಲಿಕೇಶನ್ ಡೇಟಾ ಮಾಡೆಲಿಂಗ್ ಸಂದರ್ಭದಲ್ಲಿ SQL ಮತ್ತು NoSQL ನಡುವೆ ಸರಿಯಾದ ಆಯ್ಕೆ ಮಾಡಲು ಅಪ್ಲಿಕೇಶನ್ ಡೆವಲಪರ್ಗಳಿಗೆ ಸಹಾಯ ಮಾಡುವುದು ಈ ಲೇಖನದ ಉದ್ದೇಶವಾಗಿದೆ. ನಾವು ಒಂದು SQL ಡೇಟಾಬೇಸ್ ಅನ್ನು ನೋಡುತ್ತೇವೆ, ಅವುಗಳೆಂದರೆ PostgreSQL, ಮತ್ತು ಎರಡು NoSQL ಡೇಟಾಬೇಸ್ಗಳಾದ ಕಸ್ಸಂದ್ರ ಮತ್ತು ಮೊಂಗೋಡಿಬಿ, ಡೇಟಾಬೇಸ್ ವಿನ್ಯಾಸದ ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ಒಳಗೊಳ್ಳಲು, ಉದಾಹರಣೆಗೆ ಕೋಷ್ಟಕಗಳನ್ನು ರಚಿಸುವುದು, ಅವುಗಳನ್ನು ಜನಪ್ರಿಯಗೊಳಿಸುವುದು, ಟೇಬಲ್ನಿಂದ ಡೇಟಾವನ್ನು ಓದುವುದು ಮತ್ತು ಅದನ್ನು ಅಳಿಸುವುದು. ಮುಂದಿನ ಲೇಖನದಲ್ಲಿ, ನಾವು ಸೂಚ್ಯಂಕಗಳು, ವಹಿವಾಟುಗಳು, ಸೇರ್ಪಡೆಗಳು, TTL ನಿರ್ದೇಶನಗಳು ಮತ್ತು JSON-ಆಧಾರಿತ ಡೇಟಾಬೇಸ್ ವಿನ್ಯಾಸವನ್ನು ನೋಡಲು ಖಚಿತವಾಗಿರುತ್ತೇವೆ.
SQL ಮತ್ತು NoSQL ನಡುವಿನ ವ್ಯತ್ಯಾಸವೇನು?
SQL ಡೇಟಾಬೇಸ್ಗಳು ACID ವಹಿವಾಟಿನ ಖಾತರಿಗಳ ಮೂಲಕ ಅಪ್ಲಿಕೇಶನ್ ನಮ್ಯತೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತವೆ, ಹಾಗೆಯೇ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಸಾಮಾನ್ಯೀಕರಿಸಿದ ಸಂಬಂಧಿತ ಡೇಟಾಬೇಸ್ ಮಾದರಿಗಳ ಮೇಲೆ ಅನಿರೀಕ್ಷಿತ ರೀತಿಯಲ್ಲಿ JOIN ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಡೇಟಾವನ್ನು ಪ್ರಶ್ನಿಸುವ ಸಾಮರ್ಥ್ಯ.
ಅವುಗಳ ಏಕಶಿಲೆಯ/ಏಕ-ನೋಡ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಮತ್ತು ಪುನರಾವರ್ತನೆಗಾಗಿ ಮಾಸ್ಟರ್-ಸ್ಲೇವ್ ರೆಪ್ಲಿಕೇಶನ್ ಮಾದರಿಯ ಬಳಕೆಯನ್ನು ನೀಡಿದರೆ, ಸಾಂಪ್ರದಾಯಿಕ SQL ಡೇಟಾಬೇಸ್ಗಳು ಎರಡು ಪ್ರಮುಖ ಲಕ್ಷಣಗಳನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ - ರೇಖೀಯ ಬರವಣಿಗೆ ಸ್ಕೇಲೆಬಿಲಿಟಿ (ಅಂದರೆ ಬಹು ನೋಡ್ಗಳಾದ್ಯಂತ ಸ್ವಯಂಚಾಲಿತ ವಿಭಜನೆ) ಮತ್ತು ಸ್ವಯಂಚಾಲಿತ/ಶೂನ್ಯ ಡೇಟಾ ನಷ್ಟ. ಇದರರ್ಥ ಸ್ವೀಕರಿಸಿದ ಡೇಟಾದ ಪ್ರಮಾಣವು ಒಂದೇ ನೋಡ್ನ ಗರಿಷ್ಠ ಬರವಣಿಗೆ ಥ್ರೋಪುಟ್ ಅನ್ನು ಮೀರಬಾರದು. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಕೆಲವು ತಾತ್ಕಾಲಿಕ ಡೇಟಾ ನಷ್ಟವನ್ನು ದೋಷ ಸಹಿಷ್ಣುತೆಯಲ್ಲಿ ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳಬೇಕು (ಹಂಚಿಕೊಳ್ಳದ-ನಥಿಂಗ್ ಆರ್ಕಿಟೆಕ್ಚರ್ನಲ್ಲಿ). ಇತ್ತೀಚಿನ ಬದ್ಧತೆಗಳು ಗುಲಾಮರ ಪ್ರತಿಯಲ್ಲಿ ಇನ್ನೂ ಪ್ರತಿಫಲಿಸಿಲ್ಲ ಎಂಬುದನ್ನು ಇಲ್ಲಿ ನೀವು ನೆನಪಿನಲ್ಲಿಟ್ಟುಕೊಳ್ಳಬೇಕು. SQL ಡೇಟಾಬೇಸ್ಗಳಲ್ಲಿ ಡೌನ್ಟೈಮ್ ಅಲ್ಲದ ನವೀಕರಣಗಳನ್ನು ಸಾಧಿಸುವುದು ಕಷ್ಟ.
NoSQL ಡೇಟಾಬೇಸ್ಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರಕೃತಿಯಿಂದ ವಿತರಿಸಲಾಗುತ್ತದೆ, ಅಂದರೆ. ಅವುಗಳಲ್ಲಿ, ಡೇಟಾವನ್ನು ವಿಭಾಗಗಳಾಗಿ ವಿಂಗಡಿಸಲಾಗಿದೆ ಮತ್ತು ಹಲವಾರು ನೋಡ್ಗಳಲ್ಲಿ ವಿತರಿಸಲಾಗುತ್ತದೆ. ಅವರಿಗೆ ಅಸಾಧಾರಣೀಕರಣದ ಅಗತ್ಯವಿರುತ್ತದೆ. ಇದರರ್ಥ ನೀವು ಕಳುಹಿಸುವ ನಿರ್ದಿಷ್ಟ ವಿನಂತಿಗಳಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸಲು ನಮೂದಿಸಿದ ಡೇಟಾವನ್ನು ಹಲವಾರು ಬಾರಿ ನಕಲಿಸಬೇಕು. ಓದುವ ಸಮಯದಲ್ಲಿ ಲಭ್ಯವಿರುವ ಚೂರುಗಳ ಸಂಖ್ಯೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುವ ಮೂಲಕ ಹೆಚ್ಚಿನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪಡೆಯುವುದು ಒಟ್ಟಾರೆ ಗುರಿಯಾಗಿದೆ. ಇದು NoSQL ಗೆ ನಿಮ್ಮ ಪ್ರಶ್ನೆಗಳನ್ನು ಮಾಡೆಲ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ, ಆದರೆ SQL ಗೆ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ನೀವು ಮಾಡೆಲ್ ಮಾಡುವ ಅಗತ್ಯವಿದೆ.
ವಿತರಿಸಿದ ಕ್ಲಸ್ಟರ್ನಲ್ಲಿ ಹೆಚ್ಚಿನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸಾಧಿಸುವುದರ ಮೇಲೆ NoSQL ಗಮನಹರಿಸುತ್ತದೆ ಮತ್ತು ಇದು ACID ವಹಿವಾಟು ನಷ್ಟ, ಸೇರ್ಪಡೆಗಳು ಮತ್ತು ಸ್ಥಿರವಾದ ಜಾಗತಿಕ ಮಾಧ್ಯಮಿಕ ಸೂಚ್ಯಂಕಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಅನೇಕ ಡೇಟಾಬೇಸ್ ವಿನ್ಯಾಸ ವಹಿವಾಟುಗಳಿಗೆ ಆಧಾರವಾಗಿರುವ ತಾರ್ಕಿಕವಾಗಿದೆ.
NoSQL ಡೇಟಾಬೇಸ್ಗಳು ಲೀನಿಯರ್ ರೈಟ್ ಸ್ಕೇಲೆಬಿಲಿಟಿ ಮತ್ತು ಹೆಚ್ಚಿನ ತಪ್ಪು ಸಹಿಷ್ಣುತೆಯನ್ನು ಒದಗಿಸುತ್ತವೆ, ವಹಿವಾಟಿನ ಖಾತರಿಗಳ ನಷ್ಟವು ಮಿಷನ್-ಕ್ರಿಟಿಕಲ್ ಡೇಟಾಗೆ ಸೂಕ್ತವಲ್ಲ ಎಂದು ವಾದವಿದೆ.
ಕೆಳಗಿನ ಕೋಷ್ಟಕವು NoSQL ನಲ್ಲಿನ ಡೇಟಾ ಮಾಡೆಲಿಂಗ್ SQL ನಿಂದ ಹೇಗೆ ಭಿನ್ನವಾಗಿದೆ ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ.
SQL ಮತ್ತು NoSQL: ಎರಡೂ ಏಕೆ ಬೇಕು?
Amazon.com, Netflix, Uber ಮತ್ತು Airbnb ನಂತಹ ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ ಬಳಕೆದಾರರನ್ನು ಹೊಂದಿರುವ ನೈಜ-ಪ್ರಪಂಚದ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಸಂಕೀರ್ಣವಾದ, ಬಹು-ಮುಖದ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಕಾರ್ಯವನ್ನು ಹೊಂದಿವೆ. ಉದಾಹರಣೆಗೆ, Amazon.com ನಂತಹ ಇ-ಕಾಮರ್ಸ್ ಅಪ್ಲಿಕೇಶನ್ ಬಳಕೆದಾರರ ಮಾಹಿತಿ, ಉತ್ಪನ್ನಗಳು, ಆರ್ಡರ್ಗಳು, ಇನ್ವಾಯ್ಸ್ಗಳಂತಹ ಹಗುರವಾದ, ಹೆಚ್ಚು ನಿರ್ಣಾಯಕ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುವ ಅಗತ್ಯವಿದೆ, ಜೊತೆಗೆ ಉತ್ಪನ್ನ ವಿಮರ್ಶೆಗಳು, ಬೆಂಬಲ ಸಂದೇಶಗಳು, ಬಳಕೆದಾರ ಚಟುವಟಿಕೆಯಂತಹ ಭಾರೀ, ಕಡಿಮೆ ಸೂಕ್ಷ್ಮ ಡೇಟಾ ಬಳಕೆದಾರರ ವಿಮರ್ಶೆಗಳು ಮತ್ತು ಶಿಫಾರಸುಗಳು. ಸ್ವಾಭಾವಿಕವಾಗಿ, ಈ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಕನಿಷ್ಠ ಒಂದು SQL ಡೇಟಾಬೇಸ್ ಜೊತೆಗೆ ಕನಿಷ್ಠ ಒಂದು NoSQL ಡೇಟಾಬೇಸ್ ಅನ್ನು ಅವಲಂಬಿಸಿವೆ. ಅಡ್ಡ-ಪ್ರಾದೇಶಿಕ ಮತ್ತು ಜಾಗತಿಕ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ, ಒಂದು ನಿರ್ದಿಷ್ಟ ಪ್ರದೇಶದಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ವಿಶ್ವಾಸಾರ್ಹ ಮೂಲ SQL ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಡೇಟಾಕ್ಕಾಗಿ NoSQL ಡೇಟಾಬೇಸ್ ಜಿಯೋ-ವಿತರಿಸಿದ ಸಂಗ್ರಹವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
YugaByte DB SQL ಮತ್ತು NoSQL ಅನ್ನು ಹೇಗೆ ಸಂಯೋಜಿಸುತ್ತದೆ?
ಲಾಗ್-ಆಧಾರಿತ ಮಿಶ್ರ ಶೇಖರಣಾ ಎಂಜಿನ್, ಸ್ವಯಂ-ಶರ್ಡಿಂಗ್, ಹಂಚಲಾದ ವಿತರಿಸಿದ ಒಮ್ಮತದ ಪ್ರತಿಕೃತಿ ಮತ್ತು ACID ವಿತರಿಸಿದ ವಹಿವಾಟುಗಳ ಮೇಲೆ ನಿರ್ಮಿಸಲಾಗಿದೆ (Google ಸ್ಪ್ಯಾನರ್ನಿಂದ ಪ್ರೇರಿತವಾಗಿದೆ), YugaByte DB ಪ್ರಪಂಚದ ಮೊದಲ ತೆರೆದ ಮೂಲ ಡೇಟಾಬೇಸ್ ಆಗಿದ್ದು ಅದು ಏಕಕಾಲದಲ್ಲಿ NoSQL (ಕ್ಯಾಸಂಡ್ರಾ & ರೆಡಿಸ್) ಜೊತೆಗೆ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ. SQL (PostgreSQL). ಕೆಳಗಿನ ಕೋಷ್ಟಕದಲ್ಲಿ ತೋರಿಸಿರುವಂತೆ, YCQL, YugaByte DB API, Cassandra ನೊಂದಿಗೆ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ, NoSQL API ಗೆ ಏಕ ಮತ್ತು ಬಹು-ಕೀ ACID ವಹಿವಾಟುಗಳು ಮತ್ತು ಜಾಗತಿಕ ದ್ವಿತೀಯ ಸೂಚ್ಯಂಕಗಳ ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ, ಆ ಮೂಲಕ ವಹಿವಾಟಿನ NoSQL ಡೇಟಾಬೇಸ್ಗಳ ಯುಗವನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, YCQL, PostgreSQL ಗೆ ಹೊಂದಿಕೊಳ್ಳುವ YugaByte DB API, SQL API ಗೆ ರೇಖೀಯ ಬರವಣಿಗೆ ಸ್ಕೇಲಿಂಗ್ ಮತ್ತು ಸ್ವಯಂಚಾಲಿತ ದೋಷ ಸಹಿಷ್ಣುತೆಯ ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ, ವಿತರಿಸಿದ SQL ಡೇಟಾಬೇಸ್ಗಳನ್ನು ಜಗತ್ತಿಗೆ ತರುತ್ತದೆ. YugaByte DB ವಹಿವಾಟು ಸ್ವಭಾವದ ಕಾರಣ, NoSQL API ಅನ್ನು ಈಗ ಮಿಷನ್-ಕ್ರಿಟಿಕಲ್ ಡೇಟಾದ ಸಂದರ್ಭದಲ್ಲಿ ಬಳಸಬಹುದು.
ಲೇಖನದಲ್ಲಿ ಹಿಂದೆ ಹೇಳಿದಂತೆ
- ನಿಮ್ಮ ಪ್ರಾಥಮಿಕ ಕೆಲಸದ ಹೊರೆ ಬಹು-ಕೀ ಸೇರ್ಪಡೆ ಕಾರ್ಯಾಚರಣೆಗಳಾಗಿದ್ದರೆ, YSQL ಅನ್ನು ಆಯ್ಕೆಮಾಡುವಾಗ, ನಿಮ್ಮ ಕೀಗಳನ್ನು ಬಹು ನೋಡ್ಗಳಲ್ಲಿ ವಿತರಿಸಬಹುದು ಎಂದು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ, ಹೆಚ್ಚಿನ ಲೇಟೆನ್ಸಿ ಮತ್ತು/ಅಥವಾ NoSQL ಗಿಂತ ಕಡಿಮೆ ಥ್ರೋಪುಟ್ಗೆ ಕಾರಣವಾಗುತ್ತದೆ.
- ಇಲ್ಲದಿದ್ದರೆ, ಎರಡು NoSQL API ಗಳಲ್ಲಿ ಒಂದನ್ನು ಆಯ್ಕೆಮಾಡಿ, ಒಂದು ಸಮಯದಲ್ಲಿ ಒಂದು ನೋಡ್ನಿಂದ ಸೇವೆ ಸಲ್ಲಿಸಿದ ಪ್ರಶ್ನೆಗಳ ಪರಿಣಾಮವಾಗಿ ನೀವು ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪಡೆಯುತ್ತೀರಿ ಎಂಬುದನ್ನು ನೆನಪಿನಲ್ಲಿಡಿ. YugaByte DB ಏಕಕಾಲದಲ್ಲಿ ಬಹು ಕೆಲಸದ ಹೊರೆಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಅಗತ್ಯವಿರುವ ನೈಜ-ಪ್ರಪಂಚದ, ಸಂಕೀರ್ಣ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಒಂದೇ ಕಾರ್ಯಾಚರಣಾ ಡೇಟಾಬೇಸ್ ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
ಮುಂದಿನ ವಿಭಾಗದಲ್ಲಿ ಡೇಟಾ ಮಾಡೆಲಿಂಗ್ ಲ್ಯಾಬ್ ಸ್ಥಳೀಯ ಡೇಟಾಬೇಸ್ಗಳಿಗೆ ವಿರುದ್ಧವಾಗಿ PostgreSQL ಮತ್ತು Cassandra API ಹೊಂದಾಣಿಕೆಯ YugaByte DB ಡೇಟಾಬೇಸ್ಗಳನ್ನು ಆಧರಿಸಿದೆ. ಈ ವಿಧಾನವು ಎರಡು ವಿಭಿನ್ನ ಡೇಟಾಬೇಸ್ಗಳ ಸಂಪೂರ್ಣ ಸ್ವತಂತ್ರ ಕ್ಲಸ್ಟರ್ಗಳನ್ನು ಬಳಸುವುದರ ವಿರುದ್ಧವಾಗಿ ಒಂದೇ ಡೇಟಾಬೇಸ್ ಕ್ಲಸ್ಟರ್ನ ಎರಡು ವಿಭಿನ್ನ API ಗಳೊಂದಿಗೆ (ಎರಡು ವಿಭಿನ್ನ ಪೋರ್ಟ್ಗಳಲ್ಲಿ) ಸಂವಹನ ಮಾಡುವ ಸುಲಭತೆಯನ್ನು ಒತ್ತಿಹೇಳುತ್ತದೆ.
ಕೆಳಗಿನ ವಿಭಾಗಗಳಲ್ಲಿ, ಡೇಟಾಬೇಸ್ಗಳ ವ್ಯತ್ಯಾಸಗಳು ಮತ್ತು ಕೆಲವು ಸಾಮಾನ್ಯತೆಗಳನ್ನು ವಿವರಿಸಲು ನಾವು ಡೇಟಾ ಮಾಡೆಲಿಂಗ್ ಲ್ಯಾಬ್ ಅನ್ನು ನೋಡೋಣ.
ಡೇಟಾ ಮಾಡೆಲಿಂಗ್ ಪ್ರಯೋಗಾಲಯ
ಡೇಟಾಬೇಸ್ ಸ್ಥಾಪನೆ
ಡೇಟಾ ಮಾದರಿ ವಿನ್ಯಾಸದ ಮೇಲೆ ಒತ್ತು ನೀಡಿದರೆ (ಸಂಕೀರ್ಣ ನಿಯೋಜನೆ ಆರ್ಕಿಟೆಕ್ಚರ್ಗಳಿಗಿಂತ), ನಾವು ಸ್ಥಳೀಯ ಗಣಕದಲ್ಲಿ ಡಾಕರ್ ಕಂಟೈನರ್ಗಳಲ್ಲಿ ಡೇಟಾಬೇಸ್ಗಳನ್ನು ಸ್ಥಾಪಿಸುತ್ತೇವೆ ಮತ್ತು ನಂತರ ಅವುಗಳ ಆಯಾ ಕಮಾಂಡ್ ಲೈನ್ ಶೆಲ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಅವರೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುತ್ತೇವೆ.
PostgreSQL & Cassandra ಹೊಂದಾಣಿಕೆಯ YugaByte DB ಡೇಟಾಬೇಸ್
mkdir ~/yugabyte && cd ~/yugabyte
wget https://downloads.yugabyte.com/yb-docker-ctl && chmod +x yb-docker-ctl
docker pull yugabytedb/yugabyte
./yb-docker-ctl create --enable_postgres
ಮೊಂಗೋಡಬ್ಬಿ
docker run --name my-mongo -d mongo:latest
ಕಮಾಂಡ್ ಲೈನ್ ಪ್ರವೇಶ
ಅನುಗುಣವಾದ API ಗಳಿಗಾಗಿ ಕಮಾಂಡ್ ಲೈನ್ ಶೆಲ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಡೇಟಾಬೇಸ್ಗಳಿಗೆ ಸಂಪರ್ಕಿಸೋಣ.
PostgreSQL
docker exec -it yb-postgres-n1 /home/yugabyte/postgres/bin/psql -p 5433 -U postgres
ಕಸ್ಸಂದ್ರ
cqlsh
ಕ್ಯಾಟಲಾಗ್ನಲ್ಲಿ bin
.
CQL SQL ನಿಂದ ಪ್ರೇರಿತವಾಗಿದೆ ಮತ್ತು ಕೋಷ್ಟಕಗಳು, ಸಾಲುಗಳು, ಕಾಲಮ್ಗಳು ಮತ್ತು ಸೂಚಿಕೆಗಳ ಸಮಾನ ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಹೊಂದಿದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ. ಆದಾಗ್ಯೂ, ಒಂದು NoSQL ಭಾಷೆಯಾಗಿ, ಇದು ಒಂದು ನಿರ್ದಿಷ್ಟ ಮಿತಿಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ, ಇವುಗಳಲ್ಲಿ ಹೆಚ್ಚಿನವುಗಳನ್ನು ನಾವು ಇತರ ಲೇಖನಗಳಲ್ಲಿ ಸಹ ಒಳಗೊಳ್ಳುತ್ತೇವೆ.
docker exec -it yb-tserver-n1 /home/yugabyte/bin/cqlsh
ಮೊಂಗೋಡಬ್ಬಿ
docker exec -it my-mongo bash
cd bin
mongo
ಟೇಬಲ್ ರಚಿಸಿ
ಈಗ ನಾವು ಕಮಾಂಡ್ ಲೈನ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ವಿವಿಧ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಡೇಟಾಬೇಸ್ನೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಬಹುದು. ವಿಭಿನ್ನ ಕಲಾವಿದರು ಬರೆದ ಹಾಡುಗಳ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸುವ ಟೇಬಲ್ ಅನ್ನು ರಚಿಸುವ ಮೂಲಕ ಪ್ರಾರಂಭಿಸೋಣ. ಈ ಹಾಡುಗಳು ಆಲ್ಬಮ್ನ ಭಾಗವಾಗಿರಬಹುದು. ಒಂದು ಹಾಡಿನ ಐಚ್ಛಿಕ ಗುಣಲಕ್ಷಣಗಳೆಂದರೆ ಬಿಡುಗಡೆಯ ವರ್ಷ, ಬೆಲೆ, ಪ್ರಕಾರ ಮತ್ತು ರೇಟಿಂಗ್. "ಟ್ಯಾಗ್ಗಳು" ಕ್ಷೇತ್ರದ ಮೂಲಕ ಭವಿಷ್ಯದಲ್ಲಿ ಅಗತ್ಯವಿರುವ ಹೆಚ್ಚುವರಿ ಗುಣಲಕ್ಷಣಗಳನ್ನು ನಾವು ಪರಿಗಣಿಸಬೇಕಾಗಿದೆ. ಇದು ಅರೆ-ರಚನಾತ್ಮಕ ಡೇಟಾವನ್ನು ಕೀ-ಮೌಲ್ಯದ ಜೋಡಿಗಳ ರೂಪದಲ್ಲಿ ಸಂಗ್ರಹಿಸಬಹುದು.
PostgreSQL
CREATE TABLE Music (
Artist VARCHAR(20) NOT NULL,
SongTitle VARCHAR(30) NOT NULL,
AlbumTitle VARCHAR(25),
Year INT,
Price FLOAT,
Genre VARCHAR(10),
CriticRating FLOAT,
Tags TEXT,
PRIMARY KEY(Artist, SongTitle)
);
ಕಸ್ಸಂದ್ರ
ಕಸ್ಸಂದ್ರದಲ್ಲಿ ಟೇಬಲ್ ಅನ್ನು ರಚಿಸುವುದು PostgreSQL ಗೆ ಹೋಲುತ್ತದೆ. ಒಂದು ಪ್ರಮುಖ ವ್ಯತ್ಯಾಸವೆಂದರೆ ಸಮಗ್ರತೆಯ ನಿರ್ಬಂಧಗಳ ಕೊರತೆ (ಉದಾ. NULL ಅಲ್ಲ), ಆದರೆ ಇದು ಅಪ್ಲಿಕೇಶನ್ನ ಜವಾಬ್ದಾರಿಯಾಗಿದೆ, NoSQL ಡೇಟಾಬೇಸ್ ಅಲ್ಲ. ಪ್ರಾಥಮಿಕ ಕೀಲಿಯು ವಿಭಜನಾ ಕೀಲಿಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ (ಕೆಳಗಿನ ಉದಾಹರಣೆಯಲ್ಲಿ ಕಲಾವಿದ ಕಾಲಮ್) ಮತ್ತು ಕ್ಲಸ್ಟರಿಂಗ್ ಕಾಲಮ್ಗಳ ಒಂದು ಸೆಟ್ (ಕೆಳಗಿನ ಉದಾಹರಣೆಯಲ್ಲಿ ಸಾಂಗ್ಟೈಟಲ್ ಕಾಲಮ್). ವಿಭಜನಾ ಕೀಲಿಯು ಯಾವ ವಿಭಾಗ/ಶಾರ್ಡ್ನಲ್ಲಿ ಸಾಲನ್ನು ಇರಿಸಬೇಕು ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ, ಮತ್ತು ಕ್ಲಸ್ಟರಿಂಗ್ ಕಾಲಮ್ಗಳು ಪ್ರಸ್ತುತ ಶಾರ್ಡ್ನಲ್ಲಿ ಡೇಟಾವನ್ನು ಹೇಗೆ ಸಂಘಟಿಸಬೇಕೆಂದು ಸೂಚಿಸುತ್ತವೆ.
CREATE KEYSPACE myapp;
USE myapp;
CREATE TABLE Music (
Artist TEXT,
SongTitle TEXT,
AlbumTitle TEXT,
Year INT,
Price FLOAT,
Genre TEXT,
CriticRating FLOAT,
Tags TEXT,
PRIMARY KEY(Artist, SongTitle)
);
ಮೊಂಗೋಡಬ್ಬಿ
MongoDB ಡೇಟಾವನ್ನು ಡೇಟಾಬೇಸ್ಗಳಾಗಿ (ಡೇಟಾಬೇಸ್) ಆಯೋಜಿಸುತ್ತದೆ (ಕಸ್ಸಂದ್ರದಲ್ಲಿನ ಕೀಸ್ಪೇಸ್ನಂತೆಯೇ), ಅಲ್ಲಿ ಡಾಕ್ಯುಮೆಂಟ್ಗಳನ್ನು ಹೊಂದಿರುವ (ಟೇಬಲ್ನಲ್ಲಿನ ಸಾಲುಗಳಂತೆಯೇ) ಸಂಗ್ರಹಣೆಗಳು (ಟೇಬಲ್ಗಳಂತೆಯೇ) ಇವೆ. ಮೊಂಗೋಡಿಬಿಯಲ್ಲಿ, ಮೂಲಭೂತವಾಗಿ ಆರಂಭಿಕ ಸ್ಕೀಮಾವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. ತಂಡ "ಡೇಟಾಬೇಸ್ ಬಳಸಿ", ಕೆಳಗೆ ತೋರಿಸಲಾಗಿದೆ, ಮೊದಲ ಕರೆಯಲ್ಲಿ ಡೇಟಾಬೇಸ್ ಅನ್ನು ತ್ವರಿತಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಹೊಸದಾಗಿ ರಚಿಸಲಾದ ಡೇಟಾಬೇಸ್ಗೆ ಸಂದರ್ಭವನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ. ಸಂಗ್ರಹಣೆಗಳನ್ನು ಸಹ ಸ್ಪಷ್ಟವಾಗಿ ರಚಿಸುವ ಅಗತ್ಯವಿಲ್ಲ; ನೀವು ಹೊಸ ಸಂಗ್ರಹಕ್ಕೆ ಮೊದಲ ಡಾಕ್ಯುಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿದಾಗ ಅವುಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ರಚಿಸಲಾಗುತ್ತದೆ. MongoDB ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಪರೀಕ್ಷಾ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಬಳಸುತ್ತದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ, ಆದ್ದರಿಂದ ನಿರ್ದಿಷ್ಟ ಡೇಟಾಬೇಸ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸದೆ ಯಾವುದೇ ಸಂಗ್ರಹ-ಮಟ್ಟದ ಕಾರ್ಯಾಚರಣೆಯು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಅದರ ಮೇಲೆ ರನ್ ಆಗುತ್ತದೆ.
use myNewDatabase;
ಟೇಬಲ್ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯುವುದು
PostgreSQL
d Music
Table "public.music"
Column | Type | Collation | Nullable | Default
--------------+-----------------------+-----------+----------+--------
artist | character varying(20) | | not null |
songtitle | character varying(30) | | not null |
albumtitle | character varying(25) | | |
year | integer | | |
price | double precision | | |
genre | character varying(10) | | |
criticrating | double precision | | |
tags | text | | |
Indexes:
"music_pkey" PRIMARY KEY, btree (artist, songtitle)
ಕಸ್ಸಂದ್ರ
DESCRIBE TABLE MUSIC;
CREATE TABLE myapp.music (
artist text,
songtitle text,
albumtitle text,
year int,
price float,
genre text,
tags text,
PRIMARY KEY (artist, songtitle)
) WITH CLUSTERING ORDER BY (songtitle ASC)
AND default_time_to_live = 0
AND transactions = {'enabled': 'false'};
ಮೊಂಗೋಡಬ್ಬಿ
use myNewDatabase;
show collections;
ಕೋಷ್ಟಕದಲ್ಲಿ ಡೇಟಾವನ್ನು ನಮೂದಿಸಲಾಗುತ್ತಿದೆ
PostgreSQL
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Year, Price, Genre, CriticRating,
Tags)
VALUES(
'No One You Know', 'Call Me Today', 'Somewhat Famous',
2015, 2.14, 'Country', 7.8,
'{"Composers": ["Smith", "Jones", "Davis"],"LengthInSeconds": 214}'
);
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Price, Genre, CriticRating)
VALUES(
'No One You Know', 'My Dog Spot', 'Hey Now',
1.98, 'Country', 8.4
);
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Price, Genre)
VALUES(
'The Acme Band', 'Look Out, World', 'The Buck Starts Here',
0.99, 'Rock'
);
INSERT INTO Music
(Artist, SongTitle, AlbumTitle,
Price, Genre,
Tags)
VALUES(
'The Acme Band', 'Still In Love', 'The Buck Starts Here',
2.47, 'Rock',
'{"radioStationsPlaying": ["KHCR", "KBQX", "WTNR", "WJJH"], "tourDates": { "Seattle": "20150625", "Cleveland": "20150630"}, "rotation": Heavy}'
);
ಕಸ್ಸಂದ್ರ
ಒಟ್ಟಾರೆ ಅಭಿವ್ಯಕ್ತಿ INSERT
ಕಸ್ಸಂದ್ರದಲ್ಲಿ PostgreSQL ನಲ್ಲಿರುವಂತೆಯೇ ಕಾಣುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಶಬ್ದಾರ್ಥದಲ್ಲಿ ಒಂದು ದೊಡ್ಡ ವ್ಯತ್ಯಾಸವಿದೆ. ಕಸ್ಸಂದ್ರದಲ್ಲಿ INSERT
ವಾಸ್ತವವಾಗಿ ಒಂದು ಕಾರ್ಯಾಚರಣೆಯಾಗಿದೆ UPSERT
, ಸಾಲು ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೆ ಕೊನೆಯ ಮೌಲ್ಯಗಳನ್ನು ಸಾಲಿಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ.
ಡೇಟಾ ನಮೂದು PostgreSQL ಗೆ ಹೋಲುತ್ತದೆ
INSERT
ಹೆಚ್ಚಿನ
.
ಮೊಂಗೋಡಬ್ಬಿ
ಮೊಂಗೊಡಿಬಿಯು ಕಸ್ಸಂದ್ರದಂತಹ NoSQL ಡೇಟಾಬೇಸ್ ಆಗಿದ್ದರೂ ಸಹ, ಅದರ ಅಳವಡಿಕೆ ಕಾರ್ಯಾಚರಣೆಯು ಕಸ್ಸಂದ್ರದ ಲಾಕ್ಷಣಿಕ ನಡವಳಿಕೆಯೊಂದಿಗೆ ಯಾವುದೇ ಸಾಮಾನ್ಯತೆಯನ್ನು ಹೊಂದಿಲ್ಲ. ಮೊಂಗೋಡಿಬಿಯಲ್ಲಿ UPSERT
, ಇದು PostgreSQL ಗೆ ಹೋಲುತ್ತದೆ. ಇಲ್ಲದೆಯೇ ಡೀಫಾಲ್ಟ್ ಡೇಟಾವನ್ನು ಸೇರಿಸಲಾಗುತ್ತಿದೆ _idspecified
ಸಂಗ್ರಹಣೆಗೆ ಹೊಸ ದಾಖಲೆಯನ್ನು ಸೇರಿಸಲು ಕಾರಣವಾಗುತ್ತದೆ.
db.music.insert( {
artist: "No One You Know",
songTitle: "Call Me Today",
albumTitle: "Somewhat Famous",
year: 2015,
price: 2.14,
genre: "Country",
tags: {
Composers: ["Smith", "Jones", "Davis"],
LengthInSeconds: 214
}
}
);
db.music.insert( {
artist: "No One You Know",
songTitle: "My Dog Spot",
albumTitle: "Hey Now",
price: 1.98,
genre: "Country",
criticRating: 8.4
}
);
db.music.insert( {
artist: "The Acme Band",
songTitle: "Look Out, World",
albumTitle:"The Buck Starts Here",
price: 0.99,
genre: "Rock"
}
);
db.music.insert( {
artist: "The Acme Band",
songTitle: "Still In Love",
albumTitle:"The Buck Starts Here",
price: 2.47,
genre: "Rock",
tags: {
radioStationsPlaying:["KHCR", "KBQX", "WTNR", "WJJH"],
tourDates: {
Seattle: "20150625",
Cleveland: "20150630"
},
rotation: "Heavy"
}
}
);
ಟೇಬಲ್ ಪ್ರಶ್ನೆ
ಬಹುಶಃ SQL ಮತ್ತು NoSQL ನಡುವಿನ ಪ್ರಮುಖ ವ್ಯತ್ಯಾಸವೆಂದರೆ ಪ್ರಶ್ನೆ ನಿರ್ಮಾಣದ ವಿಷಯದಲ್ಲಿ ಬಳಸಿದ ಭಾಷೆ FROM
и WHERE
. SQL ಅಭಿವ್ಯಕ್ತಿ ನಂತರ ಅನುಮತಿಸುತ್ತದೆ FROM
ಬಹು ಕೋಷ್ಟಕಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಅದರೊಂದಿಗೆ ಅಭಿವ್ಯಕ್ತಿ WHERE
ಯಾವುದೇ ಸಂಕೀರ್ಣತೆಯನ್ನು ಹೊಂದಿರಬಹುದು (ಕಾರ್ಯಾಚರಣೆಗಳು ಸೇರಿದಂತೆ JOIN
ಕೋಷ್ಟಕಗಳ ನಡುವೆ). ಆದಾಗ್ಯೂ, NoSQL ತೀವ್ರ ಮಿತಿಯನ್ನು ಹೇರುತ್ತದೆ FROM
, ಮತ್ತು ಒಂದು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಟೇಬಲ್ನೊಂದಿಗೆ ಮಾತ್ರ ಕೆಲಸ ಮಾಡಿ, ಮತ್ತು ಇನ್ WHERE
, ಪ್ರಾಥಮಿಕ ಕೀಲಿಯನ್ನು ಯಾವಾಗಲೂ ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕು. ಇದು ನಾವು ಮೊದಲು ಮಾತನಾಡಿದ NoSQL ಕಾರ್ಯಕ್ಷಮತೆಯ ಪುಶ್ಗೆ ಸಂಬಂಧಿಸುತ್ತದೆ. ಈ ಬಯಕೆಯು ಯಾವುದೇ ಕ್ರಾಸ್-ಟ್ಯಾಬ್ಯುಲರ್ ಮತ್ತು ಕ್ರಾಸ್-ಕೀ ಪರಸ್ಪರ ಕ್ರಿಯೆಯಲ್ಲಿ ಸಂಭವನೀಯ ಕಡಿತಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ. ವಿನಂತಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುವಾಗ ಇಂಟರ್-ನೋಡ್ ಸಂವಹನದಲ್ಲಿ ಇದು ದೊಡ್ಡ ವಿಳಂಬವನ್ನು ಪರಿಚಯಿಸಬಹುದು ಮತ್ತು ಆದ್ದರಿಂದ ಸಾಮಾನ್ಯವಾಗಿ ಇದನ್ನು ಉತ್ತಮವಾಗಿ ತಪ್ಪಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಕಸ್ಸಂದ್ರಕ್ಕೆ ಪ್ರಶ್ನೆಗಳನ್ನು ಕೆಲವು ನಿರ್ವಾಹಕರಿಗೆ ಸೀಮಿತಗೊಳಿಸುವ ಅಗತ್ಯವಿದೆ (ಕೇವಲ =, IN, <, >, =>, <=
) ವಿಭಜನಾ ಕೀಲಿಗಳಲ್ಲಿ, ದ್ವಿತೀಯ ಸೂಚಿಯನ್ನು ವಿನಂತಿಸುವಾಗ ಹೊರತುಪಡಿಸಿ (ಇಲ್ಲಿ = ಆಪರೇಟರ್ ಅನ್ನು ಮಾತ್ರ ಅನುಮತಿಸಲಾಗಿದೆ).
PostgreSQL
SQL ಡೇಟಾಬೇಸ್ನಿಂದ ಸುಲಭವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಪ್ರಶ್ನೆಗಳ ಮೂರು ಉದಾಹರಣೆಗಳನ್ನು ಕೆಳಗೆ ನೀಡಲಾಗಿದೆ.
- ಕಲಾವಿದರಿಂದ ಎಲ್ಲಾ ಹಾಡುಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ;
- ಶೀರ್ಷಿಕೆಯ ಮೊದಲ ಭಾಗಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವ ಕಲಾವಿದರಿಂದ ಎಲ್ಲಾ ಹಾಡುಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ;
- ಶೀರ್ಷಿಕೆಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ಪದವನ್ನು ಹೊಂದಿರುವ ಮತ್ತು 1.00 ಕ್ಕಿಂತ ಕಡಿಮೆ ಬೆಲೆಯನ್ನು ಹೊಂದಿರುವ ಕಲಾವಿದರಿಂದ ಎಲ್ಲಾ ಹಾಡುಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ.
SELECT * FROM Music
WHERE Artist='No One You Know';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle LIKE 'Call%';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle LIKE '%Today%'
AND Price > 1.00;
ಕಸ್ಸಂದ್ರ
ಮೇಲೆ ಪಟ್ಟಿ ಮಾಡಲಾದ PostgreSQL ಪ್ರಶ್ನೆಗಳಲ್ಲಿ, ಮೊದಲನೆಯದು ಮಾತ್ರ ಕಸ್ಸಂದ್ರದಲ್ಲಿ ಬದಲಾಗದೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಆಪರೇಟರ್ LIKE
ನಂತಹ ಕ್ಲಸ್ಟರಿಂಗ್ ಕಾಲಮ್ಗಳಿಗೆ ಅನ್ವಯಿಸಲಾಗುವುದಿಲ್ಲ SongTitle
. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನಿರ್ವಾಹಕರನ್ನು ಮಾತ್ರ ಅನುಮತಿಸಲಾಗಿದೆ =
и IN
.
SELECT * FROM Music
WHERE Artist='No One You Know';
SELECT * FROM Music
WHERE Artist='No One You Know' AND SongTitle IN ('Call Me Today', 'My Dog Spot')
AND Price > 1.00;
ಮೊಂಗೋಡಬ್ಬಿ
ಹಿಂದಿನ ಉದಾಹರಣೆಗಳಲ್ಲಿ ತೋರಿಸಿರುವಂತೆ, MongoDB ನಲ್ಲಿ ಪ್ರಶ್ನೆಗಳನ್ನು ರಚಿಸುವ ಮುಖ್ಯ ವಿಧಾನವಾಗಿದೆ music
ಕೆಳಗಿನ ಉದಾಹರಣೆಯಲ್ಲಿ), ಆದ್ದರಿಂದ ಬಹು ಸಂಗ್ರಹಣೆಗಳನ್ನು ಪ್ರಶ್ನಿಸುವುದನ್ನು ನಿಷೇಧಿಸಲಾಗಿದೆ.
db.music.find( {
artist: "No One You Know"
}
);
db.music.find( {
artist: "No One You Know",
songTitle: /Call/
}
);
ಮೇಜಿನ ಎಲ್ಲಾ ಸಾಲುಗಳನ್ನು ಓದುವುದು
ಎಲ್ಲಾ ಸಾಲುಗಳನ್ನು ಓದುವುದು ನಾವು ಮೊದಲು ನೋಡಿದ ಪ್ರಶ್ನೆ ಮಾದರಿಯ ವಿಶೇಷ ಪ್ರಕರಣವಾಗಿದೆ.
PostgreSQL
SELECT *
FROM Music;
ಕಸ್ಸಂದ್ರ
ಮೇಲಿನ PostgreSQL ಉದಾಹರಣೆಯನ್ನು ಹೋಲುತ್ತದೆ.
ಮೊಂಗೋಡಬ್ಬಿ
db.music.find( {} );
ಕೋಷ್ಟಕದಲ್ಲಿ ಡೇಟಾವನ್ನು ಸಂಪಾದಿಸಲಾಗುತ್ತಿದೆ
PostgreSQL
PostgreSQL ಸೂಚನೆಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ UPDATE
ಡೇಟಾವನ್ನು ಬದಲಾಯಿಸಲು. ಆಕೆಗೆ ಅವಕಾಶಗಳಿಲ್ಲ UPSERT
, ಆದ್ದರಿಂದ ಸಾಲು ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಇಲ್ಲದಿದ್ದರೆ ಈ ಹೇಳಿಕೆಯು ವಿಫಲಗೊಳ್ಳುತ್ತದೆ.
UPDATE Music
SET Genre = 'Disco'
WHERE Artist = 'The Acme Band' AND SongTitle = 'Still In Love';
ಕಸ್ಸಂದ್ರ
ಕಸ್ಸಂದ್ರ ಹೊಂದಿದೆ UPDATE
PostgreSQL ಗೆ ಹೋಲುತ್ತದೆ. UPDATE
ಅದೇ ಶಬ್ದಾರ್ಥವನ್ನು ಹೊಂದಿದೆ UPSERT
, ಇದೇ INSERT
.
ಮೇಲಿನ PostgreSQL ಉದಾಹರಣೆಯನ್ನು ಹೋಲುತ್ತದೆ.
ಮೊಂಗೋಡಬ್ಬಿ
ಕಾರ್ಯಾಚರಣೆ UPSERT
. ಬಹು ಡಾಕ್ಯುಮೆಂಟ್ಗಳು ಮತ್ತು ಒಂದೇ ರೀತಿಯ ನಡವಳಿಕೆಯನ್ನು ನವೀಕರಿಸಲಾಗುತ್ತಿದೆ UPSERT
ಕಾರ್ಯಾಚರಣೆಗಾಗಿ ಹೆಚ್ಚುವರಿ ಫ್ಲ್ಯಾಗ್ಗಳನ್ನು ಹೊಂದಿಸುವ ಮೂಲಕ ಅನ್ವಯಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ಕೆಳಗಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಿರ್ದಿಷ್ಟ ಕಲಾವಿದನ ಪ್ರಕಾರವನ್ನು ಅವನ ಹಾಡಿನ ಆಧಾರದ ಮೇಲೆ ನವೀಕರಿಸಲಾಗುತ್ತದೆ.
db.music.update(
{"artist": "The Acme Band"},
{
$set: {
"genre": "Disco"
}
},
{"multi": true, "upsert": true}
);
ಟೇಬಲ್ನಿಂದ ಡೇಟಾವನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತಿದೆ
PostgreSQL
DELETE FROM Music
WHERE Artist = 'The Acme Band' AND SongTitle = 'Look Out, World';
ಕಸ್ಸಂದ್ರ
ಮೇಲಿನ PostgreSQL ಉದಾಹರಣೆಯನ್ನು ಹೋಲುತ್ತದೆ.
ಮೊಂಗೋಡಬ್ಬಿ
MongoDB ಡಾಕ್ಯುಮೆಂಟ್ಗಳನ್ನು ಅಳಿಸಲು ಎರಡು ರೀತಿಯ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಹೊಂದಿದೆ -
db.music.deleteMany( {
artist: "The Acme Band"
}
);
ಟೇಬಲ್ ಅನ್ನು ಅಳಿಸಲಾಗುತ್ತಿದೆ
PostgreSQL
DROP TABLE Music;
ಕಸ್ಸಂದ್ರ
ಮೇಲಿನ PostgreSQL ಉದಾಹರಣೆಯನ್ನು ಹೋಲುತ್ತದೆ.
ಮೊಂಗೋಡಬ್ಬಿ
db.music.drop();
ತೀರ್ಮಾನಕ್ಕೆ
SQL ಮತ್ತು NoSQL ನಡುವೆ ಆಯ್ಕೆ ಮಾಡುವ ಚರ್ಚೆಯು 10 ವರ್ಷಗಳಿಗೂ ಹೆಚ್ಚು ಕಾಲ ಕೆರಳಿಸುತ್ತಿದೆ. ಈ ಚರ್ಚೆಗೆ ಎರಡು ಪ್ರಮುಖ ಅಂಶಗಳಿವೆ: ಡೇಟಾಬೇಸ್ ಎಂಜಿನ್ ಆರ್ಕಿಟೆಕ್ಚರ್ (ಏಕಶಿಲೆಯ, ವಹಿವಾಟಿನ SQL ವಿರುದ್ಧ ವಿತರಣೆ, ವಹಿವಾಟು ಅಲ್ಲದ NoSQL) ಮತ್ತು ಡೇಟಾಬೇಸ್ ವಿನ್ಯಾಸ ವಿಧಾನ (SQL ನಲ್ಲಿ ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಮಾಡೆಲಿಂಗ್ ಮತ್ತು NoSQL ನಲ್ಲಿ ನಿಮ್ಮ ಪ್ರಶ್ನೆಗಳನ್ನು ಮಾಡೆಲಿಂಗ್ ಮಾಡುವುದು).
YugaByte DB ನಂತಹ ವಿತರಿಸಲಾದ ವಹಿವಾಟಿನ ಡೇಟಾಬೇಸ್ನೊಂದಿಗೆ, ಡೇಟಾಬೇಸ್ ಆರ್ಕಿಟೆಕ್ಚರ್ ಕುರಿತು ಚರ್ಚೆಯನ್ನು ಸುಲಭವಾಗಿ ವಿಶ್ರಾಂತಿ ಮಾಡಬಹುದು. ಡೇಟಾ ಸಂಪುಟಗಳು ಒಂದೇ ನೋಡ್ಗೆ ಬರೆಯುವುದಕ್ಕಿಂತ ದೊಡ್ಡದಾಗುವುದರಿಂದ, ಸ್ವಯಂಚಾಲಿತ ಶಾರ್ಡಿಂಗ್/ಮರುಸಮತೋಲನದೊಂದಿಗೆ ರೇಖೀಯ ಬರವಣಿಗೆ ಸ್ಕೇಲೆಬಿಲಿಟಿಯನ್ನು ಬೆಂಬಲಿಸುವ ಸಂಪೂರ್ಣ ವಿತರಣೆಯ ವಾಸ್ತುಶಿಲ್ಪವು ಅಗತ್ಯವಾಗುತ್ತದೆ.
ಇದಲ್ಲದೆ, ಲೇಖನವೊಂದರಲ್ಲಿ ಹೇಳಿದಂತೆ
ಡೇಟಾಬೇಸ್ ವಿನ್ಯಾಸ ಚರ್ಚೆಗೆ ಹಿಂತಿರುಗಿ, ಯಾವುದೇ ಸಂಕೀರ್ಣ ನೈಜ-ಪ್ರಪಂಚದ ಅಪ್ಲಿಕೇಶನ್ಗೆ ಎರಡೂ ವಿನ್ಯಾಸ ವಿಧಾನಗಳು (SQL ಮತ್ತು NoSQL) ಅಗತ್ಯವೆಂದು ಹೇಳುವುದು ನ್ಯಾಯೋಚಿತವಾಗಿದೆ. SQL "ಡೇಟಾ ಮಾಡೆಲಿಂಗ್" ವಿಧಾನವು ಡೆವಲಪರ್ಗಳಿಗೆ ಬದಲಾಗುತ್ತಿರುವ ವ್ಯಾಪಾರದ ಅವಶ್ಯಕತೆಗಳನ್ನು ಹೆಚ್ಚು ಸುಲಭವಾಗಿ ಪೂರೈಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ, ಆದರೆ NoSQL "ಪ್ರಶ್ನೆ ಮಾಡೆಲಿಂಗ್" ವಿಧಾನವು ಅದೇ ಡೆವಲಪರ್ಗಳಿಗೆ ಕಡಿಮೆ ಸುಪ್ತತೆ ಮತ್ತು ಹೆಚ್ಚಿನ ಥ್ರೋಪುಟ್ನೊಂದಿಗೆ ದೊಡ್ಡ ಪ್ರಮಾಣದ ಡೇಟಾದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಈ ಕಾರಣಕ್ಕಾಗಿ YugaByte DB ಒಂದು ಸಾಮಾನ್ಯ ಕೋರ್ನಲ್ಲಿ SQL ಮತ್ತು NoSQL API ಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ, ಬದಲಿಗೆ ವಿಧಾನಗಳಲ್ಲಿ ಒಂದನ್ನು ಉತ್ತೇಜಿಸುತ್ತದೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, PostgreSQL ಮತ್ತು Cassandra ಸೇರಿದಂತೆ ಜನಪ್ರಿಯ ಡೇಟಾಬೇಸ್ ಭಾಷೆಗಳೊಂದಿಗೆ ಹೊಂದಾಣಿಕೆಯನ್ನು ಒದಗಿಸುವ ಮೂಲಕ, YugaByte DB ಡೆವಲಪರ್ಗಳು ವಿತರಿಸಿದ, ಹೆಚ್ಚು ಸ್ಥಿರವಾದ ಡೇಟಾಬೇಸ್ ಎಂಜಿನ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಬೇರೆ ಭಾಷೆಯನ್ನು ಕಲಿಯಬೇಕಾಗಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
ಈ ಲೇಖನದಲ್ಲಿ, PostgreSQL, Cassandra ಮತ್ತು MongoDB ನಡುವೆ ಡೇಟಾಬೇಸ್ ವಿನ್ಯಾಸದ ಮೂಲಭೂತ ಅಂಶಗಳು ಹೇಗೆ ಭಿನ್ನವಾಗಿವೆ ಎಂಬುದನ್ನು ನಾವು ನೋಡಿದ್ದೇವೆ. ಮುಂದಿನ ಲೇಖನಗಳಲ್ಲಿ, ನಾವು ಸೂಚ್ಯಂಕಗಳು, ವಹಿವಾಟುಗಳು, ಸೇರ್ಪಡೆಗಳು, TTL ನಿರ್ದೇಶನಗಳು ಮತ್ತು JSON ದಾಖಲೆಗಳಂತಹ ಸುಧಾರಿತ ವಿನ್ಯಾಸ ಪರಿಕಲ್ಪನೆಗಳಿಗೆ ಧುಮುಕುತ್ತೇವೆ.
ವಾರಾಂತ್ಯದಲ್ಲಿ ನಿಮಗೆ ಉತ್ತಮ ವಿಶ್ರಾಂತಿಯನ್ನು ನಾವು ಬಯಸುತ್ತೇವೆ ಮತ್ತು ನಿಮ್ಮನ್ನು ಆಹ್ವಾನಿಸುತ್ತೇವೆ
ಮೂಲ: www.habr.com