Mở đầu

SQL sever và dữ liệu quan hệ (RDBMS) đã được biết đến hơn 20 năm qua. Tuy nhiên với nhu cầu cần thiết trọng việc xử lý dữ liệu cần tốc độ cao hơn, và khối lượng ngày càng lớn cùng với các loại dữ liệu tăng lên đã làm thay đổi bản chất của việc lưu trữ dự liệu trong việc lập trình ứng dụng. Để đáp ứng nhu cầu này, kiểu dữ liệu NoSQL cho phép lưu trữ không cần cấu trúc, không đồng nhất quy mô dữ liệu đã trở nên phổ biến. Phần lớn với các lập trình viên, cơ sở dự liệu quan hệ là một khái niệm tất yếu hay đó là sự lựa chọn tất yếu bởi vì cấu trúc bảng dễ hiểu và quen thuộc, nhưng có nhiều lý do mà chúng ta phải bỏ qua việc lựa chọn cơ sở dữ liệu quan hệ.

NoSQL là một loại hình cơ sở dữ liệu riêng biệt khác từ SQL Databases, NoSQL thường được sử dụng để chỉ đến các hệ thống quản lý dữ liệu được gọi là không SQL-“Not SQL”, hoặc là cách tiếp cận quản lý dữ liệu mà nó bao gồm không chỉ là SQL “Not only SQL”. Có một số công nghệ trong các loại NoSQL, bao gồm cả cơ sở dữ liệu tài liệu, key lưu trữ, cột lưu trữ quan hệ, biểu đồ dữ liệu, chúng phổ biến trong các ứng dụng game, ứng dụng xã hội và các ứng dụng IOTMục đích của bài viết này là giúp bạn hiểu về sự khác nhau giữa NoSQL và SQL, và cung cấp đến bạn về dịch vụ NoSQL và SQL từ Microsoft.

Khi nào sử dụng NoSQL

Hãy tưởng tượng bạn đang xây dựng trang mạng xã hội mới, Người dùng có thể tạo bài post và thêm hình ảnh, video và âm nhạc vào cho chúng. Người dùng khác có thể bình luận bài post và đánh giá điểm hoặc like bài post. Dưới mỗi bài viết người dùng có thể chia sẻ và tương tác với chúng. Vậy chúng ta sẽ lưu trữ dữ liệu này như thế nào? Nếu bạn đang nghĩ đến SQL thì chúng ta sẽ vẽ nó ra như thế này:

Ok, cấu trúc tốt, nhưng bây giờ thử nghỉ về cấu trúc của bài viết và làm sao hiểu thị nó lên. Nếu bạn muốn hiển thị bài viết và các hình ảnh, video, âm thanh, các bình luận, điểm đánh giá liên quan đến nó, thông tin người dùng trên trang web của bạn, bạn phải thực hiện câu truy vấn dữ liệu với tám bảng ghi join với nhau chỉ để lấy nội dung “content”. Bây giờ hãy tưởng tượng một luồng bài viết tự động load và hiện lên màn hình và bạn dễ dàng dự đoán rằng nó đang yêu cầu hàng ngàn câu truy vấn và nhiều “joins” mới có thể thực hiện được chức năng này. Bây giờ bạn nên sử dụng giải pháp quan hệ như SQL Sever để lưu trữ và truy vấn nó bằng việc sử dụng joins, như SQL hỗ trợ hiểu dữ liệu động dạng JSON- nhưng có hướng khác, NoSQL là hướng tiếp cận đơn giản cho kịch bản cụ thể này. Bằng việc sử dụng một tài liệu duy nhất và lưu trữ nó trong DoccumentDB, dịch vụ cơ sở dữ liệu Azure NoSQL, bạn có thể gia tăng hiệu suất và lấy toàn bộ dữ liệu bài viết với 1 câu truy vấn và không cần join thêm bất cứ bảng nào. Nó đơn giản hơn và rõ ràng hơn và hiệu suất hơn nhiều.

{
    "id":"ew12-res2-234e-544f",
    "title":"post title",
    "date":"2016-01-01",
    "body":"this is an awesome post stored on NoSQL",
    "createdBy":User,
    "images":["http://myfirstimage.png","http://mysecondimage.png"],
    "videos":[
        {"url":"http://myfirstvideo.mp4", "title":"The first video"},
        {"url":"http://mysecondvideo.mp4", "title":"The second video"}
    ],
    "audios":[
        {"url":"http://myfirstaudio.mp3", "title":"The first audio"},
        {"url":"http://mysecondaudio.mp3", "title":"The second audio"}
    ]
}

Ngoài ra , dữ liệu này có thể được chia ra bởi post-id cho phép dữ liệu đưa ra môt cách tự nhiên và tận dụng các đặc điểm của mô hình NoSQL. Ngoài ra hệ thống NoSQL còn cho phép các nhà phát triển nới lỏng tính nhất quán và cung cấp các ứng dụng phục vụ cao với độ trễ thấp. Cuối cùng, phương án này không cần yêu cầu người lập trình phải định nghĩa, quản lý và duy trì sơ đồ ở tầng dữ liệu cho phép lặp lại nhanh chóng.

Trang web tham gia xã hội này chỉ là một trong một kịch bản trong đó một cơ sở dữ liệu NoSQL là mô hình dữ liệu cho công việc. Nếu bạn quan tâm đến đọc thêm về kịch bản này và làm thế nào để mô hình dữ liệu của bạn cho DocumentDB trong các ứng dụng truyền thông xã hội, bạn có thể xem thêm tại Going social with DocumentDB

So sánh giữa NoSQL và SQL

Bảng bên dưới là sự so sánh giữa NoSQL và SQL