{"id":390,"date":"2023-03-18T23:01:08","date_gmt":"2023-03-18T16:01:08","guid":{"rendered":"https:\/\/thietkewebdalat.net\/blog\/?p=390"},"modified":"2023-03-18T23:01:08","modified_gmt":"2023-03-18T16:01:08","slug":"su-khac-nhau-giua-sql-va-nosql","status":"publish","type":"post","link":"https:\/\/thietkewebdalat.net\/blog\/su-khac-nhau-giua-sql-va-nosql\/","title":{"rendered":"S\u1ef1 kh\u00e1c nhau gi\u1eefa SQL v\u00e0 NoSQL"},"content":{"rendered":"<p>SQL (Structured Query Language) v\u00e0 NoSQL (Not Only SQL) l\u00e0 hai lo\u1ea1i h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd c\u01a1 s\u1edf d\u1eef li\u1ec7u (DBMS) kh\u00e1c nhau v\u1ec1 c\u00e1ch th\u1ee9c l\u01b0u tr\u1eef v\u00e0 truy v\u1ea5n d\u1eef li\u1ec7u.<\/p>\n<p>SQL l\u00e0 h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd c\u01a1 s\u1edf d\u1eef li\u1ec7u quan h\u1ec7, trong \u0111\u00f3 d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef d\u01b0\u1edbi d\u1ea1ng c\u00e1c b\u1ea3ng c\u00f3 li\u00ean k\u1ebft v\u1edbi nhau th\u00f4ng qua kh\u00f3a ngo\u1ea1i. C\u00e1c b\u1ea3ng n\u00e0y c\u00f3 c\u1ea5u tr\u00fac r\u00f5 r\u00e0ng v\u00e0 \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a tr\u01b0\u1edbc. V\u00ed d\u1ee5, trong m\u1ed9t c\u01a1 s\u1edf d\u1eef li\u1ec7u SQL v\u1ec1 h\u1ec7 th\u1ed1ng \u0111\u0103ng k\u00fd h\u1ecdc t\u1eadp, c\u00f3 th\u1ec3 c\u00f3 b\u1ea3ng Sinh vi\u00ean, b\u1ea3ng M\u00f4n h\u1ecdc v\u00e0 b\u1ea3ng \u0110\u0103ng k\u00fd h\u1ecdc ph\u1ea7n. B\u1ea3ng Sinh vi\u00ean v\u00e0 b\u1ea3ng M\u00f4n h\u1ecdc s\u1ebd \u0111\u01b0\u1ee3c li\u00ean k\u1ebft v\u1edbi nhau th\u00f4ng qua kh\u00f3a ngo\u1ea1i M\u00e3 sinh vi\u00ean. Khi mu\u1ed1n t\u00ecm t\u1ea5t c\u1ea3 c\u00e1c m\u00f4n h\u1ecdc m\u00e0 m\u1ed9t sinh vi\u00ean \u0111\u00e3 \u0111\u0103ng k\u00fd, ch\u00fang ta c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng c\u00e2u truy v\u1ea5n SQL nh\u01b0 sau:<\/p>\n<pre>SELECT M\u00f4n_h\u1ecdc.* FROM M\u00f4n_h\u1ecdc \r\nINNER JOIN \u0110\u0103ng_k\u00fd_h\u1ecdc_ph\u1ea7n \r\nON M\u00f4n_h\u1ecdc.M\u00e3_m\u00f4n_h\u1ecdc = \u0110\u0103ng_k\u00fd_h\u1ecdc_ph\u1ea7n.M\u00e3_m\u00f4n_h\u1ecdc \r\nWHERE \u0110\u0103ng_k\u00fd_h\u1ecdc_ph\u1ea7n.M\u00e3_sinh_vi\u00ean = 'SV001';\r\n<\/pre>\n<p>NoSQL c\u00f3 th\u1ec3 l\u01b0u tr\u1eef nhi\u1ec1u ki\u1ec3u d\u1eef li\u1ec7u kh\u00e1c nhau, v\u00ed d\u1ee5 nh\u01b0 d\u1eef li\u1ec7u d\u1ea1ng v\u0103n b\u1ea3n, JSON ho\u1eb7c d\u1eef li\u1ec7u \u0111\u1ed3 th\u1ecb. NoSQL c\u00f3 kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng ngang, cho ph\u00e9p th\u00eam nhi\u1ec1u node v\u00e0o h\u1ec7 th\u1ed1ng \u0111\u1ec3 t\u0103ng kh\u1ea3 n\u0103ng x\u1eed l\u00fd d\u1eef li\u1ec7u. V\u00ed d\u1ee5, trong m\u1ed9t c\u01a1 s\u1edf d\u1eef li\u1ec7u NoSQL l\u01b0u tr\u1eef c\u00e1c b\u00e0i vi\u1ebft tr\u00ean m\u1ea1ng x\u00e3 h\u1ed9i, m\u1ed7i b\u00e0i vi\u1ebft c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef d\u01b0\u1edbi d\u1ea1ng JSON v\u1edbi c\u00e1c tr\u01b0\u1eddng nh\u01b0 T\u00e1c gi\u1ea3, N\u1ed9i dung v\u00e0 Th\u1eddi gian \u0111\u0103ng. Trong NoSQL, c\u00e1c tr\u01b0\u1eddng n\u00e0y c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c t\u1ea1o ra m\u1ed9t c\u00e1ch linh ho\u1ea1t m\u00e0 kh\u00f4ng c\u1ea7n ph\u1ea3i tu\u00e2n theo c\u1ea5u tr\u00fac nh\u1ea5t \u0111\u1ecbnh c\u1ee7a b\u1ea3ng. Khi mu\u1ed1n t\u00ecm t\u1ea5t c\u1ea3 c\u00e1c b\u00e0i vi\u1ebft c\u1ee7a m\u1ed9t t\u00e1c gi\u1ea3, ch\u00fang ta c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng truy v\u1ea5n NoSQL nh\u01b0 sau:<\/p>\n<pre>db.posts.find({author: 'John Doe'})\r\n\r\n<\/pre>\n<p>Tuy nhi\u00ean, NoSQL c\u0169ng c\u00f3 m\u1ed9t s\u1ed1 h\u1ea1n ch\u1ebf nh\u01b0 kh\u1ea3 n\u0103ng truy v\u1ea5n d\u1eef li\u1ec7u kh\u00f4ng hi\u1ec7u qu\u1ea3 khi d\u1eef li\u1ec7u tr\u1edf n\u00ean qu\u00e1 l\u1edbn v\u00e0 kh\u00f4ng th\u1ec3 \u0111\u1ea3m b\u1ea3o t\u00ednh to\u00e0n v\u1eb9n c\u1ee7a d\u1eef li\u1ec7u nh\u01b0 SQL.<\/p>\n<p>T\u00f3m l\u1ea1i, vi\u1ec7c l\u1ef1a ch\u1ecdn s\u1eed d\u1ee5ng SQL hay NoSQL ph\u1ee5 thu\u1ed9c v\u00e0o y\u00eau c\u1ea7u c\u1ee5 th\u1ec3 c\u1ee7a d\u1ef1 \u00e1n, s\u1ed1 l\u01b0\u1ee3ng d\u1eef li\u1ec7u, t\u1ea7n su\u1ea5t truy v\u1ea5n v\u00e0 kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng. N\u1ebfu d\u1ef1 \u00e1n \u0111\u00f2i h\u1ecfi t\u00ednh to\u00e0n v\u1eb9n v\u00e0 \u0111\u1ed9 ch\u00ednh x\u00e1c cao v\u1ec1 d\u1eef li\u1ec7u, SQL l\u00e0 s\u1ef1 l\u1ef1a ch\u1ecdn ph\u00f9 h\u1ee3p h\u01a1n. Trong khi \u0111\u00f3, n\u1ebfu d\u1ef1 \u00e1n c\u1ea7n x\u1eed l\u00fd d\u1eef li\u1ec7u l\u1edbn v\u00e0 y\u00eau c\u1ea7u t\u1ed1c \u0111\u1ed9 truy v\u1ea5n nhanh, NoSQL l\u00e0 l\u1ef1a ch\u1ecdn t\u1ed1t h\u01a1n.<\/p>\n<p>V\u00ed d\u1ee5, n\u1ebfu b\u1ea1n mu\u1ed1n x\u00e2y d\u1ef1ng m\u1ed9t trang web th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed l\u1edbn v\u1edbi h\u00e0ng tri\u1ec7u s\u1ea3n ph\u1ea9m v\u00e0 h\u00e0ng tr\u0103m ngh\u00ecn ng\u01b0\u1eddi d\u00f9ng truy c\u1eadp c\u00f9ng l\u00fac, NoSQL l\u00e0 m\u1ed9t s\u1ef1 l\u1ef1a ch\u1ecdn t\u1ed1t h\u01a1n \u0111\u1ec3 x\u1eed l\u00fd l\u01b0\u1ee3ng d\u1eef li\u1ec7u l\u1edbn v\u00e0 t\u0103ng kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng. Trong khi \u0111\u00f3, n\u1ebfu b\u1ea1n mu\u1ed1n x\u00e2y d\u1ef1ng m\u1ed9t h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd nh\u00e2n s\u1ef1 v\u1edbi t\u00ednh to\u00e0n v\u1eb9n v\u00e0 \u0111\u1ed9 ch\u00ednh x\u00e1c cao, SQL l\u00e0 s\u1ef1 l\u1ef1a ch\u1ecdn ph\u00f9 h\u1ee3p h\u01a1n.<\/p>\n<p>Tuy nhi\u00ean, c\u1ea3 SQL v\u00e0 NoSQL \u0111\u1ec1u c\u00f3 nh\u1eefng \u01b0u \u0111i\u1ec3m v\u00e0 h\u1ea1n ch\u1ebf ri\u00eang c\u1ee7a m\u00ecnh. Vi\u1ec7c hi\u1ec3u r\u00f5 nh\u1eefng kh\u00eda c\u1ea1nh n\u00e0y s\u1ebd gi\u00fap cho ng\u01b0\u1eddi s\u1eed d\u1ee5ng c\u00f3 th\u1ec3 l\u1ef1a ch\u1ecdn \u0111\u01b0\u1ee3c h\u1ec7 th\u1ed1ng ph\u00f9 h\u1ee3p v\u1edbi nhu c\u1ea7u v\u00e0 m\u1ee5c \u0111\u00edch s\u1eed d\u1ee5ng c\u1ee7a m\u00ecnh.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SQL (Structured Query Language) v\u00e0 NoSQL (Not Only SQL) l\u00e0 hai lo\u1ea1i h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd c\u01a1 s\u1edf d\u1eef li\u1ec7u (DBMS) kh\u00e1c nhau v\u1ec1 c\u00e1ch th\u1ee9c l\u01b0u tr\u1eef v\u00e0 truy v\u1ea5n d\u1eef li\u1ec7u. SQL l\u00e0 h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd c\u01a1 s\u1edf d\u1eef li\u1ec7u quan h\u1ec7, trong \u0111\u00f3 d\u1eef li\u1ec7u \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef d\u01b0\u1edbi d\u1ea1ng c\u00e1c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":391,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"amp_status":"","footnotes":""},"categories":[36,12],"tags":[],"class_list":{"0":"post-390","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-database","8":"category-sql-server"},"_links":{"self":[{"href":"https:\/\/thietkewebdalat.net\/blog\/wp-json\/wp\/v2\/posts\/390","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thietkewebdalat.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thietkewebdalat.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thietkewebdalat.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thietkewebdalat.net\/blog\/wp-json\/wp\/v2\/comments?post=390"}],"version-history":[{"count":1,"href":"https:\/\/thietkewebdalat.net\/blog\/wp-json\/wp\/v2\/posts\/390\/revisions"}],"predecessor-version":[{"id":392,"href":"https:\/\/thietkewebdalat.net\/blog\/wp-json\/wp\/v2\/posts\/390\/revisions\/392"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thietkewebdalat.net\/blog\/wp-json\/wp\/v2\/media\/391"}],"wp:attachment":[{"href":"https:\/\/thietkewebdalat.net\/blog\/wp-json\/wp\/v2\/media?parent=390"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thietkewebdalat.net\/blog\/wp-json\/wp\/v2\/categories?post=390"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thietkewebdalat.net\/blog\/wp-json\/wp\/v2\/tags?post=390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}