Sql:function Và Store Procedure (Hàm/thủ Tục) Trong Sql

--- Bài mới hơn ---

  • Sự Thống Nhất Và Khác Biệt Giữa Công Tác Kiểm Tra Và Giám Sát Của Đảng 2022
  • Sự Khác Nhau Giữa Khí Hậu Và Thời Tiết Là Gì?
  • Sự Khác Biệt Giữa Resort Và Hotel
  • Sự Khác Biệt Giữa Một Khu Nghỉ Mát Và Một Khách Sạn Là Gì?
  • Làm Thế Nào Bạn Có Thể Mô Tả Sự Khác Biệt Giữa Pháp Luật Và Đạo Đức?
  • 2. Function và Store Procedure (hàm/thủ tục)

    2.1. Function và Store Procedure là gì

    • Là đoạn chương trình kịch bản (programming scripts) với các câu lệnh SQL nhúng (embedded SQL) được lưu dưới dạng đã được biên dịch và thi hành thực tiếp bởi MySQL server.
    • SP cho phép lưu trữ các logic ứng dụng trên CSDL.

    2.2. Cú pháp

      Tạo hàm/thủ tục

      • CREATE FUNCTION name ( sqlcode
      • CREATE PROCEDURE name ( sqlcode

    Ví dụ:

    DELIMITER $$

    CREATE PROCEDURE count_people_with_age(IN age_in INT, OUT quantity INT)

    BEGIN

    SELECT *

    FROM people

    SELECT FOUND_ROWS() INTO quantity;

    END

    • DELIMITER $$: Giải phóng để cho phép sử dụng ‘;’ trong thủ tục
    • Gán giá trị cho biến
      • Sử dụng SET hoặc SELECT INTO.
      • Gọi thủ tục:
        • Call count_people_with_age (18,@people_count);
        • Select @ people _count;
      • Hiện thị thông tin
        • SHOW FUNCTION STATUS;
        • SHOW PROCEDURE STATUS;
        • SHOW FUNCTION STATUS LIKE ‘repeat%’;
        • SHOW PROCEDURE STATUS LIKE ‘film%’;
        • SHOW CREATE PROCEDURE ‘name‘;
      • Một số cấu trúc điều khiển dùng trong Hàm, thủ tục

    ;

    CASE expssion

    WHEN value1 THEN commands;

    END CASE;

    ;

    2.3. Con trỏ (cursor) trong hàm/thủ tục

    • MySQL hỗ trợ con trỏ trong hàm/thủ tục, trigger
    • Con trỏ được sử dụng để duyệt các dòng kết quả trả lại bởi truy vấn, và xử lý từng dòng riêng lẻ
    • Cú pháp Con trỏ:
      • DECLARE cursor_name CURSOR FOR SELECT_statement;
      • OPEN cursor_name;
      • Lấy ra từng dòng và chuyển tới dòng kết quả tiếp theo sử dụng lệnh FETCH
      • FETCH cursor_name INTO variable list;
      • CLOSE cursor_name;

    2.4. Xử lý lỗi thông qua Handlers

    • Luôn có khả năng hàm/thủ tục gặp lỗi trong khi thi hành các lệnh SQL. MySQL cung cấp kỹ thuật xử lý lỗi thông qua handler
    • Một handler cần định nghĩa sau khai báo các biến, con trỏ và điều kiện, nhưng trước các lệnh SQL
    • Cú pháp Handler: DECLARE type HANDLER FORcondition1, condition2, condition3, … statement;
      • condition(s): Các điều kiện mà handler sẽ được gọi : Not found, SqlException,..
      • statement: Câu lệnh sẽ thi hành khi có điều kiện xảy ra

    2.5. Ưu nhược điểm

      Ưu điểm

      • Giảm dư thừa mã chương trình: Các đoạn mã tương tự trong các ứng dụng như thêm, cập nhật có thể lưu ở phía CSDL
      • Bảo trì: Nếu có sự thay đổi trong CSDL, mã lệnh cần thay đổi có thể xác định trong các SP
      • An ninh CSDL tốt hơn: Trong các ứng dụng an ninh cao, với hàm/thủ tục có thể kiểm soát truy cập dữ liệu và đưa ra các qui định an ninh tập trung
      • Nhược điểm
          Thiếu tính khả chuyển (Lack of Portability)

    SP khó chuyển từ một DBMS sang một DBMS khác. Yêu cầu lập trình và kiểm thử lại đáng kể

    Sử dụng hàm/thủ tục nhiều có thể gây quá tải MySQL server

    Lập trình SP không phong phú như các nền tảng phát triển khác như Java hay PHP

    Lưu ý: Các phiên bản tương lai của MySQL có thể cung cấp các giao diện cho phép tạo các hàm/thủ tục sử dụng các ngôn ngữ bên ngoài, ví dụ Java

    --- Bài cũ hơn ---

  • Sự Khác Biệt Giữa Internet Và Mạng Nội Bộ 2022
  • Sự Khác Nhau Giữa Internet Và World Wide Web Là Gì? 2022
  • Sự Khác Biệt Giữa Internet Và Intranet Là Gì?
  • Intranet Là Gì ? Extranet Là Gì ? Khác Biệt Gì So Với Mạng Internet ?
  • Tuyển Tập 50 Đề Thi Chuyên Đề “đại Cương Về Kim Loại” Cực Hay Có Lời Giải Chi Tiết
  • Procedure, Function Và Package Trong Oracle Pl/sql

    --- Bài mới hơn ---

  • Sql Trigger Là Gì, Sự Khác Biệt Và Cách Thức Xử Dụng
  • Phân Biệt Visa Và Passport. Thủ Tục Làm Passport Và Visa
  • Sự Khác Biệt Giữa Visa Và Tư Cách Lưu Trú Tại Nhật Bản
  • So Sánh Sự Khác Nhau Giữa Khuôn Ép Nhựa 3 Tấm Và Khuôn Ép Nhựa 2 Tấm 2022
  • Sự Khác Biệt Giữa Suit Và Tuxedo
  • Thủ tục (Procedure) ▴

    Một nhóm các lệnh thực hiện chức năng nào đó có thể được gom lại trong một thủ tục (procedure) nhằm làm tăng khả năng xử lý,khả năng sử dụng chung,tăng tính bảo mật và an toàn dữ liệu,tiện ích trong phát triển.

    Thủ tục có thể được lưu giữ ngay trong database như một đối tượng của database, sẵn sàng cho việc tái sử dụng. Thủ tục lúc này được gọi là Store procedure. Với các Store procedure, ngay khi lưu giữ Store procedure, chúng đã được biên dịch thành dạng p-code vì thế có thể nâng cao khả năng thực hiện.

    Thủ tục không trả về giá trị trực tiếp như hàm.

    Các bước thực hiện một thủ tục:

    Ví dụ tạo một thủ tục:

    Đây là một ví dụ tạo một thủ tục đầu tiên trên PL/SQL Developer. ví dụ này sẽ là khuôn mẫu giúp bạn vừa lập trình vừa kiểm tra lỗi nếu có vấn đề xẩy ra.

    1. Tạo một thủ tục (Procedure)
    2. Biên dịch thủ tục này
    3. Chạy thủ tục
    4. Debug thủ tục bằng PL/SQL Developer để xem chương trình chạy thế nào.

    Tạo mới một thủ tục (Procedure):

    Nhập vào tên của thủ tục, các tham số sẽ được viết sau:

    Thủ tục đã được PL/SQL Developer tạo ra. Tuy nhiên bạn cần sửa lại danh sách tham số, và viết code cho thủ tục này.

    Sửa thủ tục của bạn như sau:

    Nhấn vào biểu tượng Execute

    hoặc F8 để biên dịch thủ tục. Trong trường hợp có lỗi code, PL/SQL Developer sẽ thông báo cho bạn.

    Test thủ tục trên PL/SQL Developer ▴

    Nhấn phải chuột vào thủ tục Get_Employee_Infos chọn Test:

    Nhập tham số đầu vào, ví dụ:

    Kết quả thực thi thủ tục:

    Xem trên màn hình Console:

    Test trường hợp khác với:

    Debug thủ tục trên PL/SQL Developer ▴

    Debug trên PL/SQL Developer cho phép bạn xem một thủ tục, hàm đã được chạy thế nào, theo từng lệnh. Giúp bạn dễ dàng tìm ra các vị trí phát sinh lỗi. Bạn có thể xem hướng dẫn tại:

    Hàm (Function) ▴

    Tương tự như thủ tục, hàm (function) cũng là nhóm các lệnh PL/SQL thực hiện chức năng nào đó. Khác với thủ tục, các hàm sẽ trả về một giá trị ngay tại lời gọi của nó.

    Hàm cũng có thể được lưu giữ ngay trên database dưới dạng Store procedure.

    Với việc sử dụng hàm, trong một số trường hợp bạn có thể thấy được các lợi điểm như sau:

    1. Cho phép thực hiện các thao tác phức tạp(các phép tìm kiếm, so sánh phứctạp) ngay trong mệnh đề của câu lệnh SQL mà nếu không sử dụng hàm bạn sẽ không thể nào thực hiện được
    2. Tăng tính độc lập của dữ liệu do việc phân tích và xử lý dữ liệu được thực hiện ngay trên Server thay vì trả về dữ liệu trực tiếp cho ứng dụng dưới Client để chúng tiếp tục xử lý.
    3. Tăng tính hiệu quả của câu lệnh truy vấn bằng việc gọi các hàm ngay trong câu lệnh SQL
    4. Bạn có thể sử dụng hàm để thao tác trên các kiểu dữ liệu tự tạo. Cho phép thực hiện đồng thời các câu lệnh truy vấn

    Một số hạn chế khi sử dụng hàm trong câu lệnh SQL

    1. Chỉ các hàm do người dùng định nghĩa được lưu trên database mới có thể sử dụng được cho câu lệnh SQL.
    2. Các hàm do người dùng định nghĩa chỉ được áp dụng cho điều kiện thực hiện trên các dòng dữ liệu (mệnh đề WHERE), không thể áp dụng cho các điều kiện thực hiện trên nhóm (mệnh đề GROUP).
    3. Tham số sử dụng trong hàm chỉ có thể là loại IN, không chấp nhận giá trị OUT hay giá trị IN OUT.
    4. Kiểu dữ liệu trả về của các hàm phải là kiểu dữ liệu DATE, NUMBER, NUMBER. Không cho phép hàm trả về kiểu dữ liệu như BOOLEAN, RECORD, TABLE. Kiểu dữ liệu trả về này phải tương thích với các kiểu dữ liệu bên trong Oracle Server .

    Cú pháp tạo Hàm.

    Ví dụ tạo một hàm.

    Các hàm không có tham số OUT, có thể tham gia vào câu lệnh SQL, ví dụ:

    Kết quả chạy câu lệnh SQL trên:

    Package ▴

    Package là một tập hợp các kiểu dữ liệu, biến lưu giữ giá trị và các thủ tục,hàm có cùng một mối liên hệ với nhau, được gộp chung lại. Đặc điểm nổi bật nhất của package là khi một phần tử trong package được gọi thì toàn bộ nội dung của package sẽ được nạp vào trong hệ thống. Do đó, việc gọi tới các phần tử khác trong package sau này sẽ không phải mất thời gian nạp vào hệ thống nữa. Từ đó, nâng cao tốc độ thực hiện lệnh của toàn bộ hàm, thủ tục có trong package.

    Một package được cấu trúc làm hai phần. Phần mô tả (specification) định nghĩa các giao tiếp có thể có của package với bên ngoài. Phần thân (body) là các cài đặt cho các giao tiếp có trong phần mô tả ở trên.

    Trong cấu trúc của package bao gồm 05 thành phần:

    1. Public variable (biến công cộng): là biến mà các ứng dụng bên ngoài có thể tham chiếu tới được.
    2. Public procedure (thủ tục công cộng): bao gồm các hàm, thủ tục của package có thể triệugọi từ các ứngdụngbên ngoài.
    3. Private procedure (thủ tục riêng phần): là các hàm, thủ tục có trong package và chỉ có thể được triệu gọi bởi các hàm hay thủ tục khác trong package mà thôi.
    4. Global variable (biến tổng thể): là biến được khai báo dùng trong toàn bộ package, ứng dụng bên ngoài tham chiếu được tới biến này .
    5. Private variable (biến riêng phần): là biến được khai báo trong một hàm, thủ tục thuộc package.Nó chỉ có thể được tham chiếu đến trong bản thân hàm hay thủ tục đó.
    Tạo package trên PL/SQL Developer ▴

    PL/SQL Developer giúp bạn tạo nhanh package spec & package body.

    Package đã được PL/SQL Developer tạo ra, với các gợi ý viết package được tự động sinh ra. Bạn có thể xóa hết chúng đi.

    Bạn có thể xóa hết các code tự tạo ra tự động bởi PL/SQL Developer để có một package rỗng:

    Create Or Replace Package Pkg_Emp Is

    Function Get_First_Name(p_Emp_Id Employee.Emp_Id%Type)

    Return Employee.First_Name%Type;

    Function Get_Dept_Name(p_Emp_Id Employee.Emp_Id%Type)

    Return Department.Name%Type;

    --- Bài cũ hơn ---

  • Sự Khác Nhau Giữa Pop3 Và Imap 2022
  • Sự Khác Nhau Của Imap Và Pop3
  • Sự Khác Nhau Giữa Pop3 Và Imap
  • Sự Khác Nhau Giữa Pop Và Imap Trong Thiết Lập Email
  • Có Gì Khác Nhau Về Một Con Ngựa Và Một Con Lừa?
  • Sự Khác Nhau Giữa Mysql Và Sql Server

    --- Bài mới hơn ---

  • Tìm Hiểu Sự Khác Biệt Giữa Sql Và Nosql
  • Sử Dụng Sql Hay Nosql Cho Dự Án Của Bạn?
  • Sự Khác Nhau Giữa Bồ Và Vợ
  • Sự Khác Biệt Giữa Ampe, Vôn Và Watt Là Gì?
  • Phân Biệt Sự Khác Nhau Giữa Đơn Vị Đo Công Suất W Và Va?
  • SQL ( Structured Query Language) là ngôn ngữ truy vấn cơ sở dữ liệu phổ dụng nhất hiện nay, bạn có thể dùng các lệnh SQL để truy vấn database bất kỳ do hệ quản trị database nào. SQL Server là hệ quản trị database của Microsoft, Còn MySQL là hệ quản trị database có mã nguồn mở có thể chạy trên nhiều platform như Linux, WinXP…

    2 hệ thống RDBMS nổi tiếng nhất là MySQL và SQL Server. Cả 2 đều tương tự nhau, có cùng chức năng mặc dù cách sử dụng có thể khá khác nhau. Cách vận hành khác nhau nhưng có chung gốc là SQL và Structured Query Language. Vì vậy, lập trình viên có thể không khó để xử lý giữa MySQL và SQL Server, như là cách sử dụng bảng và lưu trữ dữ liệu, primary và foreign keys, cũng như là cách dùng nhiều database trong cùng một môi trường hay cùng một server.

    MySQL và SQL Server có thể được xem là giải pháp RDBMS phổ biến nhất đang tồn tại, mặc dù Oracle và Postgres cũng đã tồn tại trên thị trường từ lâu. Kể cả khi chúng ta thấy đang có sự chuyển dịch từ SQL thành NoSQL, SQL vẫn đang là giải pháp áp đảo. Tức là đã đến lúc bạn cần phải học về 1 trong rồi đó, hoặc là MySQL, hoặc là SQL Server, đừng chần chừ nữa nếu bạn muốn trở thành một webmaster ngày nào đó.

    Được phát hành từ giữa thập niên 90s (sau đó bị thâu tóm bởi Oracle), MySQL ban đầu là một database mã nguồn mở và cũng vẫn mở cho tới tận bây giờ. Vì là mã nguồn mở, MySQL có rất nhiều phiên bản khác dựa trên nó. Sự khác biệt giữa các biến thể này là không lớn; cấu trúc và chức năng cơ bản tương đương nhau.

    Một điều đã trở thành đặc tính riêng của MySQL là nó cực kỳ phổ biến trong cộng đồng startup. Vì nó là mã nguồn mở và miễn phí, lập trình viên có thể dễ dàng bắt đầu với MySQL, và chỉnh sửa code nếu họ cần làm vậy. MySQL thường được dùng đồng thời với PHP và Apache Web Server, trên một bản Linux distribution, bộ tứ này đã trở thành một tên gọi nổi tiếng và quyền lực: LAMP ( Linux, Apache, MySQL, P HP).

    SQL Server là gì?

    SQL Server, cũng được gọi là Microsoft SQL Server, đã tồn tại thậm chí còn lâu hơn MySQL. Microsoft phát triển SQL Server từ giữa thập niên 80s, với lời hứa RDBMS cung cấp giải pháp đáng tin cậy và có thể mở rộng. Việc này trở thành đặc tính đáng giá của SQL Server cho tới tận bây giờ, vì nó là một nền tảng được-chọn cho những phần mềm doanh nghiệp cần-mở-rộng-lớn theo thời gian.

    SQL Server được lập trình viên sử dung khi dùng với .NET, đối trọng của PHP và MySQL. Cả .NET và SQL server đều được bảo vệ dưới cái tên Microsoft.

    Những khác biệt chính giữa MySQL và SQL Server

    Giờ bạn đã biết cơ bản những hệ thống này là gì, hãy xem qua những phần quan trọng của MySQL và SQL server:

    Môi trường

    Như đã nói ở trên, SQL Server hoạt động tốt với .NET, trong khi đó MySQL có thể kết hợp với mọi ngôn ngữ lập trình khác, thông thường là PHP. Cũng cần phải nói rõ là SQL Server trước đây chạy độc quyền trên Windows, nhưng giờ đã khác kể từ khi Microsoft thông báo hỗ trợ Linux cho SQL Server. Nhưng, phiên bản Linux vẫn chưa đủ tốt. Vì vậy, lời khuyên của chúng tôi vẫn là khuyên bạn nếu sử dụng Windows thì hãy dùng SQL Server, hoặc chuyển qua Linux thì hãy dùng MySQL.

    Syntax

    Đối với hầu hết mọi người, điểm này là khác biệt lớn nhất giữa 2 nền tảng. Tùy thuộc vào việc bạn quen thuộc với syntax nào, bạn nên quyết định lựa hệ thống dựa trên đó. Mặc dù MySQL và SQL đều có gốc là SQL, khác biệt về syntax là khá lớn, như ví dụ bên dưới:

    SELECT age

    FROM person

    ORDER BY age ASC LIMIT 1 OFFSET 2

    SELECT TOP 3 WITH TIES * FROM person

    ORDER BY age ASC

      SQL Server còn hơn là một RDBMS; Sự khác biệt lớn nhất giữa một phần mềm độc quyền và phần mềm mã nguồn mở là việc nó được hỗ trợ như thế nào, được hỗ trợ riêng hay không. Trong trường hợp này, lợi thế của SQL server rất rõ ràng, nó được bảo trợ bởi một tập đoàn công nghệ lớn nhất toàn cầu. Microsoft đã xây dựng nhiều công cụ mạnh mẽ cho SQL Server, hỗ trợ lớn hơn cho RDBMS, bao gồm các công cụ phân tích dữ liệu. Nó cũng có tính năng trở thành server báo cáo – SQL Server Reporting servies, cũng như là công cụ ETL. Việc này biến SQL server như trở thành một con dao Thụy Sĩ của RDBMS. Bạn cũng có thể dựng các tính năng tương tự trong MySQL, nhưng cần có giải pháp từ bên thứ 3 – vốn không phải là lý tưởng nhất cho mọi người.
      Storage engines: Sự khác biệt lớn khác nhưng không được xem trọng là MySQL và SQL Server có cách khác nhau để lưu trữ liệu. SQL server sử dụng một storage engine được phát triển bởi Microsoft, khác hoàn toàn so với nhiều loại engines được tạo ra cho MySQL. Điều này giúp lập trình viên MySQL có sự linh hoạt nhất định, vì có thể dùng nhiều storage engine khác nhau cho bảng, dựa trên tốc độ, độ tin cậy hoặc các lý do khác. Một storage engine phổ biến của MySQL là InnoDB, có thể chậm hơn nhưng ổn định hơn so với MyISAM.
      Hủy Query: Nhiều người không biết về điều này, Những khác biệt này rất lớn giữa MySQL và SQL server mà bạn cần cân nhắc. MySQL không cho phép bạn hủy query giữa chừng. Có nghĩa là khi lệnh đã được phát đi, bạn cần “cầu nguyện” là bất kỳ hư hỏng nào nó có khả năng gây ra có thể khôi phục. SQL Server, ở mặc khác, cho phép bạn hủy query giữa chừng. Việc này có thể gây tổn thất cho database admin, trái với web developer, những người thực thi query hiếm khi cần hủy query trong quá trình thực thi.

    Bảo mật

    Nhìn chung, không có nhiều khác biệt nếu so sánh giữa MySQL và SQL Server. Cả 2 đều tuân thủ EC2, có nghĩa đều là lựa chọn an toàn. Tuy nhiên, cái bóng của Microsoft cũng khá lớn ở đây, nó đã cung cấp cho SQL server những tính năng bảo mật đáng giá và mạnh mẽ. Một công cụ bảo mật riêng như – Microsoft Baseline Security Analyzer cũng giúp bạn tăng tính bảo mật cho SQL Server. Vì vậy, nếu an toàn là điều ưu tiên nhất của bạn, bạn đã biết nên chọn nền tảng nào rồi đấy.

    Chi phí

    Về mảng này khiến SQL Server trở nên lép vế nhiều so với MySQL. Microsoft cần bạn thanh toán phí license để chạy nhiều database trên SQL server. Có một phiên bản miễn phí cho SQL server, nhưng nó chỉ có nghĩa khi bạn đã làm quen với RBDMs. Ngược lại, MySQL sử dụng GNU General Public License, dĩ nhiên, hoàn toàn miễn phí. Tuy nhiên cũng nên lưu ý là nếu bạn cần trợ giúp hoặc tư vấn từ MySQL, bạn vẫn phải trả phí cho điều đó.

    Công cụ hỗ trợ

    Mặc dù đúng là bạn cần thanh toán phí hỗ trợ nếu cần đến hỗ trợ chính thức từ MySQL, khả năng này hiếm xảy ra, vì lượng người dùng MySQL và cộng đồng của nó vô cùng lớn, nên sự hỗ trợ từ cộng đồng này cũng rất lớn. Đặc quyền khi là một thành viên của cộng đồng người dùng, là bạn sẽ được trợ giúp bởi mọi người trên giới và đã có rất nhiều giải pháp cho bất kỳ vấn đề nào của bạn.

    IDES

    Điều này rất quan trọng, vì cả 2 RDMBS đều hỗ trợ công cụ Integrated Development Environment (IDE). Công cụ này tạo ra môi trường lập trình cho lập trình viên, bạn nên chọn loại phù hợp nhất cho mình. MySQL dùng Enterprise Manager của Oracle, trong khi đó SQL Server sử dụng Management Studio (SSMS). Nếu tổng hợp tất các điểm trên không giúp bạn đưa ra được quyết định thì hãy chọn dựa trên điểm này.

    Kết luận

    Chọn RDMBS là một việc làm rất quan trọng khi bắt đầu tạo ứng dụng. Mọi người thường chọn một hệ thống rồi rất hiếm khi nào thay đổi, vì vậy bạn nên đầu tư vào việc phân tích ban đầu để chọn một hệ thống phù hợp nhất.

    Lựa chọn là của bạn. Theo cách đơn giản nhất, nếu bạn đang dự định tạo một ứng dụng vừa/nhỏ và chuyên dùng PHP, hãy chọn MySQL server. Trong khi đó, nếu bạn dự định một ứng dụng lớn, bảo mật cao, cấp độ doanh nghiệp thì SQL Server sẽ nên là bạn đồng hành cùng bạn.

    --- Bài cũ hơn ---

  • Sự Khác Biệt Cơ Bản Sql Và Nosql
  • Những Điểm Khác Biệt Giữa Sql Và Nosql 2022
  • Sự Khác Nhau Giữa Thiền Định Của Phật Giáo Và Sự Cầu Nguyện Trong Kitô Giáo
  • Sự Khác Nhau Giữa Cầu Nâng 1 Trụ Ấn Độ Và Việt Nam
  • Sự Khác Nhau Giữa Run Vô Căn Và Run Do Parkinson
  • Sự Khác Nhau Giữa Sql Và Nosql Là Gì? Nosql Quan Trọng Hơn Sql?

    --- Bài mới hơn ---

  • Những Điểm Khác Biệt Giữa Sql Và Nosql
  • Quan Điểm Của Đàn Ông Về Sự Khác Nhau Giữa Bồ Và Vợ
  • Sự Khác Nhau Giữa Vợ Và Bồ Nhí
  • Sự Khác Nhau Giữa “amount” Và ” Number” Trong Tiếng Anh
  • Ampe, Von, Watt Là Gì? Sự Khác Biệt Giữa Ampe, Von, Watt
  • Cơ sở dữ liệu quan hệ:

    Đầu tiên, chúng ta phải hiểu được khái niệm về cơ sở dữ liệu quan hệ. Cơ sở dữ liệu quan hệ là những thông tin được lưu trữ dưới dạng bảng, xuất hiện vào năm 1970 từ IBM và sau đó được tiếp nhận bởi Oracle. Các cơ sở dữ liệu phổ biến có quan hệ rõ ràng là Oracle, MySQL và Postgres.

    Cơ sở dữ liệu phi quan hệ:

    Mô hình dữ liệu: cơ sở dữ liệu NoSQL cung cấp các mô hình linh hoạt giúp cập nhật CSDL dễ dàng hơn.

    Cấu trúc dữ liệu: các Dữ liệu lớn ngày nay không vận hành theo hàng và cột, tức là không có cấu trúc.

    Mô hình phát triển: NoSQL thường là nguồn mở nên không cần phải trả bất kỳ khoản phí nào.

    So sánh cơ bản giữa SQL và NoSQL:

    Tầm quan trọng của SQL? Học SQL có dễ không?

    Chúng ta đang sống trong thời đại mà dữ liệu là tài sản cực kỳ quý giá và nó là trung tâm cho việc ra quyết định trong doanh nghiệp. Bất chấp sự bùng nổ của NoSQL trong thời gian gần đây, SQL vẫn khẳng định mình là là nền tảng phổ biến nhất để phân tích dữ liệu.

    Không có gì đáng ngạc nhiên khi nói rằng SQL đặc biệt hiệu quả trong thao tác dữ liệu. Bạn có thể xem dữ liệu chính xác, cách thức kiểm tra và thao tác trên dữ liệu cũng thực hiện nhanh hơn. Nếu bạn muốn truy cập vào đa số dữ liệu trong thời đại ngày nay thì SQL là lựa chọn cho bạn.

    SQL không phải là ngôn ngữ lập trình mà là một ngôn ngữ truy vấn. Mục đích chính của SQL là cung cấp các thao tác dữ liệu dành cho những người có nhu cầu. SQL thật sự rất dễ học vì nó là một ngôn ngữ tự nhiên giống như tiếng anh vậy. Chỉ cần biết một chút tiếng Anh cơ bản thì bạn hoàn toàn có thể sử dụng tốt SQL. Hầu hết các cơ sở dữ liệu đều tương thích với SQL. Bạn có thể học và thực hành với bất cứ dữ liệu mẫu nào bạn muốn, vì chúng luôn có sẵn.

    SQL và NoSQL cái nào quan trọng hơn?

    NoSQL hoạt động tốt nhất trên các cơ sở dữ liệu phi cấu trúc. Công nghệ NoSQL chủ yếu được phát triển để xử lý các dữ liệu như Big Data chẳng hạn. Khi chúng ta tiến tới tương lai, khối lượng dữ liệu phi cấu trúc sẽ tăng lên. Do đó, NoSQL với tư cách là một ngôn ngữ truy vấn DBMS có một tương lai tươi sáng trong ngành lưu trữ. Tuy nhiên, nó sẽ không bao giờ thay thế hoàn toàn SQL, vì mục đích sử dụng của 2 thứ là khác nhau. Nếu bạn sử muốn sử dụng SQL, hãy chọn những công ty uy tín như Viryatechnologies để được hỗ trợ tốt nhất, còn nếu bạn sử dụng NoSQL thì có thể chọn những dịch vụ khác hoặc tự tìm hiểu cách NoSQL vận hành và sử dụng.

    --- Bài cũ hơn ---

  • Nước Hoa Hồng Và Tonner Khác Nhau Như Thế Nào? Liệu Bạn Đã Biết Chưa ?
  • Toner Là Gì? Sự Khác Nhau Giữa Toner Và Nước Hoa Hồng
  • Sự Khác Nhau Giữa Project Manager Và Project Leader
  • Sự Khác Nhau Giữa Leader Và Manager Là Gì, Bạn Đã Biết Chưa?
  • Phân Biệt Sự Khác Nhau Giữa Leader Và Manager Trong Doanh Nghiệp
  • Bài 6: Stored Procedure Và T

    --- Bài mới hơn ---

  • Khác Nhau Giữa Raise Và Rise
  • Cách Sử Dụng Object (Tân Ngữ) Trong Tiếng Anh.
  • Phân Biệt Cách Dùng Động Từ Say, Tell, Speak, Talk
  • Sự Khác Nhau Giữa Say Và Tell
  • Phân Biệt Giữa Báo Và Tạp Chí
  • Trong bài này chúng ta sẽ tìm hiểu một số cách import và export dữ liệu trong SQL Server. Sau đó sẽ tìm hiểu các loại Stored Procedure và Cursor trong SQL Server.

    Nội dung bài học

    Sử dụng bcp hoặc BULK INSERT để import dữ liệu

    bcp là câu lệnh được thực hiện trong cửa sổ Command Prompt dùng để import hoặc export dữ liệu từ một file dữ liệu (File Text hoặc File Excel) vào SQL Server và ngược lại.

    Các cách import khác nhau:

    • Từ một Hệ quản trị cở sở dữ liệu khác như Oracle, DB2… sang SQL Server, cách đơn giản là  export dữ liệu ra một text file sau đó import vào SQL Server dùng câu lệnh bcp.
    • Từ cùng hệ quản trị CSDL SQL Server, có thể export ra các file dạng backup hoặc file SQL rồi restore lại ở hệ quản trị CSDL kia, hoăc chuyển sang một tệp Microsoft Excel và từ file Excel này ta có thể làm đầu vào cho một chương trình khác hoặc một hệ quản trị cơ sở dữ liệu khác.

    Chúng ta cũng có thể chuyển dữ liệu vào SQL Server dùng câu lệnh BULK INSERT. Tuy nhiên BULK INSERT chỉ có thể import dữ liệu vào trong SQL Server chứ không thể export dữ liệu ra một file dữ liệu như bcp.

    Ðể có thể insert dữ liệu vào CSDL SQL Server, file dữ liệu phải có dạng bảng nghĩa là có cấu trúc hàng và cột. Chú ý khi dữ liệu được bulk copy (copy hàng loạt dùng bcp hoặc BULK INSERT) vào một table trong SQL Server thì table đó phải tồn tại và dữ liệu được thêm vào những dữ liệu đã tồn tại trước (append). Ngược lại khi export data ra một data file thì một file mới sẽ được tạo ra hoặc data file sẽ bị overwrite nếu nó tồn tại.

    Cú pháp đầy đủ của lệnh bcp có thể xem SQL Server Books Online.

    Ví dụ 1: Giả sử bạn muốn export dữ liệu từ bảng KhachHang trong QLKhachHang (đây là database được tạo ra trong bài tập số 1  ) ra một text file trong đó các cột được phân cách bằng dấu “;”. Bạn có thể làm như sau: mở DOS command prompt và đánh vào dòng lệnh sau:

    bcp QLKhachHang.KhachHang out c:KhachHang.txt -c –T –t;

    Trong ví dụ trên ta thực hiện câu lệnh bcp để copy bảng KhachHang ra một file text trong đó :

    out: tham số này để xuất dữ liệu từ table hay view ra một file (c:KhachHang.txt). Ngược lại ta có thể tham số in để import dữ liệu từ file text vào SQL Server.

    -c: thực thi các thao tác sử dụng kiểu dữ liệu ký tự (char) (nếu không chỉ rõ thì SQL Server sử dụng mặc định là kiểu char, sẽ dùng “TAB” character (t) để phân định các cột và dùng new line character (n) để phân định các hàng).

    -t;: dấu “;” đi sau switch “t” cho biết ta muốn dùng “;” để tách các cột (nếu không sẽ dùng giá trị mặc định như trên)

    -T: sử dụng Trust connection để kết nối với database, tức là sử dụng tài khoản đăng nhập của Windows để sử dụng SQL Server. Nếu không sử dụng tham số này thì cần chỉ định hai tham số –U và –P cho tên đăng nhập và mật khẩu của SQL Server để đăng nhập.

    Ví dụ 2: Thay vì copy toàn bộ table ta có thể dùng query để select một phần dữ liệu và export ra file text như sau:

    bcp "Select * From QLKhachHang.KhachHang" queryout c:KhachHang.txt -c -S TienPT -U sa -P abc

    Trong ví dụ này ta Select toàn bộ dữ liệu trong Orders table ra một text file dùng query và SQL Server authentication.

    queryout : cho biết đây là một query chứ không phải là table.

    -S : tên của SQL Server (hay tên của một Instance)

    -U : tên người dùng để đăng nhập SQL Server

    -P : mật khẩu để đăng nhập

    Ví dụ 3 : dùng BULK INSERT để copy dữ liệu từ file text vào CSDL SQL Server. Mở New Query (vì BULK INSERT là một câu lệnh T-SQL chứ không phải thực hiện trên cửa sổ Command Prompt) và đánh vào các dòng sau :

    BULK INSERT QLKhachHang.KhachHang FROM 'c:KhachHang.txt ' WITH (DATAFILETYPE = 'CHAR')

    Trong ví dụ trên DATAFILETYPE= ‘CHAR’ cho biết dữ liệu được chứa dạng kiểu dữ liệu Char. Nêú muốn dùng kiểu dữ liệu dạng unicode thì dùng ‘WIDECHAR’

    Chú ý: Các câu lệnh bcp phân biệt chữa hoa chữ thường.

    Truy vấn phân tán

    Ðôi khi chúng ta muốn select dữ liệu từ những hệ quản trị CSDL khác như MS Access, Oracle, DB2… hay thậm chí từ một SQL Server khác thì ta cần phải dùng truy vấn phân tán (distributed query). SQL Server sẽ dùng kỹ thuật OLEDB và các API để chuyển các truy vấn này tới các hệ quản trị CSDL khác. Có 2 cách để truy cập vào các hệ quản trị CSDL này là dùng LINKED SERVERAd Hoc Computer Name.

    Linked Server

    Linked Server là một server ảo được dùng để truy cập vào các hệ cơ sở dữ liệu khác. Một khi đã setup thì ta có thể query data dùng four-part name : linked_server_name.catalog.schema.object_name . Trong đó catalog thường tương đương với database name, Schema tương đương với database owner và object_name tương đương với table hay view.

    Ví dụ: Giả sử ta setup một Linked Server vào Access database “QLKhachHang.mdb” trong đó các table đều tương tự như CSDL QLKhachHang trong SQL Server (được tạo ra từ  bài tập số 1).

    Ta sẽ có Linked Server tên LinkedQLKhachHang xuất hiện dưới phần Server Objects/Linked Servers. Giả sử ta muốn select dữ liệu  từ Linked Server này ta có thể dùng câu truy vấn như sau:

    Select * From LinkedQLKhachHang...KhachHang

    Trong ví dụ trên ta dùng tên của Linked Server và theo sau là ba chấm (vì để truy cập vào database ta phải dùng four-part name nhưng trong trường hợp này ta dùng default value nên không cần cho biết tên của Catalog và Schema nhưng phải dùng dấu chấm để phân biệt từng phần).

    Ngoài cách trên ta có thể dùng pass-through query với OPENQUERY function như sau:

    Select * from OPENQUERY(LinkedPracticeDB,'Select * from Customers')

    Trong ví dụ trên ta thấy function OPENQUERY sẽ trả về một data set và có thể nằm sau keyword FROM như một table. Khi dùng OPENQUERY function ta cần cho biết tên của Linked Server và query mà ta muốn thực hiện.

    Lưu ý: function trong SQL Server được dùng tương tự như là stored procedure.

    Ad Hoc Computer Name

    Ngoài cách dùng Linked Server như đã trình bày ở trên ta có thể dùng ad hoc computer name (ad hoc nghĩa là lâm thời, tạm thời). Nghĩa là đối với những database system mà ta thường xuyên query thì dùng Linked Server còn đối với những query lâu lâu mới dùng đến thì ta có thể select data bằng OPENROWSET hay OPENDATASOURCE functions

    Ví dụ: ta cũng sẽ select data từ Access database như trên dùng OPENROWSET

    Select * from OPENROWSET('Microsoft.jet.oledb.4.0','C:PracticeDB.mdb'; 'admin'; '', Customers)

    Trong ví dụ trên khi dùng OPENROWSET ta cần phải đưa vào tất cả những thông tin cần thiết để connect vào database như tên của Provider, vị trí của file, username, password (trường hợp này không có password) và tên của table mà ta muốn select. Mỗi lần ta thực thi câu lệnh trên SQL Server đều kiểm tra security trong khi đó nếu dùng Linked Server thì chỉ kiểm ta một lần mà thôi. OPENROWSET tương tự như OPENQUERY ở chỗ nó trả về một rowset và có thể đặt vào vị trí của một table trong câu lệnh query.

    Ngoài cách dùng trên ta cũng có thể dùng OPENDATASOURCE để query như sau:

    Select * from OPENDATASOURCE('Microsoft.jet.oledb.4.0','Data Source = C:PracticeDB.mdb; User ID = Admin; Password = ') ...Customers

    Trong ví dụ trên ta thấy OPENDATASOURCE trả về một phần của four-part name (nghĩa là tương đương với tên của Linked Server) cho nên ta phải dùng thêm ba dấu chấm.

    Cursor

    Nếu giải thích một cách ngắn gọn thì cursor tương tự như recordset hay dataset trong lập trình. Nghĩa là ta select một số data vào memory sau đó có thể lần lượt làm việc với từng record bằng cách Move Next…

    Có 3 loại cursors là Transact-SQL Cursor, API Cursors và Client Cursors. Trong đó Transact-SQL và API thuộc loại Server Cursors nghĩa là cursors được load lên và làm việc bên phía server. Trong khuôn khổ bài học này ta chỉ nghiên cứu Transact-SQL cursors.

    Transact-SQL cursors được tạo ra trên server bằng các câu lệnh Transact-SQL và chủ yếu được dùng trong stored procedures và triggers. Trước hết hãy xem qua một ví dụ về cursor:

    DECLARE @au_lname varchar(40), @au_fname varchar(20) DECLARE Employee_Cursor CURSOR FOR SELECT LastName, FirstName FROM Northwind.dbo.Employees OPEN Employee_Cursor FETCH NEXT FROM Employee_Cursor INTO @au_lname, @au_fname WHILE @@FETCH_STATUS = 0 BEGIN PRINT 'Author:' + @au_fname + ' ' + @au_lname FETCH NEXT FROM Employee_Cursor INTO @au_lname, @au_fname END CLOSE Employee_Cursor DEALLOCATE Employee_Cursor

    Trong ví dụ ở trên ta sẽ select LastName và FirstName từ Employees table của Northwind database và load vào Employee_Cursor sau đó lần lượt in tên của các employee ra màn hình. Ðể làm việc với một cursor ta cần theo các bước sau:

    1. Dùng câu lệnh DECLARE CURSOR để khai báo một cursor. Khi khai báo ta cũng phải cho biết câu lệnh SELECTsẽ được thực hiện để lấy data.
    2. Dùng câu lệnh OPEN để đưa data lên memory (populate data). Ðây chính là lúc thực hiện câu lệnh SELECT vốn được khai báo ở trên.
    3. Dùng câu lệnh FETCH để lấy từng hàng data từ record set. Cụ thể là ta phải gọi câu lệnh FETCH nhiều lần. FETCH tương tự như lệnh Move trong ADO recordset ở chỗ nó có thể di chuyển tới lui bằng câu lệnh FETCH FIRST, FETCH NEXT, FETCH PRIOR, FETCH LAST, FETCH ABSOLUTE n, FETCH RELATIVE n nhưng khác ở chỗ là nó lấy data bỏ vào trong variable (FETCH…FROM…INTO variable_name). Thông thường ta FETCH data trước sau đó loop cho tới record cuối của Cursor bằng vòng lặp WHILE bằng cách kiểm tra global variable @@FETCH_STATUS (=0 nghĩa là thành công).
    4. Khi ta viếng thăm từng record ta có thể UPDATE hay DELETE tùy theo nhu cầu (trong thí dụ này chỉ dùng lệnh PRINT)
    5. Dùng câu lệnh CLOSE để đóng cursor. Một số tài nguyên (memory resource) sẽ được giải phóng nhưng cursor vẫn còn được khai báo và có thể OPEN trở lại.
    6. Dùng câu lệnh DEALLOCATE để phóng thích hoàn toàn các tài nguyên dành cho cursor (kể cả tên của cursor).

    Lưu ý là trong ví dụ ở trên trước khi dùng Cursor ta cũng declare một số variable (@au_fname và @au_lname) để chứa các giá trị lấy được từ cursor. Bạn có thể dùng Query Analyzer để chạy thử ví dụ trên.

    Stored Procedures

    Trong những bài học trước đây khi dùng Query Analyzer chúng ta có thể đặt tên và save các nhóm câu lệnh SQL vào một file dưới dạng script để có thể sử dụng trở lại sau này. Tuy nhiên thay vì save vào text file ta có thể save vào trong SQL Server dưới dạng Stored Procedure. Stored Procedure là một nhóm câu lệnh Transact-SQL đã được compiled (biên dịch) và chứa trong SQL Server dưới một tên nào đó và được xử lý như một đơn vị (chứ không phải nhiều câu SQL riêng lẻ).

    Ưu Ðiểm Của Stored Procedure

    Stored Procedure có một số ưu điểm chính như sau:

    • Performance : Khi thực thi một câu lệnh SQL thì SQL Server phải kiểm tra permission xem user gởi câu lệnh đó có được phép thực hiện câu lệnh hay không đồng thời kiểm tra cú pháp rồi mới tạo ra một execute plan và thực thi. Nếu có nhiều câu lệnh như vậy gởi qua network có thể làm giảm đi tốc độ làm việc của server. SQL Server sẽ làm việc hiệu quả hơn nếu dùng stored procedure vì người gởi chỉ gởi một câu lệnh đơn và SQL Server chỉ kiểm tra một lần sau đó tạo ra một execute plan và thực thi. Nếu stored procedure được gọi nhiều lần thì execute plan có thể được sử dụng lại nên sẽ làm việc nhanh hơn. Ngoài ra cú pháp của các câu lệnh SQL đã được SQL Sever kiểm tra trước khi save nên nó không cần kiểm lại khi thực thi.
    • Programming Framework : Một khi stored procedure được tạo ra nó có thể được sử dụng lại. Ðiều này sẽ làm cho việc bảo trì (maintainability) dễ dàng hơn do việc tách rời giữa business rules (tức là những logic thể hiện bên trong stored procedure) và database. Ví dụ nếu có một sự thay đổi nào đó về mặt logic thì ta chỉ việc thay đổi code bên trong stored procedure mà thôi. Những ứng dụng dùng stored procedure này có thể sẽ không cần phải thay đổi mà vẫn tương thích với business rule mới. Cũng giống như các ngôn ngữ lập trình khác stored procedure cho phép ta đưa vào các input parameters (tham số) và trả về các output parameters đồng thời nó cũng có khả năng gọi các stored procedure khác.
    • Security : Giả sử chúng ta muốn giới hạn việc truy xuất dữ liệu trực tiếp của một user nào đó vào một số tables, ta có thể viết một stored procedure để truy xuất dữ liệu và chỉ cho phép user đó được sử dụng stored procedure đã viết sẵn mà thôi chứ không thể “đụng” đến các tables đó một cách trực tiếp. Ngoài ra stored procedure có thể được encrypt (mã hóa) để tăng cường tính bảo mật.

    Các Loại Stored Procedure

    Stored procedure có thể được chia thành 5 nhóm như sau:

    • Local Stored Procedure : Ðây là loại thường dùng nhất. Chúng được chứa trong user database và thường được viết để thực hiện một công việc nào đó. Thông thường người ta nói đến stored procedure là nói đến loại này. Local stored procedure thường được viết bởi DBA hoặc programmer. Chúng ta sẽ bàn về cách tạo stored prcedure loại này trong phần kế tiếp.
    • Temporary Stored Procedure : Là những stored procedure tương tự như local stored procedure nhưng chỉ tồn tại cho đến khi connection đã tạo ra chúng bị đóng lại hoặc SQL Server shutdown. Các stored procedure này được tạo ra trên TempDB của SQL Server nên chúng sẽ bị delete khi connection tạo ra chúng bị cắt đứt hay khi SQL Server down. Temporary stored procedure được chia làm 3 loại : local (bắt đầu bằng #), global (bắt đầu bằng ##) và stored procedure được tạo ra trực tiếp trên TempDB. Loại local chỉ được sử dụng bởi connection đã tạo ra chúng và bị xóa khi disconnect, còn loại global có thể được sử dụng bởi bất kỳ connection nào. Permission cho loại global là dành cho mọi người (public) và không thể thay đổi. Loại stored procedure được tạo trực tiếp trên TempDB khác với 2 loại trên ở chỗ ta có thể set permission, chúng tồn tại kể cả sau khi connection tạo ra chúng bị cắt đứt và chỉ biến mất khi SQL Server shut down.
      1. Extended Stored Procedure : Ðây là một loại stored procedure sử dụng một chương trình ngoại vi (external program) vốn được compiled thành một DLL để mở rộng chức năng hoạt động của SQL Server. Loại này thường bắt đầu bằng tiếp đầu ngữ xp_ .Ví dụ,

        xp_sendmail

        dùng đề gởi mail cho một người nào đó hay

        xp_cmdshell

        dùng để chạy một DOS command… Ví dụ

        xp_cmdshell ‘dir c:’ .

        Nhiều loại extend stored procedure được xem như system stored procedure và ngược lại.

    • Remote Stored Procedure : Những stored procedure gọi stored procedure ở server khác.

    Viết Stored Procedure

    CREATE PROCEDURE AddNewOrder @OrderID smallint, @ProductName varchar(50), @CustomerName varchar(50), @Result smallint=1 Output AS DECLARE @CustomerID smallint BEGIN TRANSACTION If not Exists(SELECT CustomerID FROM Customers WHERE WHERE [email protected]) --This order exists and could not be added any more so Roll back BEGIN SELECT @Result=1 ROLLBACK TRANSACTION END Else --This is a new order insert it now BEGIN INSERT INTO WHERE [email protected]) --This order exists and could not be added any more so Roll back BEGIN SELECT @Result=1 ROLLBACK TRANSACTION END Else --This is a new order insert it now BEGIN INSERT INTO [Orders](OrderID,ProductName,CustomerID) VALUES(@OrderID,@ProductName,@CustomerID) SELECT @Result=0 COMMIT TRANSACTION END END Print @Result Return

    Ðể tạo ra một stored procedure ta dùng lệnh CREATE PROCEDURE theo sau là tên của nó (nếu là stored procedure tạm thời thì thêm dấu # trước tên của procedure. Nếu muốn encrypt thì dùng WITH ENCRYPTION trước chữ AS) và các biến input hoặc ouput (parameters). Nếu là output thì thêm keyword OUTPUT đằng sau parameter. Ta có thể cho giá trị default cùng lúc với khai báo data type của parameter. Kể từ sau chữ AS là phần body của stored procedure.

    Trong ví dụ ở trên trước hết ta khai báo một biến @CustomerID sau đó bắt đầu một transaction bằng BEGIN TRANSACTION (toàn bộ công việc insert này được thực hiện trong một Transaction nghĩa là hoặc là insert thành công hoặc là không làm gì cả – all or nothing). Trước hết ta kiểm tra xem người khách hàng là người mới hay cũ. Nếu là người mới thì ta “tiện tay” insert vào bảng Customers luôn còn nếu không thì chỉ insert vào bảng Orders mà thôi. Nếu là người customer mới ta lấy CustomerID lớn nhất từ bảng Customers bỏ vào biến @CustomerID và sau đó tăng lên một đơn vị dùng cho việc Insert Customer ở dòng kế tiếp.

    Sau khi insert khách hàng mới mới ta tiếp tục công việc bằng việc kiểm tra xem Order muốn insert đã tồn tại chưa (vì nếu order đã tồn tại thì khi insert SQL Server sẽ báo lỗi do OrderID là Primary key). Nếu như order trên vì lý do nào đó đã có trong DB thì ta roll back và trả kết quả =1 còn nếu không thì ta insert một order mới vào và commit transaction với kết quả trả về =0.

    Tương tự như vậy nếu khách hàng đã tồn tại (sau chữ else đầu tiên) thì ta chỉ việc insert order giống như trên. Trong mọi trường hợp kể trên ta đều in ra kết quả và return.

    Muốn hiểu rõ hơn về bài học này bạn cần làm bài tập số 2.

    Kết luận

    Trong bài này chúng ta đã tìm hiểu một số kỹ thuật import và export dữ liệu . Ðồng thời biết qua các cách select dữ liệu từ các hệ thống cơ sở dữ liệu khác dùng truy vấn phân tán (distributed query). Nhưng quan trọng nhất và thường dùng nhất là các stored procedure. Bạn cần hiểu rõ vai trò của stored procedure và biết cách tạo ra chúng.

    Tham khảo

    --- Bài cũ hơn ---

  • Giao Thức Nào Tốt Nhất Dành Cho Email?
  • Tìm Hiểu Hươu Và Nai Khác Gì Nhau
  • Sự Khác Biệt Giữa Người Giàu Và Nghèo Khi Nghĩ Về Giàu Có Và Tiền Bạc
  • Công Ty Điện Lực Trà Vinh
  • Con Nhà Giàu Và Con Nhà Nghèo Khác Nhau Ở Điểm Nào? Phân Tích Từ Góc Độ Giáo Dục
  • Phân Biệt Điểm Khác Nhau Giữa Sql Và Nosql

    --- Bài mới hơn ---

  • So Sánh Sql Và Nosql – Hai Loại Hình Cơ Sở Dữ Liệu Phổ Biến Nhất
  • Điểm Khác Biệt Giữa Ampe, Vôn Và Watt Là Gì?
  • Các Khái Niệm Liên Quan Đến Điện Mặt Trời: Công Suất Là Gì?
  • 9 Ưu Điểm Tạo Nên Sự Khác Biệt Ở Bài Oracle
  • Sự Khác Nhau Giữa Bộ Bài Tarot Và Oracle
  • ISBN

    :

    9780992461225

    ,

    title

    :

    “JavaScript: Novice to Ninja”

    ,

    author

    :

    “Darren Jones”

    ,

    format

    :

    “ebook”

    ,

    price

    :

    29.00

    }

    Các tài liệu giống nhau có thể được lưu trữ trong một collection, tương tự như bảng SQL. Tuy nhiên, bạn có thể lưu trữ bất kỳ dữ liệu nào bạn thích trong bất kỳ tài liệu nào; cơ sở dữ liệu NoSQL sẽ không phàn nàn. Ví dụ:

    {

    ISBN

    :

    9780992461225

    ,

    title

    :

    "JavaScript: Novice to Ninja"

    ,

    author

    :

    "Darren Jones"

    ,

    year

    :

    2014

    ,

    format

    :

    "ebook"

    ,

    price

    :

    29.00

    ,

    description

    :

    "Learn JavaScript from scratch!"

    ,

    rating

    :

    "5/5"

    ,

    review

    :

    )

    ;

    Đây gọi là aggregation: một bộ document mới được tính toán từ bộ gốc.

    Xóa tất cả sách SitePoint

    DELETE

    FROM

    book

    WHERE

    publisher_id

    =

    'SP001'

    ;

    db

    .

    book

    .

    remove

    (

    {

    "publisher.name"

    :

    "SitePoint"

    --- Bài cũ hơn ---

  • Sự Khác Biệt Giữa Nhu Cầu Và Số Lượng Nhu Cầu (Với Biểu Đồ So Sánh)
  • Những Điểm Khác Nhau Giữa Mong Muốn Và Nhu Cầu
  • Nhu Cầu Là Gì? Phân Biệt Nhu Cầu, Mong Muốn Và Cầu Thị Trường
  • Nước Hoa Hồng Và Toner Có Giống Nhau Không ?
  • Toner Là Gì? Sự Khác Nhau Giữa Toner Và Nước Hoa Hồng? Toner Có Phải Nước Hoa Hồng Không?
  • 11 Điểm Khác Nhau Giữa Postgresql Và Sql Server

    --- Bài mới hơn ---

  • So Sánh Các Flycam Mavic 2 Và 1 Series
  • So Sánh, Đánh Giá Chi Tiết Nhất Về Mavic 2 Pro/zoom Và Phantom 4 Pro
  • So Sánh Chi Tiết Giá Nhà Đất Tp Hồ Chí Minh Và Hà Nội Hiện Nay
  • So Sánh Microsoft 365 Và Office 365
  • Mitsubishi Outlander Và Honda Cr
  • 1. Mô hình

    • PostgreSQL

      : là hệ thống quản lý cơ sở dữ liệu quan hệ mã nguồn mở và miễn phí, được duy trì bởi PostgreSQL Global Development Group và cộng đồng phát triển của nó.

    • SQL Server

      : là hệ thống quản lý cơ sở dữ liệu phục vụ cho thương mại, được xây dựng và bảo trì bởi Microsoft.

    2. Hệ điều hành máy chủ được hỗ trợ

    • PostgreSQL được sử dụng khá phổ biến. Nó có sẵn rộng rãi trên nhiều hệ điều hành: FreeBSD, HP-UX, Linux, NetBSD, OpenBSD, OS X, Solaris, Unix, Windows.

    • SQL Server

      được giới hạn trong Windows và gần đây là Linux.

    3. Thủ tục lưu trữ

    • PostgreSQL sử dụng bằng ngôn ngữ độc quyền PL / pgSQL hoặc với các ngôn ngữ phổ biến như Perl, Python, Tcl, v.v.

    • SQL Server sử dụng ngôn ngữ Transact SQL và .NET.

    4. Phương pháp phân vùng

    • PostgreSQL: phân vùng khai báo (theo phạm vi hoặc theo danh sách) kể từ PostgreSQL 10.0.

    • SQL Server: các bảng có thể được phân phối trên một số tệp (phân vùng ngang); bảo vệ thông qua liên đoàn.

    5. Sự cạnh tranh

    • PostgreSQL có một hệ thống quản lý đồng thời tốt hơn. Nó xử lý rất tốt trường hợp nhiều quá trình có thể truy cập và sửa đổi dữ liệu được chia sẻ cùng một lúc.

    • Mặt khác, SQL Server không có khả năng cạnh tranh cao và bạn có thể dễ dàng nhận được qua các báo cáo bị khóa, bị chặn và bị khóa trong nhật ký. Do đó, hiệu suất của cơ sở dữ liệu, cũng như ứng dụng, sẽ chậm hơn.

    6. Khả năng mở rộng

    Tính năng mở rộng phụ thuộc trực tiếp vào khả năng nén dữ liệu.

    • SQL Server cung cấp nén ngoài hộp nhưng bạn phải thực hiện thủ công.

    • Mặt khác, PostgreSQL cung cấp miễn phí và toàn bộ quá trình là tự động.

    7. Khả năng viết kịch bản

    • PostgreSQL có thể được điều khiển hoàn toàn từ dòng lệnh.

    • SQL Server được điều khiển nhiều hơn thông qua GUI.

    8. Hệ thống sao chép

    SQL Server hỗ trợ sao chép nhanh, sao chép giao dịch, sao chép hợp nhất. PostgreSQL sử dụng bản sao chính-nô lệ.

    9. Khả năng trong bộ nhớ

    SQL Server có  bộ nhớ còn trong khi Postgres thì không có bộ nhớ

    10. Cài đặt và cập nhật

    • Cài đặt PostgreSQL đôi khi dễ dàng như gõ một lệnh, như thế này:

    sudo apt-get install postgresql

    11. Tình trạng cập nhật

    • SQL Server phát hành phiên bản mới sau một vài năm.

    • PostgreSQL thường xuyên cập nhật phiên bản mới.

    --- Bài cũ hơn ---

  • Postgresql Và Mysql, Một So Sánh
  • Điều Gì Làm Cho Postgresql Hơn Các Cơ Sở Dữ Liệu Sql Mã Nguồn Mở Khác?
  • Ưu Nhược Điểm Của Mongodb, Khi Nào Nên Dùng Mongodb
  • Mongodb Và Mysql Cơ Sở Dữ Liệu Nào Tốt Hơn ?
  • So Sánh Mazda 2 Và Hyundai Accent – Cuộc Chiến Của Dòng Xe Sedan Hạng B
  • Sự Khác Nhau Giữa Getdate(), Sysdatetime() Với Getutcdate() Và Cách So Sánh Date Trong Sql Server

    --- Bài mới hơn ---

  • So Sánh Hyundai Elantra Và Kia Cerato 2022
  • So Sánh Hyundai Elantra 2022 Và Kia Cerato 2022 Phiên Bản Cao Cấp
  • Nên Mua Xe Hyundai Elantra Sport 2022 Hay Kia Cerato Premium 2022 ?
  • So Sánh Hai Dòng Xe Hyundai Elantra 2022 Và Kia Cerato 2022
  • Đại Học Quốc Gia Hà Nội
  • Vì cả 2 hàm GETDATE và GETUTCDATE đều trả về kiểu giá trị DATETIME, nên sự khác nhau giữa SYSDATETIME() và GETUTCDATE() cũng giống như SYSDATETIME() và GETDATE(). Hàm trước trả về kiểu giá trị DATETIME2 với thời gian địa phương, trong khi đó hàm sau trả về kiểu giá trị DATETIME và dạng UTC.

    SELECT GETDATE() AS LOCAL_TIME; LOCAL_TIME 2022-12-17 02:57:06.593 SELECT GETUTCDATE() AS UTC_TIME; UTC_TIME 2022-12-17 19:57:06.597 SELECT SYSDATETIME() AS CURRENT_DATE_TIME; CURRENT_DATE_TIME 2022-12-17 02:57:06.6151778

    Việc sử dụng ngày tháng ở trong một câu SQL Server query sẽ rất là phức tạp nhất là nếu bạn không có một kiến thức tốt về cách mà kiểu dữ liệu DateTime hoạt động trong SQL Server. Ví dụ, một trong các câu hỏi thường được hỏi nhất khi phỏng vấn về các câu truy vấn SQL là ” Hãy select ra các bản ghi có date là 20221007?” hay một ngày cụ thể nào khác. Vậy bạn sẽ thực hiện nó như nào? Và theo bạn liệu câu truy vấn SQL sau sẽ hoạt động đúng như bạn yêu cầu không?

    select * from table where date = '20151007'

    Câu trả lời là có thể có hoặc không, nó hoàn toàn phụ thuộc vào dữ liệu trong bảng của bạn. Khi bạn chỉ cung cấp phần ngày tháng trong kiểu dữ liệu DateTime, nó đặt phần giờ thành 00:00:00.000.

    Vậy nếu bạn có bất kì bản ghi nào có cùng ngày tháng nhưng khác phần thời gian thì câu truy vấn trên sẽ không hoạt động. Ví dụ, nếu bạn có bảng Order và có 2 đơn đặt hàng, một với order_date = '20151007' và cái còn lại có order_date = '20151007:01:00:00:000', thì câu truy vấn trên sẽ chỉ trả về đơn đặt hàng đầu tiên. Bài viết sẽ giải thích chi tiết hơn về cách tìm các bản ghi giữa các ngày tháng trong SQL Server.

    Có rất nhiều các lập trình viên khi sử dụng SQL Server ít khi chú ý đến kiểu dữ liệu của cột ngày tháng như order_date, trade_date, created_date v.v… và rất nhiều người không biết cách mà SQL server sẽ so sánh các điều kiện với dữ liệu trong cột.

    1. Câu truy vấn so sánh ngày tháng trong SQL

    IF OBJECT_ID( 'tempdb..#Course' ) IS NOT NULL DROP TABLE #Course; CREATE TABLE #Course (course_name varchar(10), course_date datetime); INSERT INTO #Course VALUES ('Java', '2015-10-06 11:16:10.496'); INSERT INTO #Course VALUES ('MySQL', '2015-10-07 00:00:00.000'); INSERT INTO #Course VALUES ('SQL SERVER', '2015-10-07 11:26:10.193' ); INSERT INTO #Course VALUES ('PostgreSQL', '2015-10-07 12:36:10.393'); INSERT INTO #Course VALUES ('Oracle', '2015-10-08 00:00:00.000');

    'MySQL', '2015-10-07 00:00:00.000' 'SQL SERVER', '2015-10-07 11:26:10.193' 'PostgreSQL', '2015-10-07 12:36:10.393'

    Nếu bạn chỉ so sánh các giá trị thông qua toán tử = và chỉ cung cấp mỗi phần ngày tháng, thì bạn sẽ chỉ được các bản ghi có phần thời gian là 0 vì SQL sẽ chỉ định phần thời gian là 00:00:00.000, như được thấy ở ví dụ sau:

    SELECT * FROM #Course WHERE course_date = '2015-10-07' course_name course_date MySQL 2022-10-07 00:00:00.000

    Như bạn thấy chỉ có 1 bản ghi được trả về, bản ghi có phần thời gian là 0, SQL sẽ không trả về 2 bản ghi còn lại có thời gian khác 0.

    2. Giải pháp sử dụng so sánh ngày tháng

    SELECT * FROM #Course WHERE course_date between '2015-10-07' and '2015-10-08' course_name course_date MySQL 2022-10-07 00:00:00.000 SQL SERVER 2022-10-07 11:26:10.193 PostgreSQL 2022-10-07 12:36:10.393 Oracle 2022-10-08 00:00:00.00

    Có thể thấy rằng bản ghi có giá trị ngày tháng là 2015-10-08 00:00:00.000 cũng được lấy về, và đây là điều không được mong muốn. Điều này xảy ra vì mệnh đề BETWEEN sẽ luôn lấy cả các giá trị tới trước nửa đêm của ngày hôm sau.

    Bạn có thể thấy rằng, ta đã có được 3 bản ghi như mong đợi. Chỉ cần nhớ sử dụng toán tử < ở toán hạng thứ 2, điều này sẽ đảm bảo rằng giá trị 2015-10-08 00:00:00.000 sẽ không được lấy.

    • Hàm GETDATE() sẽ trả về giá trị giờ địa phương của server nơi chứa cơ sở dữ liệu của bạn đang chạy. Vậy nếu bạn đang kết nối đến 1 remote SQL server và sử dụng SQL Server Management Studio, thời gian trả về từ phương thức này sẽ khác với thời gian địa phương trên hệ thống của bạn. Và giá trị được trả về là kiểu DATETIME
    • Hàm SYSDATETIME() cũng trả về giá trị giờ địa phương, giioonsg như GETDATE. Nhưng kiểu giá trị trả về là kiểu DATETIME2.

    All Rights Reserved

    --- Bài cũ hơn ---

  • Nên Mua Laptop Dell Hay Asus
  • Hướng Dẫn Sử Dụng Date, Time Trong Java
  • So Sánh Laptop Dell Và Laptop Hp
  • So Sánh Nên Dùng Máy Tính Laptop Dell Và Hp Cái Nào Tốt Hơn
  • So Sánh Laptop Dell Và Hp! Nên Mua Laptop Hp Hay Dell?
  • Tìm Hiểu Sự Khác Biệt Giữa Sql Và Nosql

    --- Bài mới hơn ---

  • Sử Dụng Sql Hay Nosql Cho Dự Án Của Bạn?
  • Sự Khác Nhau Giữa Bồ Và Vợ
  • Sự Khác Biệt Giữa Ampe, Vôn Và Watt Là Gì?
  • Phân Biệt Sự Khác Nhau Giữa Đơn Vị Đo Công Suất W Và Va?
  • Sự Khác Biệt Giữa Class Và Object Trong Lập Trình Hướng Đối Tượng
  • SQL chính là viết tắt của Structured Query language, là ngôn ngữ chuẩn để xử lý Cơ sở dữ liệu quan hệ. Một cơ sở dữ liệu quan hệ xác định các mối quan hệ dưới dạng các bảng.

    Lập trình SQL có thể được sử dụng hiệu quả để chèn, tìm kiếm, cập nhật, xóa các bản ghi cơ sở dữ liệu.

    Điều đó không có nghĩa là SQL không thể làm được gì ngoài việc đó. Nó có thể làm rất nhiều thứ bao gồm, nhưng không giới hạn, tối ưu hóa và duy trì cơ sở dữ liệu.

    Các cơ sở dữ liệu quan hệ như Cơ sở dữ liệu MySQL, Oracle, MS SQL Server, Sybase,… sử dụng SQL.

    NoSQL là một DMS không có cơ chế liên kết, không yêu cầu lược đồ cố định, tránh tham gia và dễ dàng mở rộng quy mô. Cơ sở dữ liệu NoSQL được sử dụng cho các kho lưu trữ dữ liệu phân tán với nhu cầu lưu trữ dữ liệu khiêm tốn. NoSQL được sử dụng cho Dữ liệu lớn và các ứng dụng web thời gian thực. Ví dụ, các công ty như Twitter, Facebook, Google thu thập terabyte dữ liệu người dùng mỗi ngày.

    RDBMS truyền thống sử dụng cú pháp SQL để lưu trữ và truy xuất dữ liệu để hiểu rõ hơn. Thay vào đó, một hệ thống cơ sở dữ liệu NoSQL bao gồm một loạt các công nghệ cơ sở dữ liệu có thể lưu trữ dữ liệu có cấu trúc, bán cấu trúc, không cấu trúc và đa hình.

    Ngôn ngữ

    Cơ sở dữ liệu SQL xác định và thao tác dữ liệu dựa trên ngôn ngữ truy vấn có cấu trúc (SQL). Nhìn từ một phía ngôn ngữ này là vô cùng mạnh mẽ. SQL là một trong những tùy chọn linh hoạt và được sử dụng rộng rãi nhất hiện có, làm cho nó trở thành lựa chọn an toàn đặc biệt cho các truy vấn phức tạp lớn. Nhưng từ phía khác nó có thể bị hạn chế. SQL yêu cầu bạn sử dụng các lược đồ được xác định trước để xác định cấu trúc dữ liệu của bạn trước khi bạn làm việc với nó. Ngoài ra tất cả dữ liệu của bạn phải theo cùng một cấu trúc. Điều này có thể yêu cầu chuẩn bị trước đáng kể, điều đó có nghĩa là một sự thay đổi trong cấu trúc sẽ vừa khó khăn vừa gây khó chịu cho toàn bộ hệ thống của bạn.

    Một cơ sở dữ liệu NoSQL có lược đồ động cho dữ liệu phi cấu trúc. Dữ liệu được lưu trữ theo nhiều cách có nghĩa là nó có thể được định hướng theo tài liệu, hướng theo cột, dựa trên biểu đồ hoặc được tổ chức dưới dạng lưu trữ Key-Value. Tính linh hoạt này có nghĩa là các tài liệu có thể được tạo mà không cần xác định cấu trúc trước. Ngoài ra mỗi tài liệu có thể có cấu trúc độc đáo của riêng mình.

    Khả năng mở rộng

    Trong hầu hết các tình huống, cơ sở dữ liệu SQL có thể mở rộng theo chiều dọc. Điều này có nghĩa là bạn có thể tăng tải trên một máy chủ bằng cách tăng những thứ như RAM, CPU hoặc SSD. Nhưng mặt khác, cơ sở dữ liệu NoSQL có thể mở rộng theo chiều ngang. Điều này có nghĩa là bạn xử lý nhiều lưu lượng hơn bằng cách lưu trữ hoặc thêm nhiều máy chủ hơn trong cơ sở dữ liệu NoSQL của bạn.

    Cấu trúc

    Cơ sở dữ liệu SQL dựa trên bảng, mặt khác, cơ sở dữ liệu NoSQL là cặp giá trị – khóa, cơ sở dữ liệu đồ thị hoặc cửa hàng cột. Điều này làm cho cơ sở dữ liệu SQL quan hệ trở thành một lựa chọn tốt hơn cho các ứng dụng yêu cầu giao dịch nhiều hàng như hệ thống kế toán hoặc cho các hệ thống cũ được xây dựng cho cấu trúc quan hệ.

    Hỗ trợ

    SQL được sự hổ trợ tốt từ các nhà cung cấp. Nhưng với NoSQL thì bạn phải tự xây dựng và học hỏi cộng đồng người sử dụng trên thế giới. Hoặc là bạn sẽ mất nhiều thời gian để có thể làm chủ được nó.

    Các SQL phổ biến là: PostgreSQL, MySQL, Oracle và Microsoft SQL Server.

    Các NoSQL phổ biến là: Redis, RavenDB Cassandra, MongoDB, BigTable, HBase, Neo4j và CouchDB

    Bài viết đã cung cấp thêm cho bạn kiến thức về SQL và NoSQL, hãy tìm hiểu thêm nhiều kiến thức bổ ích thông qua các bài viết khác.!!!

    --- Bài cũ hơn ---

  • Sự Khác Nhau Giữa Mysql Và Sql Server
  • Sự Khác Biệt Cơ Bản Sql Và Nosql
  • Những Điểm Khác Biệt Giữa Sql Và Nosql 2022
  • Sự Khác Nhau Giữa Thiền Định Của Phật Giáo Và Sự Cầu Nguyện Trong Kitô Giáo
  • Sự Khác Nhau Giữa Cầu Nâng 1 Trụ Ấn Độ Và Việt Nam
  • Sự Khác Biệt Cơ Bản Sql Và Nosql

    --- Bài mới hơn ---

  • Sự Khác Nhau Giữa Mysql Và Sql Server
  • Tìm Hiểu Sự Khác Biệt Giữa Sql Và Nosql
  • Sử Dụng Sql Hay Nosql Cho Dự Án Của Bạn?
  • Sự Khác Nhau Giữa Bồ Và Vợ
  • Sự Khác Biệt Giữa Ampe, Vôn Và Watt Là Gì?
  • 1. SQL là gì?

    SQL chính là viết tắt của Structured Query language, là ngôn ngữ chuẩn để xử lý Cơ sở dữ liệu quan hệ. Một cơ sở dữ liệu quan hệ xác định các mối quan hệ dưới dạng các bảng.

    Lập trình SQL có thể được sử dụng hiệu quả để chèn, tìm kiếm, cập nhật, xóa các bản ghi cơ sở dữ liệu.

    Điều đó không có nghĩa là SQL không thể làm được gì ngoài việc đó. Nó có thể làm rất nhiều thứ bao gồm, nhưng không giới hạn, tối ưu hóa và duy trì cơ sở dữ liệu.

    Các cơ sở dữ liệu quan hệ như Cơ sở dữ liệu MySQL, Oracle, MS SQL Server, Sybase,… sử dụng SQL.

    2. NoSQL là gì?

    NoSQL là một DMS không quan hệ, không yêu cầu một lược đồ cố định, tránh các phép nối, và dễ dàng mở rộng. Cơ sở dữ liệu NoSQL được sử dụng cho các kho dữ liệu phân tán với nhu cầu lưu trữ dữ liệu khổng lồ. NoSQL được sử dụng cho dữ liệu lớn và các ứng dụng web thời gian thực. Ví dụ như các công ty như Twitter, Facebook, Google thu thập hàng terabyte dữ liệu người dùng mỗi ngày.

    Cơ sở dữ liệu NoSQL là viết tắt của “Không chỉ SQL” hoặc “Không phải SQL”. Mặc dù một thuật ngữ tốt hơn sẽ NoREL NoSQL bắt gặp. Carl Strozz giới thiệu khái niệm NoSQL vào năm 1998.

    RDBMS truyền thống sử dụng cú pháp SQL để lưu trữ và truy xuất dữ liệu để có thêm thông tin chi tiết. Thay vào đó, một hệ thống cơ sở dữ liệu NoSQL bao gồm một loạt các công nghệ cơ sở dữ liệu có thể lưu trữ dữ liệu có cấu trúc, bán cấu trúc, không có cấu trúc và đa hình.

    3. Điểm khác biệt chính

    Ngôn ngữ

    Cơ sở dữ liệu SQL xác định và thao tác dữ liệu dựa trên ngôn ngữ truy vấn có cấu trúc (SQL). Nhìn từ một phía ngôn ngữ này là vô cùng mạnh mẽ. SQL là một trong những tùy chọn linh hoạt và được sử dụng rộng rãi nhất hiện có, làm cho nó trở thành lựa chọn an toàn đặc biệt cho các truy vấn phức tạp lớn. Nhưng từ phía khác nó có thể bị hạn chế. SQL yêu cầu bạn sử dụng các lược đồ được xác định trước để xác định cấu trúc dữ liệu của bạn trước khi bạn làm việc với nó. Ngoài ra tất cả dữ liệu của bạn phải theo cùng một cấu trúc. Điều này có thể yêu cầu chuẩn bị trước đáng kể, điều đó có nghĩa là một sự thay đổi trong cấu trúc sẽ vừa khó khăn vừa gây khó chịu cho toàn bộ hệ thống của bạn.

    Một cơ sở dữ liệu NoSQL có lược đồ động cho dữ liệu phi cấu trúc. Dữ liệu được lưu trữ theo nhiều cách có nghĩa là nó có thể được định hướng theo tài liệu, hướng theo cột, dựa trên biểu đồ hoặc được tổ chức dưới dạng lưu trữ Key-Value. Tính linh hoạt này có nghĩa là các tài liệu có thể được tạo mà không cần xác định cấu trúc trước. Ngoài ra mỗi tài liệu có thể có cấu trúc độc đáo của riêng mình.

    Khả năng mở rộng

    Trong hầu hết các tình huống, cơ sở dữ liệu SQL có thể mở rộng theo chiều dọc. Điều này có nghĩa là bạn có thể tăng tải trên một máy chủ bằng cách tăng những thứ như RAM, CPU hoặc SSD. Nhưng mặt khác, cơ sở dữ liệu NoSQL có thể mở rộng theo chiều ngang. Điều này có nghĩa là bạn xử lý nhiều lưu lượng hơn bằng cách lưu trữ hoặc thêm nhiều máy chủ hơn trong cơ sở dữ liệu NoSQL của bạn.

    Cấu trúc

    Cơ sở dữ liệu SQL dựa trên bảng, mặt khác, cơ sở dữ liệu NoSQL là cặp giá trị – khóa, cơ sở dữ liệu đồ thị hoặc cửa hàng cột. Điều này làm cho cơ sở dữ liệu SQL quan hệ trở thành một lựa chọn tốt hơn cho các ứng dụng yêu cầu giao dịch nhiều hàng như hệ thống kế toán hoặc cho các hệ thống cũ được xây dựng cho cấu trúc quan hệ.

    Hỗ trợ

    SQL được sự hổ trợ tốt từ các nhà cung cấp. Nhưng với NoSQL thì bạn phải tự xây dựng và học hỏi cộng đồng người sử dụng trên thế giới. Hoặc là bạn sẽ mất nhiều thời gian để có thể làm chủ được nó.

    Các SQL phổ biến là: PostgreSQL, MySQL, Oracle và Microsoft SQL Server.

    Các NoSQL phổ biến là: Redis, RavenDB Cassandra, MongoDB, BigTable, HBase, Neo4j và CouchDB

    4. Khi nào sử dụng SQL?

    • SQL là ngôn ngữ đơn giản nhất được sử dụng để giao tiếp với RDBMS
    • Tạo trang tổng quan tùy chỉnh
    • Nó cho phép bạn lưu trữ và lấy dữ liệu từ cơ sở dữ liệu một cách nhanh chóng
    • Được ưu tiên khi bạn muốn sử dụng các phép nối và thực hiện các truy vấn phức tạp

    5. Khi nào sử dụng NoSQL?

    • Khi không cần hỗ trợ ACID
    • Khi mô hình RDBMS truyền thống không đủ
    • Dữ liệu cần lược đồ linh hoạt
    • Các ràng buộc và logic xác thực không bắt buộc phải được thực hiện trong cơ sở dữ liệu
    • Ghi nhật ký dữ liệu từ các nguồn được phân phối
    • Nó nên được sử dụng để lưu trữ dữ liệu tạm thời như giỏ mua hàng, danh sách mong muốn và dữ liệu phiên

    6. Tổng kết

    NoSQL DB (mongo) Vs RDBMS DB (mysql) Stackoverflow Questions

    • Ngôn ngữ truy vấn có cấu trúc (SQL) được phát âm là “S-Q-L” hoặc là “See-Quel” là ngôn ngữ chuẩn
    • NoSQL là một DMS không quan hệ, không yêu cầu một lược đồ cố định, tránh tham gia và dễ dàng mở rộng
    • Cơ sở dữ liệu SQL chủ yếu được gọi là RDBMS hoặc Cơ sở dữ liệu quan hệ
    • Cơ sở dữ liệu SQL là cơ sở dữ liệu dựa trên bảng
    • Cơ sở dữ liệu NoSQL có thể dựa trên tài liệu, cặp khóa-giá trị, cơ sở dữ liệu biểu đồ
    • SQL nên được sử dụng để giao tiếp với RDBMS
    • NOSQL nên được sử dụng khi mô hình RDBMS truyền thống không đủ

    Như vậy, thông qua bài viết này, mình đã giới thiệu đến các bạn sự khác nhau cơ bản giữa SQL và NoSQL. Đồng thời là hoàn cảnh sử dụng chúng sao cho phù hợp, hiệu quả nhất. Cảm ơn các bạn đã đọc!

    --- Bài cũ hơn ---

  • Những Điểm Khác Biệt Giữa Sql Và Nosql 2022
  • Sự Khác Nhau Giữa Thiền Định Của Phật Giáo Và Sự Cầu Nguyện Trong Kitô Giáo
  • Sự Khác Nhau Giữa Cầu Nâng 1 Trụ Ấn Độ Và Việt Nam
  • Sự Khác Nhau Giữa Run Vô Căn Và Run Do Parkinson
  • Sự Khác Biệt Giữa Bjt Và Fet Là Gì?
  • Web hay
  • Links hay
  • Push
  • Chủ đề top 10
  • Chủ đề top 20
  • Chủ đề top 30
  • Chủ đề top 40
  • Chủ đề top 50
  • Chủ đề top 60
  • Chủ đề top 70
  • Chủ đề top 80
  • Chủ đề top 90
  • Chủ đề top 100
  • Bài viết top 10
  • Bài viết top 20
  • Bài viết top 30
  • Bài viết top 40
  • Bài viết top 50
  • Bài viết top 60
  • Bài viết top 70
  • Bài viết top 80
  • Bài viết top 90
  • Bài viết top 100